diff --git a/hooks/scripts/etage_temperature_int_ext.php b/hooks/scripts/etage_temperature_int_ext.php new file mode 100644 index 0000000..cea8a59 --- /dev/null +++ b/hooks/scripts/etage_temperature_int_ext.php @@ -0,0 +1,106 @@ + enabled) + public $tempSup = 25; + public $tempInf = 20; + + + protected $devicelist = array( + METEO=> "tempc", + ); + + protected $portesList = array( + ENTREE_PORTE => "contact", + //GARAGE_PORTE => "contact", + RDC_CHAMBRE_BAIE => "contact", + RDC_SALON_BAIE => "contact" + ); + + function installHooks(&$indexDevices) + { + return $this->installHooksFunction($indexDevices); + } + + // callback fonction. Is called with these 4 parameters + public function callBack(&$device, $property, $value) + { + global $indexDevices, $hooks; + static $time; + $portes = array(); + $status = -1; + $msg = ""; + if ($this->active) + { + logger(DEBUG, _("etage_temperature_int_ext hook"), null ,$device); + + if (empty($time)) $time = now(); + //echo "Time is " . var_dump($time) . EOL; + //echo "minutes since time :" . now()->format("U") - $time->format("U"); + if ((now()->format("U") - $time->format("U")) > 300) + { + + $indoorTemp = $device->properties["indoortempc"]["value"]; + + + if ( $value > $indoorTemp) + { + if( ($indoorTemp <= $this->tempSup) and empty($portes)) + { + $status = 1; + //logger(ALERT, _("Open doors to climate"), null ,$device); + }elseif($indoorTemp >= $this -> tempSup and ! empty($portes)) + { + $status = 0; + //logger(ALERT, _("Close doors to climate"), null, $device); + } + }elseif ( $value < $indoorTemp ) + { + if (($indoorTemp >= $this->tempSup) and empty($portes) ) + { + $status = 1; + //logger(ALERT, _("Open doors to climate"), null ,$device); + }elseif ($indoorTemp <= $this->tempSup) + { + $status = 0; + //logger(ALERT, _("Close doors to climate"), null, $device); + } + logger (INFO, sprintf(_("%s: notification received from MQTT from %s => parameter: %s value: %s"), $this->hookName, $device->friendlyName, $property, bool2string($value)), __FILE__ . ":" . __LINE__, $device); + } + print_r($portes); + if ($status == 1) + { + $portes = $hooks["test_portes"]->testPortes($this->portesList, false, false); + if (empty($portes)) + { + $time = now(); + foreach($portes as $porte) + { + $msg .= $porte . "\n"; + } + logger(ALERT, _("Open doors to climate") . $msg, null, $device); + } + }else + { + $portes = $hooks["test_portes"]->testPortes($this->portesList, false, true); + if (!empty($portes)) + { + $time = now(); + foreach($portes as $porte) + { + $msg .= $porte . "\n"; + } + logger(ALERT, _("Close doors to climate\n") . $msg, null, $device); + } + } + } + }else + { + logger(DEBUG, _("etage_temperature_int_ext hook is inactive"), null ,$device); + } + } +} +$hooks["etage_temperature_int_ext"] = new etage_temperature_int_ext(); +?>