INT1_received
|
поступил сигнал о сработке прерывания на ESP
$module = $params['module']; //имя модуля, на котором сработало прерывание
say($module);
$detectors = getObjectsByClass("MoveDetectors");
foreach($detectors as $obj) {
$detector_module =gg($obj['TITLE'].".module");
if ($module == $detector_module) {
callMethod($obj['TITLE'].".signal");
}
}
/*
$doors = getObjectsByClass("Doors");
foreach($doors as $obj) {
$door_module =gg($obj['TITLE'].".module");
if ($module == $door_module) {
callMethod($obj['TITLE'].".signal");
}
}
*/
|
INT2_received
|
поступил сигнал о сработке прерывания на ESP
$module = $params['module']; //имя модуля, на котором сработало прерывание
say($module);
$doors = getObjectsByClass("Doors");
foreach($doors as $obj) {
$door_module =gg($obj['TITLE'].".module");
if ($module == $door_module) {
callMethod($obj['TITLE'].".signal");
}
}
|
LCDout
|
вывод на все LCD
say3('run LCDout');
$lcd=getObjectsByClass("LCD2004");
foreach($lcd as $obj)
{
callMethod($obj['TITLE'].".allLines");
}
say3('end LCDout');
|
restartAllLCD
|
say2('run restartAllLCD');
$objects=getObjectsByClass("LCD2004");
foreach($objects as $obj) {
callMethod($obj['TITLE'].".restart");
}
|
sendemail
|
$zone=getObjectsByClass("tempSensors");
$climat = "<b>Climat</b><br>";
foreach($zone as $obj) {
if (gg($obj['TITLE'].".calc_statistics_allowed")) {
// $climat .= $obj['TITLE'].": ";
$climat .= "<b>".gg($obj['TITLE'].".title").":</b> ";
$climat .= "avg ".gg($obj['TITLE'].".historyTavg")."; ";
$climat .= "min ".gg($obj['TITLE'].".historyTmin")."; ";
$climat .= "max ".gg($obj['TITLE'].".historyTmax")."<br>";
}
}
$content = $climat."<br>";
$content .= "<b>Signalizacyja</b><br>";
$content .= gg("houseMain.alarm_log_html");
$content .= "<br><br><b>ESP Life</b><br>";
$content .= gg("houseMain.ESPlife");
SendMail_html ("ergerge","zbor@tut.by","MajorDoMo",$content);
|
send_telegram
|
$text = $params["text"];
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToAll($text);
|
send_telegram_alarm
|
сообщение, связанное с безопасностью
if (gg("houseMain.paranoia_mode")) {
runScript('send_telegram', array("text" => $params["text"] ));
}
|
setAllSensors
|
Установка значений всех объектов сенсоров
say2('run setAllSensors');
$objects=getObjectsByClass("tempSensors");
foreach($objects as $obj) {
callMethod($obj['TITLE'].".setValue");
callMethod($obj['TITLE'].".statisticsTemp");
}
|
setESPlist
|
генерация списка WiFi модулей
//say("run setESPlist");
$objects=getObjectsByClass("ESP8266");
$list = '';
$list_arr = array();
foreach($objects as $obj) {
$obj_title = $obj['TITLE'];
if (gg($obj_title.".alive")=="true") {
$list_arr[$obj_title] = gg($obj_title.".wanip");
} else {
$list_arr[$obj_title] = '';
}
} ;
ksort ($list_arr);
foreach ($list_arr as $name=>$ip) {
if ($ip) {
$a = "<a href=http://".$ip.">".$name."</a>";
} else {
$a = $name ;
}
if ($list) { //чтобы не начиналось с <br>
$list = $list."<br>".$a;
} else {
$list = $a;
};
};
sg("houseMain.ESP_list", $list);
//say($list);
|
testESPalive
|
поиск модулей ESP, которые перестали выходить на связь
//say("run testESPalive");
$objects=getObjectsByClass("ESP8266");
foreach($objects as $obj) {
callMethod($obj['TITLE'].".testAlive");
}
|
test_absent
|
проверка наличия режима отсутствия
//выключение режима отсутствия при достижении назначенного времени
if (gg("houseMain.absence_on")) {
// say("houseMain.absence_on");
$timestamp = strtotime(gg("houseMain.absence_date")." ".gg("houseMain.absence_time"));
if (time() >= $timestamp) {
// say("houseMain.absence_off");
sg("houseMain.absence_on", 0);
}
}
|
test_work_time
|
ежеминутная запись текущего времени для отслеживания перерывов в работе
$prev_time = gg ("houseMain.work_last_stamp");
if (strlen($prev_time) < 19) { //формат даты неправильный
}
$diff = strtotime ("now") - strtotime ($prev_time) ;
//echo sprintf('%02d:%02d:%02d', $diff / 3600, ($diff % 3600) / 60, $diff % 60);
$diff = (int)($diff/60) ; //целая часть = разница в минутах
//say($diff);
setGlobal("houseMain.work_last_stamp", date("d.m.Y H:i:s",time()));
if ($diff > 1) { //перерыв в работе больше 1 минуты
runScript("add_to_log", array("log"=>"houseMain.work_off_log",
"log_max"=>getGlobal("houseMain.work_off_log_max"),
"line"=>$prev_time."...".date("H:i:s",time())." (".$diff." хвiлiн)",
"delimiter"=>"<br>"));
}
|
time_broadcast
|
рассылка всем модулям текущего времени. Время сохраняется в valdes[1]
$m=date('i',time());
if ($m%5 == 0) {//каждые 5 минут
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj)
{
$obj_title = $obj['TITLE'];
if (getGlobal($obj_title.".alive")=="true") {
$ip = getGlobal($obj_title.".wanip");
// $url = 'http://'.$ip."/valdes?int=1&set=".time() ; //UNIX
$url = 'http://'.$ip."/valdes?int=1&set=".date('ymdHi') ;
getURL($url,0);
// say($url);
$url = 'http://'.$ip."/valdes?int=2&set=".getGlobal("OutdoorESP.adc") ;
getURL($url,0);
}
}
}
|
espdata
|
$idesp=$params['idesp'];
$host=$params['hostname'];
if (!$host) return;
say1("ESP.Host=".$host);
//addClass('ESP8266'); //Создаем класс ESP8266
addClassObject('ESP8266',$host); //Создаёт класс заданного имени дочерним от ParentClass
sg ('ESP8266.'.$host.".idesp",$idesp);
sg ('ESP8266.'.$host.".hostname",$host);
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj)
{
// say($obj['TITLE']);
// say(gg($obj['TITLE'].".idesp"));
if (gg($obj['TITLE'].".hostname") ==$host) //
{
// say($obj['TITLE']);
if (is_array($params)) {
sg ($obj['TITLE'].".LastUpdate",date("d-m-Y H:i:s",time()));
//если модуль был неактивный, то отмечаем активность
if (gg($obj['TITLE'].".alive")=='false') callMethod($obj['TITLE'].".testAlive");
foreach($params as $k=>$v) {
if ($k!="script") {
sg($obj['TITLE'].".".$k,$v);
}
}
}
$ibutton = $params['ibutton']; //если произошло считывание, то ЕСП передает этот параметр. В обычной периодической посылке этого параметра нет
if ($ibutton != '') {
say($host.".ibutton = ".$ibutton);
cm("keyAccess.iButton_read", array("iButton"=>$ibutton, "iButtonst"=>$params["ibuttonst"]));
}
$wiegandID = $params['wiegand'];
if ($wiegandID != '')
say($host.".Wiegand = ".$wiegandID);
//обработка прерываний
if ($params['gpioint1']==1) {
// getURL('http://192.168.1.218/gpio?st=2&pin=12', 0);
runScript("INT1_received", array("module"=>$host));
say('INT1');
}
if ($params['gpioint2']==1) {
runScript("INT2_received", array("module"=>$host));
say('INT2');
}
}
}
|
RCSwitch
|
$id=$params['rcswitch'];
if ($id=='12345') {
//sensor 1
}
|
heatCalc
|
главное вычисление отопления
say1('RUN HeatCalc');
//есть ли запрос на отопление зон
$heatList = array();
sg("houseMain.heatRequest", false);
sg("houseMain.requestHeatZones", '');
//say1('RUN HeatCalc1');
$objects=getObjectsByClass("ZoneHeat");
foreach($objects as $obj) {
say2('find ZoneHeatObject='.($obj['TITLE']));
callMethod($obj['TITLE'].".setTemperature");
callMethod($obj['TITLE'].".calcHeatRequest");
//если есть хоть один запрос тепла, то устанавливается глобальный запрос тепла
$heatRequest = (gg($obj['TITLE'].".heatRequest"));
if ((($heatRequest==2) or ($heatRequest==3))&
(gg($obj['TITLE'].".active"))&
(!gg($obj['TITLE'].".manual"))) {
sg("houseMain.heatRequest", true);
$heatList[] = gg($obj['TITLE'].".title");
}
// say2('find ZoneHeatObject='.gg($obj['TITLE'].'.t'));
//setGlobal($obj['TITLE'].".property_name",1);
}
//say1('RUN HeatCalc2');
$heatListStr = implode(",", $heatList);
sg("houseMain.requestHeatZones", $heatListStr);
say2('HOUSE HeatRequest='.gg("houseMain.heatRequest"));
//вкл-выкл котла
sg("boilerAriston.state", gg("houseMain.heatRequest"));
callMethod('boilerAriston.switch');
//вычисление смесителя ТП
//say('callMethod mixNodeControl');
callMethod('mixNode.mixNodeControl');
//say1('END HeatCalc');
|
heatCycle
|
цикл, вызываемый раз в минуту
say2('run heatCycle');
runScript('setAllSensors'); //Установка значений всех объектов сенсоров
runScript('setAllZone');//Копирование температур с датчиков на объекты зон
runScript('heatCalc');// главное вычисление отопления
runScript('outAllValves');//
runScript('LCDout');//вывод на все LCD
|
outAllValves
|
Вывод на все клапаны
say2('run outAllValves');
$zone=getObjectsByClass("ZoneHeat");
foreach($zone as $obj)
{
say2('valve '.$obj['TITLE']);
callMethod ($obj['TITLE'].".valveControl");
}
say2('end outAllValves');
|
setAllZone
|
Копирование температуры, влажности и CO2 с датчиков на объекты зон и вычисление запроса тепла для каждой зоны
say2('run setAllZone');
$zone=getObjectsByClass("ZoneHeat");
foreach($zone as $obj)
{
say2($obj['TITLE']);
// $tSensor =gg($obj['TITLE'].".tSensor");
$tSensor =gg($obj['TITLE'].".tSensor");
$hSensor =gg($obj['TITLE'].".hSensor");
$co2sensor =gg($obj['TITLE'].".co2sensor");
if ($tSensor) // если есть ссылка на Тсенсор
{
$t =gg($tSensor);
// say($t);
sg ($obj['TITLE'].".t",$t);
sg ($obj['TITLE'].".h",gg($hSensor));
}
if ($co2sensor) // если есть ссылка на сенсор
{
$val =gg($co2sensor);
sg ($obj['TITLE'].".co2", $val);
}
}
say2('end setAllZone');
|