Re: [Plugin Officiel] Délestage
Publié : 08 mars 2019, 21:17
Je confirme, tout roule aussi après bientôt 10 jours d'utilisation.
Je confirme, tout roule aussi après bientôt 10 jours d'utilisation.
Code : Tout sélectionner
// https://www.jeedom.com/forum/viewtopic.php?t=32757
// http://rulistaff.free.fr/sc/doc/?Exemples
$sc->setLog("--- DELESTAGE : Start");
$sc->getCmd( "#[Salon][Thermostat Entrée et Salon][unlock]#", $_log = false, $_logStyle = null );
$sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][unlock]#", $_log = false, $_logStyle = null );
// VARS
$HeuresCreuses = $sc->getVar("HeuresCreuses", "", $getJeedomVarOnly = true, true, null );
$VARCompteurPuissanceV2 = $sc->getVar("VARCompteurPuissanceV2", "", $getJeedomVarOnly = true, true, null );
$equilibrage = 1;
$sc->setLog("HeuresCreuses: $HeuresCreuses");
$sc->setLog("equilibrage: $equilibrage");
$sc->setLog("VARCompteurPuissanceV2: $VARCompteurPuissanceV2");
If ($HeuresCreuses == 1){
$TemperatureSalon = $sc->getCmd( "#[Salon][Thermostat Entrée et Salon][Température]#", $_log = false, $_logStyle = null );
$sc->setLog("TemperatureSalon: $TemperatureSalon");
$TemperatureCuisine = $sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][Température]#", $_log = false, $_logStyle = null );
$sc->setLog("TemperatureCuisine: $TemperatureCuisine");
$ConsigneSalon = $sc->getCmd( "#[Salon][Thermostat Entrée et Salon][Consigne]#", $_log = false, $_logStyle = null );
$sc->setLog("ConsigneSalon: $ConsigneSalon");
$ConsigneCuisine = $sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][Consigne]#", $_log = false, $_logStyle = null );
$sc->setLog("ConsigneCuisine: $ConsigneCuisine");
$EcartConsigneSalon = $TemperatureSalon - $ConsigneSalon;
$EcartConsigneCuisine = $TemperatureCuisine - $ConsigneCuisine;
If (($EcartConsigneSalon < 0) && ($EcartConsigneCuisine < 0)){
$sc->setLog("Températures Salon et Cuisine inférieures à la consigne.");
EnvoiMessage("Températures Salon et Cuisine inférieures à la consigne.");
If ($equilibrage == 1){
$sc->setLog("Action: Equilibrage des températures pendant une heure");
EnvoiMessage("Action: Equilibrage des températures pendant une heure");
SalonON($sc);
sleep(900);
CuisineOn($sc);
sleep(900);
SalonON($sc);
sleep(900);
CuisineOn($sc);
sleep(900);
$equilibrage = 0;
}
}
$TemperatureSalon = $sc->getCmd( "#[Salon][Thermostat Entrée et Salon][Température]#", $_log = false, $_logStyle = null );
$sc->setLog("TemperatureSalon: $TemperatureSalon");
$TemperatureCuisine = $sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][Température]#", $_log = false, $_logStyle = null );
$sc->setLog("TemperatureCuisine: $TemperatureCuisine");
$ConsigneSalon = $sc->getCmd( "#[Salon][Thermostat Entrée et Salon][Consigne]#", $_log = false, $_logStyle = null );
$sc->setLog("ConsigneSalon: $ConsigneSalon");
$ConsigneCuisine = $sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][Consigne]#", $_log = false, $_logStyle = null );
$sc->setLog("ConsigneCuisine: $ConsigneCuisine");
$EcartConsigneSalon = $TemperatureSalon - $ConsigneSalon;
$EcartConsigneCuisine = $TemperatureCuisine - $ConsigneCuisine;
While ($HeuresCreuses == 1){
If ($EcartConsigneSalon > 0 && $EcartConsigneCuisine > 0){
$sc->setLog("Les deux écarts de consigne (EC) sont positive pour les 2 thermostats");
$sc->setLog("Action: Arret des 2 thermostats");
EnvoiMessage("Les deux écarts de consigne (EC) sont positive pour les 2 thermostats");
EnvoiMessage("Action: Arret des 2 thermostats");
$sc->setCmd("#[Salon][Thermostat Entrée et Salon][Off]#");
$sc->setCmd("#[Cuisine][Thermostat SaM et Cuisine][Off]#");
$sc->setVar("EquipementDélesté", $value = "Aucun", $JeedomVar = true, $_log = true, $_logStyle = null );
$sc->setLog("EquipementDélesté: Aucun");
}Else{
If(($EcartConsigneSalon > 0) && ($EcartConsigneCuisine < 0)){
$sc->setLog("Températures Salon supérieures et température Cuisine inférieure à la consigne. Action: Arrêt du thermostat Salon et activation Cuisine.");
EnvoiMessage("Températures Salon supérieures et température Cuisine inférieure à la consigne. Action: Arrêt du thermostat Salon et activation Cuisine.");
CuisineOn($sc);
}Else{
If (($EcartConsigneSalon < 0) && ($EcartConsigneCuisine > 0)){
$sc->setLog("Températures Salon inférieure et température Cuisine supérieures à la consigne. Action: Arrêt du thermostat Cuisine et activation Salon.");
EnvoiMessage("Températures Salon inférieure et température Cuisine supérieures à la consigne. Action: Arrêt du thermostat Cuisine et activation Salon.");
SalonON($sc);
}Else{
If (($EcartConsigneSalon < 0) && ($EcartConsigneCuisine < 0)){
$sc->setLog("Températures Salon et Cuisine inférieures à la consigne.");
$sc->setLog("Action: Arrêt d'un thermostat. Calcul de la priorisation.");
EnvoiMessage("Températures Salon et Cuisine inférieures à la consigne.");
EnvoiMessage("Action: Arrêt d'un thermostat. Calcul de la priorisation.");
If (($EcartConsigneSalon * -1) > ($EcartConsigneCuisine * -1)){
SalonON($sc);
}Else{
CuisineOn($sc);
}
}Else{
$sc->setLog("EC cuisine = EC salon");
$sc->setLog("Action: Arret thermostat cuisine");
EnvoiMessage("EC cuisine = EC salon");
EnvoiMessage("Action: Arret thermostat cuisine");
SalonON($sc);
}
}
}
}
$sc->setLog("Loop: Attente de 15min...");
EnvoiMessage("Loop: Attente de 15min...");
sleep(900);
$TemperatureSalon = $sc->getCmd( "#[Salon][Thermostat Entrée et Salon][Température]#", $_log = false, $_logStyle = null );
$sc->setLog("TemperatureSalon: $TemperatureSalon");
$TemperatureCuisine = $sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][Température]#", $_log = false, $_logStyle = null );
$sc->setLog("TemperatureCuisine: $TemperatureCuisine");
$ConsigneSalon = $sc->getCmd( "#[Salon][Thermostat Entrée et Salon][Consigne]#", $_log = false, $_logStyle = null );
$sc->setLog("ConsigneSalon: $ConsigneSalon");
$ConsigneCuisine = $sc->getCmd( "#[Cuisine][Thermostat SaM et Cuisine][Consigne]#", $_log = false, $_logStyle = null );
$sc->setLog("ConsigneCuisine: $ConsigneCuisine");
$EcartConsigneSalon = $TemperatureSalon - $ConsigneSalon;
$EcartConsigneCuisine = $TemperatureCuisine - $ConsigneCuisine;
$sc->setLog("EcartConsigneCuisine: $EcartConsigneCuisine");
$sc->setLog("EcartConsigneSalon: $EcartConsigneSalon");
$HeuresCreuses = $sc->getVar("HeuresCreuses", "", $getJeedomVarOnly = true, true, null );
$sc->setLog("HeuresCreuses: $HeuresCreuses");
}
}
$sc->setLog("--- DELESTAGE : End");
$sc->setLog("Action: Restauration des 2 thermostats.");
EnvoiMessage("Action: Restauration des 2 thermostats.");
$sc->scenario(30, "start", $tags = '', $_log = true, $_logStyle = null );
$sc->scenario(28, "start", $tags = '', $_log = true, $_logStyle = null );
/*
* Functions
*
*/
Function CuisineOn($sc){
// -- Bloc Cuisine ON et Salon OFF
$sc->setLog("EC cuisine plus grand que EC salon");
$sc->setLog("Action: Arret thermostat salon");
$sc->setCmd("#[Salon][Thermostat Entrée et Salon][Off]#");
sleep(10);
$sc->setLog("Action: Restauration mode du thermostat cuisine");
$sc->scenario(28, "start", $tags = '', $_log = true, $_logStyle = null );
$sc->setVar( "EquipementDélesté", $value = "Salon", $JeedomVar = true, $_log = true, $_logStyle = null );
$sc->setLog("EquipementDélesté: Salon");
// Bloc Cuisine ON et Salon OFF
}
Function SalonON($sc){
// -- Bloc Salon ON et Cuisine OFF
$sc->setLog("EC salon plus grand que EC cuisine");
$sc->setLog("Action: Arret thermostat cuisine");
$sc->setCmd("#[Cuisine][Thermostat SaM et Cuisine][Off]#");
sleep(10);
$sc->setLog("Action: Restauration mode du thermostat salon");
$sc->scenario(30, "start", $tags = '', $_log = true, $_logStyle = null );
$sc->setVar( "EquipementDélesté", $value = "Cuisine", $JeedomVar = true, $_log = true, $_logStyle = null );
$sc->setLog("EquipementDélesté: Cuisine");
// Bloc Salon ON et Cuisine OFF
}
Function ValueRequest($obj){
$cmd = cmd::byString($obj);
return $cmd->execCmd();
}
Function EnvoiMessage($String){
$cmd=cmd::byString('#[Divers][Slack][Envoi message]#');
$cmd->execCmd($options=array('message'=> $String), $cache=0);
}
Code : Tout sélectionner
Attention ! Délestage non suffisant...
Puissance instantannée : 5370 W
Equipements délestés :
Thermostat séjour : Chauffage
Etat pilote séjour : 255