72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
// script to prevent when exterior temperature become inferior or superior to interior one
 | 
						|
class rdc_temperature_int_ext extends hook
 | 
						|
{
 | 
						|
	public $hookName = "rdc_wc_eclairage";
 | 
						|
	public $active = true;			//enable/disable hook (true => enabled)
 | 
						|
	public $tempSup = 25;
 | 
						|
	public $tempInf = 20;
 | 
						|
 | 
						|
 | 
						|
	protected $devicelist = array(
 | 
						|
				METEO=> "tempc",
 | 
						|
				);
 | 
						|
 | 
						|
	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();
 | 
						|
		$state = -1;
 | 
						|
		$msg = "";
 | 
						|
 | 
						|
		$indoorTemp = $device->properties["indoortempc"]["value"];
 | 
						|
		$portes = $hooks["alerte_intrusion"]->testPortes(false);
 | 
						|
		foreach($portes as $value)
 | 
						|
		{
 | 
						|
			$msg .= $value . "\n";
 | 
						|
		}
 | 
						|
 | 
						|
		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);
 | 
						|
		}
 | 
						|
		if ($status == 1)
 | 
						|
		{
 | 
						|
			//if ($time - DateTime();
 | 
						|
			//logger(ALERT, _("Open doors to climate"),  null ,$device);
 | 
						|
		}else
 | 
						|
		{
 | 
						|
			//logger(ALERT, _("Close doors to climate\n") . $msg, null, $device);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
$hooks["rdc_temperature_int_ext"] = new rdc_temperature_int_ext();
 | 
						|
?>
 |