Свойства класса:
Методы класса:
// Установка времени срабатывания последнего будулльника setGlobal("ThisComputer.lastalarm", time());
Объекты класса:
if (isWeekDay()){ // сегодня рабочий день // Say Say(timeNow()." Нужно собираться в школу. Выход через 45 минут"); // Напоминалки 15 мин setTimeOut('school15', 'say(timeNow()." через 30 мин выходить");', 15*60); // Напоминалки 30 мин setTimeOut('school30', 'say(timeNow()." через 15 мин выходить");', 30*60); // Напоминалки 35 мин setTimeOut('school35', 'say(timeNow()." через 10 мин выходить");', 35*60); // Напоминалки 40 мин setTimeOut('school40', 'say(timeNow()." через 5 мин выходить");', 40*60); // Напоминалки 45 мин setTimeOut('school45', 'say(timeNow()." Нужно выходить");', 45*60); }
$this->setProperty('AlarmOn', '0'); runScript('AlarmOn');
if (isWeekEnd()){ // сегодня рабочий день // все проснулись callMethod('NightMode.deactivate'); // Общий будильник runScript("AlarmOn"); }
if (isWeekDay()){ // сегодня рабочий день // все проснулись callMethod('NightMode.deactivate'); // Общий будильник runScript("AlarmOn"); // Напоминалки через 45 мин setTimeOut("command_alarm15",'say("15 минут до выхода");', 2700); // Напоминалки через 50 мин setTimeOut("command_alarm10",'say("10 минут до выхода");', 3000); // Напоминалки через 55 мин setTimeOut("command_alarm5",'say("5 минут до выхода");', 3300); // Напоминалки через 60 мин setTimeOut("command_alarm",'say("Пора выходить");', 3600); // Напоминание о машине $temp = getGlobal("yw_fact.temperature"); if ($temp < 5){ setTimeOut("command_alarmcar",'say("Нужно завести машину");', 2701); } else if ($temp < 0){ setTimeOut("command_alarmcar",'say("Нужно завести машину");', 3001); } else { setTimeOut("command_alarmcar",'say("Нужно завести машину");', 3301); } }
$dn = date("N"); // Среда и Воскресенье if (($dn == 3) || ($dn == 7)) { say("Напоминаю: Нужно выбросить мусор"); }
Свойства класса:
Методы класса:
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date("Y-m-d H:i:s")); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=5*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
if ($params['VALUE']){ $this->setProperty('volumeLevel',$params['VALUE']); } $volume = $this->getProperty('volumeLevel'); safe_exec('amixer set Master '.$volume.'% unmute'); //say("Изменилась громкость до ".$params['VALUE']." процентов");
runScript("StartInit"); //say('Похоже что отключалось питание. Я снова готова к работе', 2); // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Запуск', 'level' => 2) );
say("Отключено питание", 5);
$command=$params['command']; $short_command=''; $dt=recognizeTime($command,$short_command); $objects=getObjectsByClass("voice_command"); foreach($objects as $obj){ if (preg_match('/'.mb_strtolower($obj['TITLE'],'utf-8').'(.*)/is',mb_strtolower($command,'utf-8'),$m)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята'); return; } callMethod($obj['TITLE'].".action",array("command"=>$m[1])); return; } } // если голосовых команд не найдено - отправим в чат callMethod("Chat_request.action",array("command"=>$command));
Свойства класса:
Методы класса:
$this->setProperty("updated", time()); $this->setProperty("updatedTime", date("H:i")); $this->setProperty("message", $params["message"]);
Объекты класса:
Свойства класса:
Методы класса:
// Был код заточенный под Adruino - для остальногоне годен
Объекты класса:
Свойства класса:
Методы класса:
// Отменяем обработку если прошлый статус был менее 3 сек // Уделение дублированных запросов $lasttime = $this->getProperty('updatedTimestamp'); if ($lasttime+3 > time()){ return; } $this->setProperty('updatedTimestamp',time()); $this->setProperty("updatedTime",date("H:i",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=12*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); //== Объявление == $msg = $this->getProperty("Message"); say($msg, 5);
Объекты класса:
Свойства класса:
Методы класса:
// Отменяем обработку если прошлый статус был менее 3 сек // Уделение дублированных запросов $lasttime = $this->getProperty('updatedTimestamp'); if ($lasttime+3 > time()){ return; } $this->setProperty('updatedTimestamp',time()); $this->setProperty("updatedTime",date("Y-m-d H:i:s",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut");; if (!$alive_timeout) { $alive_timeout=24*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); //добавить таймаут датчика движения // 1-wire Adrduino искуственно добавлен таймаут 5 сек (у датчика 2 сек), для того чтобы хватило времени для считывания статуса по 1-Wire $linked_room=$this->getProperty("LinkedRoom"); if (($linked_room) && ($this->getProperty("status")==1)) { callMethod($linked_room.'.onActivity'); } if ($this->getProperty("status")==1) { $this->setProperty("statustext","кто-то есть"); } else { $this->setProperty("statustext","нет движения"); } // Собираем статусы всех датчиков $objects=getObjectsByClass("inhouseMovementSensors"); $val = 0; foreach($objects as $obj) { $obj=getObject($obj['TITLE']); if ($obj->getProperty("status")){ $val = 1; break; } } sg("sensorMovementSUM.value", $val);
Объекты класса:
/* $val= $this->getProperty('status'); if ($val == 1){ $hum = getGlobal("dbathroom.humidity"); if ($hum >= 47){ if ( time() - getGlobal("ThisComputer.last_swim") > (20*60)){ setGlobal("ThisComputer.last_swim", time()); say("С лёгким паром"); } } } */
Свойства класса:
Методы класса:
Объекты класса:
@$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y")); if (!$file){ DebMes("CBR error"); return; } // USD $xml = $file->xpath("//Valute[@ID='R01235']"); $valute = strval($xml[0]->Value); $this->setProperty('USD', round(str_replace(",",".",$valute)*100)/100); // EURO $xml = $file->xpath("//Valute[@ID='R01239']"); $valute = strval($xml[0]->Value); $this->setProperty('EURO', round(str_replace(",",".",$valute)*100)/100); $this->setProperty("uptime",date("d m Y H:i:s",time()));
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date("Y-m-d H:i:s")); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=2*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
//DebMes("Req"); $cnt=$this->getProperty("count"); $this->setProperty("count", $cnt); DebMes("Req:".$cnt);
$val = $this->getProperty("count"); // Смещение до реальных тиков $offset = $this->getProperty("offset"); if ($offset){ $val = $offset + $val; } // Коэффициент $ratio = $this->getProperty("ratio"); $volume = Round($ratio*$val, 3); $this->setProperty("volume", $volume); //DebMes("Offset:$offset ; ratio:$ratio ; val:$val ; volume $volume" );
Объекты класса:
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("status",0);
$this->setProperty("status",1);
Объекты класса:
Свойства класса:
Объекты класса:
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
Объекты класса:
// Run RC script runScript("rcswitch", array("rcswitch"=>$this->getProperty("RCReciver")."-24bit-P1"));
// Run RC script runScript("rcswitch", array("rcswitch"=>$this->getProperty("RCReciver")."-24bit-P1"));
Свойства класса:
Методы класса:
$linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.Temperature', $this->getProperty("Temperature")); }
$linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.Humidity', $this->getProperty("Humidity")); }
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
Свойства класса:
Методы класса:
// Сигнал изменения статуса окна $linked_room=$this->getProperty("LinkedVibration"); if ($linked_room) { //DebMes("Wnd vibration event"); callMethod($linked_room.".SlotChange", $params); }
$val = $params["NEW_VALUE"]; if ($val == "1"){ $this->setProperty("wstate", "Открыто"); } else { $this->setProperty("wstate", "Закрыто"); } // Сигнал изменения статуса окна $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { //DebMes("Wnd event"); callMethod($linked_room.".SlotWindow", $params); }
Объекты класса:
Объекты класса:
Свойства класса:
Методы класса:
DebMes("### Mode change: ".$this->getPropery("title")); $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("Y-m-d H:i:s")); if ($this->getProperty('active')) { $this->setProperty('state','Включён'); } else { $this->setProperty('state','Выключен'); }
$this->setProperty('active',1);
$this->setProperty('active',0);
Объекты класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nightmode_activate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nightmode_deactivate.php'); /* end injection of {SDevices} */
DebMes("@@@ Night change"); if ($this->getProperty("active")==1){ runScript("NightMode"); } else { // Включаем голос DebMes("===Voice ON"); setGlobal('minMsgLevel',0); }
// Ночь if (timeIs("23:00") && !gg("NightMode.active")){ callMethod('NightMode.activate'); } // День if (timeIs("10:00") && gg("NightMode.active")){ callMethod('NightMode.deactivate'); }
if ($this->getProperty("active")==1){ // say("Стемнело"); runScript("Darkness"); } else { // say("Расцвело"); }
// Day if (timeBetween(gg("ThisComputer.Sunrise"), gg("ThisComputer.Sunset"))){ if (gg("DarknessMode.active")){ callMethod('DarknessMode.deactivate'); } } // Night else { if (!gg("DarknessMode.active")){ callMethod('DarknessMode.activate'); } }
$hav = 0; // Проверка пользователей $objects=getObjectsByClass("Users"); foreach($objects as $obj) { $guest = getGlobal($obj['TITLE'].".isGuest"); $home = getGlobal($obj['TITLE'].".isHome"); if ($guest && $home) { $hav = 1; break; } } // Поменять если есть $ac = $this->getProperty("active"); if ($ac != $hav) $this->setProperty("active", $hav);
if ($this->getProperty("active")==1){ // Принудительно гасим все датчики движения $objects=getObjectsByClass("inhouseMovementSensors"); foreach($objects as $obj) { sg($obj['TITLE'].".status", 0); } // При постановке на охрану никого не должно быть дома setGlobal("NobodyHomeMode.active",1); // При постановке на охрану гостей выпроваживаем setGlobal("GuestsMode.active",0); } else { // При снятии с охраны дома появляются люди // setGlobal("NobodyHomeMode.active",0); }
// Проверка датчика движения if (getGlobal("SecurityArmedMode.active") &&getGlobal("sensorMovementSUM.status")){ $msg = "Внимание! Тревога! обнаружено движение!"; //При включенной охране обраружено движение. ТРЕВОГА!!! ТРЕВОГА!!! say($msg, 5); // Включить сирену - когда куплю }
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nobodyhomemode_activate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nobodyhomemode_deactivate.php'); /* end injection of {SDevices} */
if ($this->getProperty("active")==1){ // Тушим все медиа runScript("StopMedia"); // NobodyHome runScript("NobodyHome"); } else { // Кто то появился say('Добро пожаловать!'); // Отправить сообщения всем подписаным $rooms = NULL; $objects=getObjectsByClass("Rooms"); foreach($objects as $obj) { if (getGlobal($obj['TITLE'].".SomebodyHere") != 0){ if ($rooms!= "") { $rooms .= ", "; } $rooms[] = getGlobal($obj['TITLE'].".Title"); } } $rooms = implode(", ", $rooms); runScript("AlarmSend", array("value" => 'Движение: '.$rooms) ); DebMes('Движение: '.$rooms); //runScript("TestUsers"); }
// Проверка датчика движения if ((getGlobal("NobodyHomeMode.active")==1) // никого нет дома && (getGlobal("SecurityArmedMode.active")==0) // охраны нет && (getGlobal("sensorMovementSUM.status")==1)){ // движение ЕСТЬ //В режиме никого нет дома обраружено движение. Значит пришли люди. DebMes("NobodyHomeMode.Check : Движение"); setGlobal("NobodyHomeMode.active",0); return; } // Проверка есть ли люди дома $inhome = 0; $objects=getObjectsByClass("Users"); foreach($objects as $obj) { if (getGlobal($obj['TITLE'].".isHome") == 1){ $inhome = 1; // DebMes("User in home. ".$obj['TITLE']); break; } } // Обнаружение что дома никого нет if ( (getGlobal("NobodyHomeMode.active")!=1) && ($inhome == 0) && ( getGlobal("sensorMovementSUM.status")!=1 ) && (( time() - getGlobal("sensorMovementSUM.updated")) > (30*60) ) && (!getGlobal('NightMode.active')) ){ // Пропустить 20 min после будильника if ( time() - getGlobal("ThisComputer.lastalarm") < (20*60)){ return; } // Если час небыло людей и не ночь то преходим в никого нет say("Похоже что никого нет дома"); setGlobal("NobodyHomeMode.active",1); DebMes( "NobodyHomeMode.Check: Никого нет \r\n". " SS:".getGlobal("sensorMovementSUM.status")."\r\n". " Users".$inhome ); }
// Выйти из экономии утром if (timeIs("06:30") && gg("EconomMode.active")) { say("Скоро хозяева должны проснуться, выйти из экономии"); callMethod('EconomMode.deactivate'); } // Включить экономный режим if (timeIs("23:30") && !gg("EconomMode.active") && gg("NobodyHomeMode.active")) { say("Похоже никого нет сегодня, можно сэкономить немного."); callMethod('EconomMode.activate'); }
Свойства класса:
Методы класса:
//$params['v'] $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("Y-m-d H:i:s",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=30*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); if (!isset($params['v'])) { return; } $old_value=$this->getProperty('value'); $v=round($params['v'],1); $this->setProperty('value',$v); if ($params['uptime']) { $this->setProperty('uptime',$params['uptime']); } if ($v>$old_value) { $d=1; } elseif ($v<$old_value) { $d=-1; } else { $d=0; } $this->setProperty('direction',$d);
Объекты класса:
// Взять все датчики ссылающиеся на этот объект $objn=$this->object_title; $objects=SQLSelect("SELECT objects.TITLE FROM pvalues LEFT JOIN objects ON pvalues.OBJECT_ID=objects.ID WHERE pvalues.PROPERTY_NAME LIKE '%.LinkedWndObject' AND pvalues.VALUE LIKE '$objn'"); $total = count($objects); $state = "0"; for($i = 0; $i < $total; $i++) { $wstate = getGlobal($objects[$i]['TITLE'].".window"); //DebMes($objects[$i]['TITLE']."=".$wstate."<br>\n"); if ($wstate == "1") $state = "1"; } if ($this->getProperty("value") != $state) { $this->setProperty("value", $state); $this->setProperty('img', "<img src=\"/img/window_$state.png\" valign=\"bottom\">"); //DebMes("Change window state $this->object_title = $state"); }
$this->setProperty('value', time());
// здесь подписываем оъекты на событие изменения состояния callMethod('SecurityArmedMode.check'); // охрана
// Взять все датчики ссылающиеся на этот объект $objn=$this->object_title; $objects=SQLSelect("SELECT objects.TITLE FROM pvalues LEFT JOIN objects ON pvalues.OBJECT_ID=objects.ID WHERE pvalues.PROPERTY_NAME LIKE '%.LinkedTempObject' AND pvalues.VALUE LIKE '$objn'"); $total = count($objects); $sum = 0; $cnt = 0; for($i = 0; $i < $total; $i++) { $rtemp = getGlobal($objects[$i]['TITLE'].".Temperature"); //DebMes($objects[$i]['TITLE']."=".$wstate."<br>\n"); if (($rtemp != "") && ($rtemp > -40) && ($rtemp < 60)) { $sum += $rtemp; $cnt++; } } if ($cnt == 0) $val = 0; else $val = round($sum / $cnt, 1); $this->setProperty("value", $val);
//DebMes("sensorMovementSUM:".$this->getProperty("value")); if($this->getProperty("value")==1){ $this->setProperty("status",1); $this->setProperty("statusImg", '<img src="/img/status_1.png" valign="bottom">'); $this->setProperty("statusTime", date("H:i",time())); $ot=$this->object_title; $status_timeout=(int)$this->getProperty("statusTimeOut"); if (!$status_timeout) { $status_timeout=60; } clearTimeOut($ot."_status"); setTimeOut( $ot."_status", 'sg("'.$ot.'.status", 0); '. 'sg("'.$ot.'.statusImg", "<img src=\"/img/status_0.png\">" );', $status_timeout ); } // здесь подписываем оъекты на событие изменения состояния callMethod('SecurityArmedMode.check'); // охрана callMethod('NobodyHomeMode.check'); // никого нет дома
Свойства класса:
Объекты класса:
// TickFactor $TickFactor = $this->getProperty("TickFactor"); //== Per 15 min $val = getHistorySum("RainGauge1.value", -(15*60)); $this->setProperty("RainPer15m", round($val*$TickFactor,2)); //== Per Hour $val = getHistorySum("RainGauge1.value", -(60*60)); $this->setProperty("RainPerHour", round($val*$TickFactor,2)); //== Per Per 12h $val = getHistorySum("RainGauge1.value", -(12*60*60)); $this->setProperty("RainPer12h", round($val*$TickFactor,2)); //== Per Per 24h $val = getHistorySum("RainGauge1.value", -(24*60*60)); $this->setProperty("RainPer24h", round($val*$TickFactor,2)); //=== Narod mon $lastSend = $this->getProperty("NarodMonLastSend"); if (time()-(15*60) > $lastSend) { $val = getHistorySum("RainGauge1.value", $lastSend); $val = round($val*$TickFactor,2); $vals[] = array("MAC"=>"R01", "VALUE"=>$val, "TITLE"=>"Rain per 15 min"); include_once(DIR_MODULES . 'narodmon2/narodmon2.class.php'); $notify = new narodmon2(); $notify->sendVals($vals); $this->setProperty("NarodMonLastSend", time()); } //== Say rain if ($pvalue['VALUE'] != 0) { $lastRain = $this->getProperty("LastRain"); if (time()-(60*60) > $lastRain){ say("ВНИМАНИЕ! Пошёл дождь, закройье все окна"); include_once(DIR_MODULES . 'sms_ru/sms_ru.class.php'); $notify = new sms_ru(); $notify->sendNotifyAll("Дома пошёл дождь"); } $this->setProperty("LastRain", time()); $this->setProperty("LastRainTitle", date("Y-m-d H:i:s",time())); }
Свойства класса:
Методы класса:
return; // Останавлимваем таймеры ClearTimeOut("RadioFadeIn"); $mute = $this->getProperty("Mute"); if ($mute != 1){ // Сохраняем прошлую громкость $vol = $this->getProperty("VolumeLevel"); $this->SetProperty("LastRadioVolume", $vol); // Устанавливаем признак $this->SetProperty("Mute", 1); } // Установка громкости $mutvol = getGlobal("RadioSetting.MutVol"); if ($vol > $mutvol){ cm('RadioSetting.Control',array('vol'=>$mutvol)); }
return; $this->callMethod("FadeIn");
return; $vol = getGlobal("RadioSetting.VolumeLevel"); $lastvol = getGlobal("RadioSetting.MuteLastVol"); //DebMes("FadeIn:".$vol."|".$lastvol); if ($vol+10 >= $lastvol) { // Устанавливаем последнюю громкость callMethod("RadioSetting.Control",array("vol"=>$lastvol)); // Выключаем признак setGlobal("RadioSetting.Mute", 0); } else { // Устанавливаем громкость callMethod("RadioSetting.Control",array("vol"=>$vol+10)); // Планируем запуск через 1 сек SetTimeOut("RadioFadeIn", 'callMethod("RadioSetting.FadeIn");', 1); }
Объекты класса:
include_once(DIR_MODULES.'app_radio/app_radio.class.php'); $app_radio=new app_radio(); if(is_array($params)) { if(isset($params['sta'])) $app_radio->change_station($params['sta'],$app_radio); if(isset($params['cmd'])) $app_radio->control($params['cmd']); if(isset($params['vol'])) $app_radio->set_volume($params['vol'],$app_radio); } else { if($params=='play' || $params=='stop') $app_radio->control($params); else if(strpos($params, "vol")===0) $app_radio->set_volume((int)substr($params,3),$app_radio); else if(strpos($params, "sta:")===0) $app_radio->change_station(substr($params,4),$app_radio); }
Свойства класса:
Методы класса:
if ($this->getProperty('autoOn') == 1) { $this->callMethod('turnOn'); }
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
if (!$params['id']) { DebMes("RFSwitch incorrect id request for Device"); return 0; } $bits = $this->getProperty('bits'); if (!$bits){ DebMes("RFSwitch incorrect id request for Device"); return 0; } $url=$this->getProperty('url').",".$params['id'].','.$bits; // DebMes($url); getURL($url,0);
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
$this->callMethod('turnOn'); $this->callMethod('turnOn'); $this->callMethod('turnOn'); $this->callMethod('turnOn'); $this->callMethod('turnOn');
$this->setProperty("status",1); $this->callMethod('sendCommand',array('id'=>$this->getProperty('IdOn'))); // Авто выключение $offtimeout = $this->getProperty('autoofftimeout'); if ($offtimeout != "") { SetTimeOut('OffTimer_'.$this->object_title, 'callMethod("'.$this->object_title.'.turnOff");', $offtimeout); }
$this->setProperty("status",0); $this->callMethod('sendCommand', array('id'=>$this->getProperty('IdOff')));
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("status",0);
$this->setProperty("status",1);
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("brightness",0);
$brightness = $this->getProperty("brightness_last"); if (!isset($brightness) or ($brightness == 0)){ $brightness = 100; } $this->setProperty("brightness",$brightness);
$brightness = $this->getProperty("brightness"); if ($brightness == 0){ $this->setProperty("status", 0); } else { $this->setProperty("status", 1); $this->setProperty("brightness_last", $brightness); }
if ($params['value']){ $this->setProperty("brightness_last", $params['value'] ); $this->callMethod("turnOn"); } else { $this->callMethod("turnOff"); }
Объекты класса:
Свойства класса:
Методы класса:
// Сигнал изменения статуса окна $linked_obj=$this->getProperty("LinkedWndObject"); if ($linked_obj) { //DebMes("Wnd event:".$linked_obj); callMethod($linked_obj.".SlotChange", $params); }
// Взять все датчики ссылающиеся на этот объект $room=$this->object_title; $objects=SQLSelect("SELECT objects.TITLE FROM pvalues LEFT JOIN objects ON pvalues.OBJECT_ID=objects.ID WHERE pvalues.PROPERTY_NAME LIKE '%.LinkedRoom' AND pvalues.VALUE LIKE '$room'"); $total = count($objects); $state = "0"; for($i = 0; $i < $total; $i++) { if (getGlobal($objects[$i]['TITLE'].".alive") == "1") { $wstate = getGlobal($objects[$i]['TITLE'].".window"); //DebMes($objects[$i]['TITLE']."=".$wstate."<br>\n"); if ($wstate == "1") $state = "1"; } } if ($this->getProperty("window") != $state) { $this->setProperty("window", $state); $this->setProperty('windowImg', "<img src=\"/img/window_$state.png\" valign=\"bottom\">"); //DebMes("Change window state $this->object_title = $state"); }
// Сигнал изменения значения $linked_obj=$this->getProperty("LinkedTempObject"); if ($linked_obj != "") { //DebMes("Room temp event:".$linked_obj); callMethod($linked_obj.".SlotChange", $params); }
require(DIR_MODULES.'devices/Rooms_onActivity.php');
$this->setProperty('SomebodyHere',0); $this->setProperty('SomebodyHereText',''); $this->setProperty('SomebodyHereImg', '<img src="/img/status_0.png" valign="bottom">');
Объекты класса:
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SDevices_statusUpdated.php');
require(DIR_MODULES.'devices/SDevices_logicAction.php');
Методы класса:
require(DIR_MODULES.'devices/SButtons_pressed.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SControllers_turnOn.php');
require(DIR_MODULES.'devices/SControllers_turnOff.php');
require(DIR_MODULES.'devices/SControllers_switch.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SDimmers_turnOff.php');
require(DIR_MODULES.'devices/SDimmers_levelUpdated.php');
require(DIR_MODULES.'devices/SDimmers_turnOn.php');
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_turnOn.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_turnOff.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_colorUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_setColor.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SCounters_valueUpdated.php'); /* end injection of {SDevices} */
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SLeak_statusUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SOpenClose_statusUpdated.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SSensors_valueUpdated.php');
Объекты класса:
Свойства класса:
Объекты класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SSmoke_statusUpdated.php'); /* end injection of {SDevices} */
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$details=array(); $red_state=0; $yellow_state=0; /* //Скрипт проверки состояния ИБП. //Если вдруг upsmon не смог передать изменение состояния в MDM. $UPS_state = getGlobal("UPS.status"); //$UPS_state="LB"; switch ($UPS_state) { case "OL": break; case "OL TRIM": break; case "OB": $yellow_state=1; $details[]="Работа от аккумуляторов ИБП"; break; case "LB": $red_state=1; $details[]="Батарея ИБП разряжена"; break; //default: }; */ $BAT_state = getGlobal("ThisComputer.BatState"); switch ($BAT_state) { case "Discharging": $BAT_present = getGlobal("ThisComputer.BatPresent"); if ($BAT_present < 20){ $red_state=1; $details[]="Батарея разряжена: ".$BAT_present.'%'; } else { $yellow_state=1; $details[]="Работа от аккумулятора: ".$BAT_present.'%'; } default: break; } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("Энергост стус ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Communicate:'.implode(". ",$details), "level" => 2) ); } else { say("Энергост стус ".LANG_GENERAL_RESTORED_TO." ".$state_title); // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Communicate:Ok', "level" => 2) ); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; if (!isOnline('Google')) { $yellow_state=1; $details[]="Нет доступа в Интернет"; } if (!isOnline('Router')) { $red_state=1; $details[]="Не доступен шлюз и беспроводная сеть"; } /* if (!isOnline('ZLink2')) { $yellow_state=1; $details[]="Не доступен ZLink2"; } */ //if (!isOnline('RCGateway2')) { // $yellow_state=1; // $details[]="Не доступен RCGateway2"; //} if (!isOnline('MySensor gate')) { $yellow_state=1; $details[]="Не доступен MySensor gate"; } if (!isOnline('IPCam baby')) { $yellow_state=1; $details[]="Не доступен IPCam baby"; } if (!isOnline('IPCam Yard')) { $yellow_state=1; $details[]="Не доступен IPCam Yard"; } if (!isOnline('NVR')) { $yellow_state=1; $details[]="Не доступен NVR"; } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } $laststate = $this->getProperty('stateColor'); if ($laststate!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); // Не зелёный if ($state!='green') { if ($state=='red'){ say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); } // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Communicate:'.implode(". ",$details), "level" => 2) ); } // Зелёный else { if ($laststate == 'red') say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Communicate:Ok', "level" => 1) ); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Sec:'.implode(". ",$details)) ); } else { say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); // Отправить сообщения всем подписаным runScript(AlarmSend, array("value" => 'Sec:Ok') ); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; // Цыклы $cycles=array( 'states'=>'states cycle', 'main'=>'main cycle', 'execs'=>'exec cycle', 'scheduler'=>'scheduler cycle' ); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]=$v." stopped"; } } $cycles=array( 'ping'=>'ping cycle', 'webvars'=>'webvars cycle', 'rss'=>'RSS cycle', 'onewire' => 'OneWire cycle', 'onewire_starred' => 'OneWire Starred cycle', 'narodmon2' => 'Narod mon', //'mqtt' => 'MQTT cycle', 'mysensor' => 'MySensors', 'energomera' => 'Energomera' ); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]=$v." stopped"; } } //=== Устройства === // Градусники $objects=getObjectsByClass("tempSensors"); foreach($objects as $obj) { if (getGlobal($obj['TITLE'].".checkalive") && !getGlobal($obj['TITLE'].".alive")){ $yellow_state=1; $details[]=$obj['TITLE']." not alive"; } } //=== Датчики присутствия === $objects=getObjectsByClass("inhouseMovementSensors"); foreach($objects as $obj) { if (getGlobal($obj['TITLE'].".checkalive") && !getGlobal($obj['TITLE'].".alive")){ $yellow_state=1; $details[]=$obj['TITLE']." not alive"; } } //=== MySensors. Датчики на батарейках === $objects=getObjectsByClass("MySensor"); foreach($objects as $obj) { // Присутствие if (getGlobal($obj['TITLE'].".checkalive") && !getGlobal($obj['TITLE'].".alive")){ $yellow_state=1; $details[]=$obj['TITLE']." not alive"; } // Уровень батареи if ( getGlobal($obj['TITLE'].".MinBattery") && (getGlobal($obj['TITLE'].".battery") <= getGlobal($obj['TITLE'].".MinBattery")) ) { $yellow_state=1; $details[]=$obj['TITLE']." low battery"; } } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { //say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); //say(implode(". ",$details)); // Отправить сообщения всем подписаным //runScript(AlarmSend, array("value" => 'Sys:'.implode(". ",$details), "level" => 2)); } else { // say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title, 5); } $this->callMethod('stateChanged'); } /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/system_checkstate.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
//$params['t'] $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("Y-m-d H:i:s")); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=4*60*60; // 4 часа } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { $t = $this->getProperty("temp"); if (($t >= -40) && ($t <= 60)){ setGlobal($linked_room.'.Temperature', round($t,1)); } } // Day Min/Max $this->setProperty("DayMin", getHistoryMin($this->object_title.".temp", strtotime("-1 day"))); $this->setProperty("DayMax", getHistoryMax($this->object_title.".temp", strtotime("-1 day"))); /* if (!isset($params['t'])) { return; } $old_temp=$this->getProperty('temp'); $t=round($params['t'],1); if ($t>110) return; $this->setProperty('temp',$t); if ($params['uptime']) { $this->setProperty('uptime',$params['uptime']); } if ($t>$old_temp) { $d=1; } elseif ($t<$old_temp) { $d=-1; } else { $d=0; } $this->setProperty('direction',$d); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.Temperature',$t); } */
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
callMethod('cbr.update'); runScript("WeatherGet");
//DebMes("#1"); $h=(int)date('G',time()); $m=date('i',time()); // Записываем текущее время sg("ThisComputer.timeNow",date( "H:i", time())); // Будильники $objects=getObjectsByClass("AlarmClock"); // переберем все объекты в класе foreach($objects as $obj) { //если включен и время совпало if (getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ // выполним метод callMethod($obj['TITLE'].".AlarmRun"); } } runScriptSafe("CheckOnline"); //DebMes("#4"); // Режимы $objects=getObjectsByClass("OperationalModes"); // переберем все объекты в класе foreach($objects as $obj) { //DebMes("#5".$obj['TITLE']); // выполним метод callMethod($obj['TITLE'].".check"); } //DebMes("#5"); runScriptSafe("SysInfo"); runScriptSafe("PowerSupply"); // Сказать время, каждый час //if (($h>=8)) { // if ($m=="00") { // say(timeNow()); // } //} // DebMes("#7");
Методы класса:
Объекты класса:
if ($params['serial']=='' && $params['devname']!='') { $params['serial']=$params['devname']; } $device=SQLSelectOne("SELECT * FROM usbdevices WHERE SERIAL LIKE '".$params['serial']."'"); if (!$device['ID']) { // new device connected //say("Подключено новое устройство",1); $device=array(); $device['SERIAL']=$params['serial']; $device['TITLE']='устройство '.$params['devname']; $device['FIRST_FOUND']=date('Y-m-d H:i:s'); $device['LAST_FOUND']=date('Y-m-d H:i:s'); $device['LOG'].=$device['FIRST_FOUND'].' подключено (впервые)'."\n"; $device['ID']=SQLInsert('usbdevices',$device); } else { // device already in our database //say("Подключено ".$device['TITLE'],1); if ($device['USER_ID']) { $user=SQLSelectOne("SELECT * FROM users WHERE ID='".$device['USER_ID']."'"); if ($user['ID']) { //$user['NAME']; // теперь мы знаем имя пользователя, связанного с этим устройством } } $device['LAST_FOUND']=date('Y-m-d H:i:s'); $device['LOG']=$device['LAST_FOUND'].' подключено'."\n".$device['LOG']; SQLUpdate('usbdevices',$device); if ($device['SCRIPT_ID']!='') { runScript($device['SCRIPT_ID'],$params); } elseif ($device['SCRIPT']!='') { eval($device['SCRIPT']); } }
Свойства класса:
Методы класса:
$this->setProperty("isHome", 0);
$last = $this->getProperty("isHomeTime"); // Установка флага $this->setProperty("isHome", 1); $this->setProperty("isHomeTime", time()); $this->setProperty("isHomeUpdate", date("Y-m-d H:i:s",time())); // Приветствовать if (time()-$last >= (4*60*60)) if ($this->getProperty("Greeting") == 1) say("Здравствуйте ".$this->getProperty("SayName")."\nДобро пожаловать!"); // Сброс присутствия $ot=$this->object_title; $alive_timeout = 30*60; clearTimeOut($ot."_inHome"); setTimeOut($ot."_inHome","sg('".$ot.".isHome',0);",$alive_timeout);
// Если ночь и кто-то дома то не оповещать $night=getGlobal("NightMode.active"); $nobody=getGlobal("NightMode.active"); if (($night == 0) && ($nobody != 0)){ return; } $this->callMethod("SendEMail", $params); //$this->callMethod("SendSMS", $params);
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
$command=$params['command']; runScript('iiiBot', array('message'=>$command)); //$text = $mod->cmd($command); //if ($text != ""){ // say($text); //} else { // say("Неизвестная команда"); //}
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
, Россия
На форуме: Ivan
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving