Свойства класса:
Методы класса:
Объекты класса:
$tm = $params['NEW_VALUE']; $new_alarm = timeConvert($tm); if($new_alarm <= time()) $new_alarm = $new_alarm + 24*60*60; //удалим предыдущие и повторяющиеся/ перепишется теперь SQLExec("Delete from clnd_events where `TITLE`='Будильник по рабочим дням'"); $msg = $this->getProperty('message'); if(!$msg){ $msg = 'Это будильник рабочих будней!'; } include_once(DIR_MODULES . 'todoer/todoer.class.php'); $todo = new todoer(); $tsk = array( 'TITLE' => "Будильник по рабочим дням", 'DUE' => date('Y-m-d H:i:00',$new_alarm), //or comment if IS_NODATE=1 'END_TIME' => date('Y-m-d H:i:00', $new_alarm + 60*5), //or comment if IS_NODATE=1 'NOTES' => $msg,//your notes // 'IS_NODATE' => 1, 'IS_REPEATING' => 1, 'REPEAT_TYPE' => 4, // see repeat type list 0-year...6-minute 'BEGIN_CODE' => "if(gg('WorkDay'))callmethodsafe('AlarmWork.Action');", //code for beginning // 'DONE_CODE' => "say('задача закончена!',1);", //code for ending 'AUTODONE' => 1, //autoends at end_time and done_code execs // 'REPEAT_UNTIL' => date('Y-m-d H:i:00', time() + 60*10), 'CATEGORY' => "Неделя", // ... and so on ); //echoes id of new task echo $todo->create_new_task($tsk); //echo SETTINGS_TODOER_LOGGING;
if ($this->getProperty('Enable')){ $vl = gg('ThisComputer.VolumeLevel'); sg("ThisComputer.volumeLevelMain",100); setTimeOut('tAlarmWork0',"playSound('[all-Sounds.ru]ku-ka-re-ku-petuha');",2); $msg = $this->getProperty('message'); if(!$msg){ $msg = 'Это будильник рабочих будней!'; } setTimeOut('tAlarmWork',"say('".$msg."',5);",4); setTimeOut('tAlarmWork1',"sg('ThisComputer.volumeLevelMain',".$vl.");",10); //включим камеру brLinkCommand('pro_ch_plus'); setTimeOut('tAlarmWork2','brLinkCommand("pro_vol_mute");brLinkCommand("pro_sel_hdmi1");', 10); sg('Samsung.status', 1); }
$tm = $params['NEW_VALUE']; $new_alarm = timeConvert($tm); if($new_alarm <= time()) $new_alarm = $new_alarm + 24*60*60; //удалим предыдущие и повторяющиеся/ перепишется теперь SQLExec("Delete from clnd_events where `TITLE`='Разовый будильник'"); $msg = $this->getProperty('message'); if(!$msg){ $msg = 'Это разовый будильник!'; } include_once(DIR_MODULES . 'todoer/todoer.class.php'); $todo = new todoer(); $tsk = array( 'TITLE' => "Разовый будильник", 'DUE' => date('Y-m-d H:i:00',$new_alarm), //or comment if IS_NODATE=1 'END_TIME' => date('Y-m-d H:i:00', $new_alarm + 60*3), //or comment if IS_NODATE=1 'NOTES' => $msg,//your notes // 'IS_NODATE' => 1, 'IS_REPEATING' => 0, // 'REPEAT_TYPE' => 4, // see repeat type list 0-year...6-minute 'BEGIN_CODE' => "callmethodsafe('AlarmOnce.Action');", //code for beginning // 'DONE_CODE' => "say('задача закончена!',1);", //code for ending 'AUTODONE' => 1, //autoends at end_time and done_code execs // 'REPEAT_UNTIL' => date('Y-m-d H:i:00', time() + 60*10), 'CATEGORY' => "Дела", // ... and so on ); //echoes id of new task echo $todo->create_new_task($tsk); //echo SETTINGS_TODOER_LOGGING;
if ($this->getProperty('Enable')){ $this->setProperty('Enable',0);//выключим будильник $vl = gg('ThisComputer.VolumeLevel'); sg("ThisComputer.volumeLevelMain",100); playSound('[all-Sounds.ru]ku-ka-re-ku-petuha'); sleep(2); $msg = $this->getProperty('message'); if($msg){ say($msg,5); }else{ say('Это разовый будильник!',5); } sg("ThisComputer.volumeLevelMain",$vl); }
Свойства класса:
Методы класса:
DebMes("class method switch"); $status = $this->getProperty('status'); if ($status) { $this->callMethod('open'); } else { $this->callMethod('close'); }
//DebMes("class method setLevel"); if (!isset($params['value'])) return; $new_level = $params['value']; if ($new_level>=0 && $new_level<=100) { $this->setProperty('level',$new_level); }
//DebMes("class method levelUpdated"); $level = $params['NEW_VALUE']; //$level = $this->getProperty('level'); $status = $this->getProperty('status'); if ($level>0) { $this->setProperty('levelSaved',$level); } if ($level > 0 && $status) { $this->setProperty('status', 0); } elseif ($level==0 && !$status) { $this->setProperty('status', 1); }
//DebMes("class method close"); if ($this->getProperty('support_level')) { $this->callMethod('setLevel',array('value'=>0)); } //$this->setProperty('status',1);
//DebMes("class method open"); if ($this->getProperty('support_level')) { $level_saved = $this->getProperty('levelSaved'); if (!$level_saved) $level_saved = 100; $this->callMethod('setLevel',array('value'=>$level_saved)); } //$this->setProperty('status', 0);
//DebMes("class method statusChanged"); $this->setProperty("updated",time()); if($params['NEW_VALUE'] == 0){ $this->setProperty("StatusTxt", "открыта"); }else{ $this->setProperty("StatusTxt", "закрыта"); }
Объекты класса:
DebMes("blind2 switch");
DebMes("blind2 method open"); //callMethod('blind2.setLevel',array('value'=>gg('blind2.levelSaved'))); //$this->setProperty('status',0); //$this->setProperty('status',1);
DebMes("blind2 method setLevel"); /*differential (!isset($params['value'])) return; $new_level = $params['value']; $oldlvl = (int)$this->getProperty("level"); if ($new_level>=0 && $new_level<=100) { $this->setProperty('level',$new_level); } if($this->getProperty("status")){ $src = $params['src'];//yandex? $lvl = (int)$params['value']; $oldlvl = (int)$this->getProperty("level"); //0 or 100 if($lvl == 0){ brLinkCommand('blind1_down'); $this->setProperty('level',$lvl); return; } if($lvl == 100){ brLinkCommand('blind1_up'); $this->setProperty('level',$lvl); return; } //определим, что делать - открывать или закрывать по ср. с запомненным if($lvl > $oldlvl){ //поднять brLinkCommand('blind1_up'); if($lvl < 100){ $delta = (int)($lvl - $oldlvl) * 3 / 10; setTimeOut("blind1_stop","brLinkCommand('blind1_stop');",$delta); } }elseif($lvl < $oldlvl){ //опустить brLinkCommand('blind1_down'); if($lvl > 0){ $delta = (int)($oldlvl - $lvl) * 3 / 10; setTimeOut("blind1_stop","brLinkCommand('blind1_stop');",$delta); } } //$this->setProperty('level',$lvl); //} //check status */
DebMes("blind2 method close"); //callMethod('blind2.setLevel',array('value'=>0)); //$this->setProperty('level',0); //brLinkCommand('blind1_down'); //$this->setProperty('status',0);
/*differential (!isset($params['value'])) return; $new_level = $params['value']; $oldlvl = (int)$this->getProperty("level"); if ($new_level>=0 && $new_level<=100) { $this->setProperty('level',$new_level); } if($this->getProperty("status")){ $src = $params['src'];//yandex? $lvl = (int)$params['value']; $oldlvl = (int)$this->getProperty("level"); //0 or 100 if($lvl == 0){ brLinkCommand('blind1_down'); $this->setProperty('level',$lvl); return; } if($lvl == 100){ brLinkCommand('blind1_up'); $this->setProperty('level',$lvl); return; } //определим, что делать - открывать или закрывать по ср. с запомненным if($lvl > $oldlvl){ //поднять brLinkCommand('blind1_up'); if($lvl < 100){ $delta = (int)($lvl - $oldlvl) * 3 / 10; setTimeOut("blind1_stop","brLinkCommand('blind1_stop');",$delta); } }elseif($lvl < $oldlvl){ //опустить brLinkCommand('blind1_down'); if($lvl > 0){ $delta = (int)($oldlvl - $lvl) * 3 / 10; setTimeOut("blind1_stop","brLinkCommand('blind1_stop');",$delta); } } //$this->setProperty('level',$lvl); //} //check status */
brLinkCommand('blind1_stop');
brLinkCommand('blind1_down'); $this->setProperty('status',1);
brLinkCommand('blind1_up'); $this->setProperty('status',0);
$level = $this->getProperty('level'); $status = $this->getProperty('status'); if ($level>0) { $this->setProperty('levelSaved',$level); } if ($level > 0 && $status) { $this->setProperty('status', 0); //открыто? } elseif ($level==0 && !$status) { $this->setProperty('status', 1); //закрыто? }
Свойства класса:
Методы класса:
Объекты класса:
$vol =(int) $params['NEW_VALUE']; $this->setProperty('volumeLevel',$vol);//temporary $volume = round(65535*$vol/100); safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); setTimeOut( 'tc_volumeLevel', "say('Установлена громкость ' . $vol . ' '.GetNumberWord($vol,array('процент', 'процента', 'процентов')));", 2);
$vol =(int) $params['NEW_VALUE']; $this->setProperty('volumeLevel',$vol); $volume = round(65535*$vol/100); safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); setTimeOut( 'tc_volumeLevelMain', "say('Установлена громкость ' . $vol . ' '.GetNumberWord($vol,array('процент', 'процента', 'процентов')));", 2); //выводим сообщение
if(IsSet($params['VALUE'])){ $vol =(int) $params['VALUE']; $this->setProperty('volumeLevel',$vol); $volume = round(65535*$vol/100); safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); setTimeOut( 'tc_volumeLevel', "say('Установлена громкость ' . $vol . ' '.GetNumberWord($vol,array('процент', 'процента', 'процентов')));", 2); //выводим сообщение в чат через таймер (если регулировали с кнопки, чтоб не спамило) }
debmes('ThisComputer.Startup: hello after restart!'); runScript('db_repair'); runScript('ResetDing');//восстановим наши файлы runScript("Date_Full"); runScript("sun"); //для darknessmode callMethod('grpLight.callGroupMethod',array('mg'=>'refresh'));//хорошо для тех, кто не меняет статус и без ос //reset all motion detect cm('grpMotionDetectors.setGroupProperty',array('property'=>'value','value'=>0)); //RunScriptSafe("refreshAllThermo"); runScript('nooPollphp');//запустим опрос ноодевайсов say(getRandomLine('hello'),2); registerEvent('online/internet', ping('ya.ru'));
Свойства класса:
Методы класса:
Объекты класса:
$p = $params['NEW_VALUE']; //button 2 //$this->setProperty("updated",time()); $pp = explode('_',$p); if($pp[1]) $value = (int)$pp[1]; $user = $this->getProperty('user'); //debmes('amazfit '.$pp[0]); switch($pp[0]) { case 'button': //$this->setProperty('button',$value); if($value == 1)say("ДА",1,5); if($value == 2)say("НЕТ",1,5); if($value == 3)say("ОТМЕНА",1,5); break; case 'steps': //$this->setProperty('steps',$value); sg($user.'.steps',$value); //sg('mySteps.valueWork',$value); break; case 'battery': $this->setProperty('battery',$value); if($value<5 && (time() - registeredEventTime('AmazfitBip/lowPower') > 10*60)){ say("Часы почти разряжены!",2); registerEvent('AmazfitBip/lowPower'); } if($value > 99 && (time() - registeredEventTime('AmazfitBip/FullCharge') > 20*60)){ say("Часы заряжены!",2); registerEvent('AmazfitBip/FullCharge'); } break; case 'Awake': //$this->setProperty('Awake',time()); sg($user.'.sleep',0); break; case 'Asleep': //$this->setProperty('Asleep',time()); sg($user.'.sleep',1); break; case 'pulse': //$this->setProperty('pulse',$value); sg($user.'.pulse',$value); break; }
$st = $this->getProperty('status'); $this->setProperty("updated",time()); switch($st){ case 'диалог': //$this->setProperty('status','диалог'); $this->setProperty('but1click','да'); $this->setProperty('but2click','нет'); $this->setProperty('but3click','отмена'); $this->setProperty('but1long','нет'); $this->setProperty('but2long','долго нажата кнопка Б'); $this->setProperty('but3long','смени режим пульта'); break; case 'управление светом': // $this->setProperty('status','управление светом'); $this->setProperty('but1click','Включи свет везде'); $this->setProperty('but2click','Включи свет на улице'); $this->setProperty('but3click','Включи свет в холле'); $this->setProperty('but1long','Выключи свет везде'); $this->setProperty('but2long','Выключи свет на улице'); $this->setProperty('but3long','смени режим пульта'); break; case 'управление звуком': //$this->setProperty('status','управление звуком'); $this->setProperty('but1click','Включи музыку'); $this->setProperty('but2click','Громкость 100'); $this->setProperty('but3click','Выключи музыку'); $this->setProperty('but1long','Выключи музыку'); $this->setProperty('but2long','Громкость 15'); $this->setProperty('but3long','смени режим пульта'); break; default: say('нет действия'); }
Свойства класса:
Методы класса:
$value = $params['VALUE']; if($value == 0) return; if($params['NEW_VALUE'] == $params['OLD_VALUE']) return; $this->setProperty('value',$value);
//DebMes("class cm valueWorkUpdated "); $old_value = (float)$params['OLD_VALUE']; $new_value = (float)$params['NEW_VALUE']; $diff = $new_value - $old_value; if ($diff < 0) { $diff = $new_value; } $conversion = (float)$this->getProperty('rate'); if ($conversion > 0) { $diff = $diff * $conversion; } $data_value = (float)$this->getProperty('value'); $new_data_value = round(($data_value + $diff), 2); if ($data_value != $new_data_value) { $this->setProperty('value', $new_data_value); }
$value = $params['VALUE']; if($value == 0) return; if($params['NEW_VALUE'] == $params['OLD_VALUE']) return; $this->setProperty('valueWork',$value);
//Заполнение исторических накопителей - час, день, месяц $ot = $this->object_title; $new_value = (float)$params['NEW_VALUE']; $old_value = (float)$params['OLD_VALUE']; $delta = $new_value - $old_value; if($delta == 0 && date("j")>1) return;//nothing to do if($delta < 0) $delta = $new_value; $history_values = array( 'valueHour'=>date('Y-m-d H:00:00'), 'valueDay'=>date('Y-m-d 00:00:00'), 'valueMonth'=>date('Y-m-01 00:00:00') ); foreach ($history_values as $history_value=>$time) { $value_id = (int)getHistoryValueId($ot . '.' . $history_value); //последнее значение в нашем интервале $val1 = SQLSelectOne("SELECT ID, VALUE FROM pvalues WHERE ID='" . $value_id . "' AND UPDATED>='" . $time . "'"); //DebMes("SELECT ID, VALUE FROM pvalues WHERE ID='" . $value_id . "' AND UPDATED>='" . $time . "' order by UPDATED desc"); if ($val1['ID']) { //нашли, очистим текущий интервал в истории SQLExec("DELETE FROM phistory WHERE VALUE_ID=$value_id AND ADDED>='$time'"); //к последнему значению добавим изменение $set_value = $val1['VALUE'] + $delta; $set_value = round($set_value, 2); $this->setProperty($history_value, $set_value);//запомним новое в истории с новым временем обновления } else { //"закроем" предыдущий период - установим в истории время на конец интервала if($history_value == 'valueHour') { SQLExec("update phistory set ADDED=DATE_FORMAT(`ADDED`,'%Y-%m-%d %H:59:59') where VALUE_ID=$value_id and hour(ADDED)!=hour(now())"); } elseif ($history_value == 'valueDay') { SQLExec("update phistory set ADDED=DATE_FORMAT(`ADDED`,'%Y-%m-%d 23:59:59') where VALUE_ID=$value_id and day(ADDED)!=day(now())"); } elseif ($history_value == 'valueMonth') { SQLExec("update phistory set ADDED=concat(last_day(`ADDED`),' 23:59:59') where VALUE_ID=$value_id and month(ADDED)!=month(now())"); } $set_value = $delta; $set_value = round($set_value, 2); $this->setProperty($history_value, $set_value); } }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('status', 1);
$this->setProperty('status', 0);
if (isset($params['value'])){ $new_level = $params['value']; }elseif(isset($params['NEW_VALUE'])){ //? $new_level = $params['NEW_VALUE']; }else{ return; } if ($new_level>=0 && $new_level<=100) { $this->setProperty('level',$new_level); }
//$this->setProperty('updated', time());
$level = $params['NEW_VALUE']; $minWork = $this->getProperty('minWork'); $maxWork = $this->getProperty('maxWork'); if ($minWork != $maxWork) { $levelWork = round($minWork + ($maxWork - $minWork) * $level / 100); $this->setProperty('levelWork', $levelWork); }
if($this->getProperty("status")) { $this->callMethodSafe('turnOff'); }else{ $this->callMethodSafe('turnOn'); }
Свойства класса:
Методы класса:
$level = $params['NEW_VALUE']; $minWork = $this->getProperty('minWork'); $maxWork = $this->getProperty('maxWork'); if ($minWork != $maxWork) { $levelWork = round($minWork + ($maxWork - $minWork) * $level / 100); $this->setProperty('levelWork', $levelWork); } if($this->getProperty('status') == 1){//поменяем на ходу $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; if(!isset($levelWork)) $levelWork = 0; $com = 0; $cmd = 6; $fmt = 1; $d0 = $levelWork; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; sendNooAPICmd($cmd,$this->object_title,"Noolite.levelUpdated"); }
$tm = 1; if($params['tm']) $tm = $params['tm']; $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $cmd = $mode." 0 0 ".$ch." 25 5 $tm 0 0 0 $adr 0"; sendNooAPICmd($cmd,$this->object_title);
$ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 64; $cmd = 0; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; sendNooAPICmd($cmd,$this->object_title,"Noolite.turnoff");
$ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $br = (int)$this->getProperty("levelWork"); $minWork = $this->getProperty('minWork'); if($br < $minWork) { $this->setProperty('levelWork',$minWork,0,'turnon'); return; } $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 2; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; sendNooAPICmd($cmd,$this->object_title,"Noolite.turnon");
Объекты класса:
Свойства класса:
Объекты класса:
if($params['NEW_VALUE']==1){ sg('YandexLamp3.Icon','fas fa-lightbulb'); }else{ sg('YandexLamp3.Icon','far fa-lightbulb'); }
Свойства класса:
Методы класса:
if($params['NEW_VALUE'] == 0 && $params['OLD_VALUE'] == 0){ $ot = $this->object_title; $dscr = $this->description; debmes("Недоступен объект ".$ot." ".$dscr); say("Недоступен объект ".$ot." ".$dscr); }
$ip=$this->getProperty("IP"); if(!isset($params['out'])){ $dt=$this->getProperty("data_out"); }else{ $dt=$params['out']; $this->setProperty("data_out",$dt); } //getURLBackground("http://".$ip."/msg?cmd=<".$dt.">"); $s=getURL("http://".$ip."/msg?cmd=<".$dt.">",0); //проверим на ошибку $pos=strpos( $s,'uart ok'); if($pos===false){ //повторим //debmes('err send - repeat'); $s = getURL("http://".$ip."/msg?cmd=<".$dt.">",0); } $this->setProperty("data_in",$s); //debmes('to esp -><'.$dt.'>');
//$this->setProperty('status',$params['status']); $this->setProperty('updatedTimestamp',time()); //$this->setProperty('updated',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);
Объекты класса:
//tsmRelay20 //refoss2 debmes($params); if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); //debmes($sensors); sg('tsmRelay20.power', (float)$sensors['ENERGY']['Power']); sg('tsmRelay20.energyToday', (float)$sensors['ENERGY']['Today']); sg('tsmRelay20.energyYesterday', (float)$sensors['ENERGY']['Yesterday']); sg('boiler2_power.value', (float)$sensors['ENERGY']['Power']); }
if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); $src = $params['PATH']; //debmes($sensors); //debmes($sensors['Time'].' now'); //debmes('SW1 '.$sensors['Switch1'].' ...'); if($sensors['Switch1'] == 'ON' && gg('motiondetect2_1.value') == 1) { sg('motiondetect2_1.value', 1, 0, $src."/Switch1"); } //debmes((float)$sensors['DS18B20']['Temperature'].' C'); if(isset($sensors['DS18B20']['Temperature'])){ sg('temp_tsm4BF220.value', (float)$sensors['DS18B20']['Temperature'], 0, $src); } }
Свойства класса:
Методы класса:
debmes($this->getproperty('locationTitle').' userEntered '.$params["USER_OBJECT"]);
debmes($this->getproperty('locationTitle').' userLeft '.$params["USER_OBJECT"]);
Объекты класса:
Свойства класса:
Методы класса:
$this->callMethod('callGroupMethod',array('mg'=>'turnOn')); $this->setProperty('status',1);
$this->callMethod('callGroupMethod',array('mg'=>'turnOff')); $this->setProperty('status',0);
$status = $this->getProperty('status');//callMethod('MaxGrpProperty',array('property'=>'status')); if(!isset($status)) $status = 0; if($status){ $this->callMethod('callGroupMethod',array('mg'=>'turnOff')); $this->setProperty('status', 0); }else{ $this->callMethod('callGroupMethod',array('mg'=>'turnOn')); $this->setProperty('status', 1); }
if(!isset($params['property'])) return "no property"; //no param $prop = $params['property']; $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); if(count($items) == 0) return "no objects"; $obj_prop = "'".implode("','",$items) . "'"; $sql = "SELECT min(`VALUE`+0.0) res FROM `pvalues` p join objects o on o.id=p.`OBJECT_ID` where `PROPERTY_NAME` like '%.".$prop."' and o.title in ($obj_prop)"; //echo $sql; $rec = SQLSelectOne($sql); return $rec['res'];
if(!isset($params['property'])) return "no property"; //no param $prop = $params['property']; $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); if(count($items) == 0) return "no objects"; $obj_prop = "'".implode("','",$items) . "'"; $sql = "SELECT avg(`VALUE`+0.0) res FROM `pvalues` p join objects o on o.id=p.`OBJECT_ID` where `PROPERTY_NAME` like '%.".$prop."' and o.title in ($obj_prop)"; // and not p.value is null"; //echo $sql; $rec = SQLSelectOne($sql); return (float)$rec['res'];
if(!isset($params['property'])) return "no property"; //no param $prop = $params['property']; $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); if(count($items) == 0) return "no objects"; $obj_prop = "'".implode("','",$items) . "'"; $sql = "SELECT sum(`VALUE`+0.0) res FROM `pvalues` p join objects o on o.id=p.`OBJECT_ID` where `PROPERTY_NAME` like '%.".$prop."' and o.title in ($obj_prop)"; //echo $sql; $rec = SQLSelectOne($sql); return $rec['res'];
if(!isset($params['property'])) return "no property"; //no param $prop = $params['property']; $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); if(count($items) == 0) return "no objects"; $obj_prop = "'".implode("','",$items) . "'"; $sql = "SELECT max(`VALUE`+0.0) res FROM `pvalues` p join objects o on o.id=p.`OBJECT_ID` where `PROPERTY_NAME` like '%.".$prop."' and o.title in ($obj_prop)"; $rec = SQLSelectOne($sql); return $rec['res'];
if(!isset($params['property'])) return 0; //no param $prop = $params['property']; $values = array(); $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); foreach($items as $obj){ //переберем объекты if(null == getObject($obj)){ debmes('getGroupProperty: obj '.$obj.' not find!<br>'); }else{ //$values[] = $obj.".".$prop; $values[$obj.".".$prop] = gg($obj.".".$prop); } } /* echo '<pre>'; print_r($values); echo '</pre>'; */ return $values;
if(!isset($params['mg'])) return "callGroupMethod: no params"; //if(isset($params['details'])) $details = $params['details']);// to do as parameter to method $mtd = $params['mg']; $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); foreach($items as $obj){ //переберем имена объектов группы if(!getObject($obj)){ echo('callGroupMethod: obj '.$obj.' no object <br>'); }else{ usleep(500000); eval('callMethodSafe("'.$obj.'.'.$mtd.'",array("source" =>"'.$params['ORIGINAL_OBJECT_TITLE'].'"));'); } } //if($mtd == 'turnoff') $this->setProperty('status',0); //if($mtd == 'turnon') $this->setProperty('status',1); //return 'callGroupMethod: grp method done';
$this->setProperty('updated',time());
if(!isset($params['property'])) return 0; //no param $prop = $params['property']; if(!isset($params['value'])){ $value = 0; //по умолчанию }else{ $value = $params['value']; } $items = explode(',',$this->getProperty('Items')); //переведем в массив $items = array_map('trim', $items); foreach($items as $obj){ //переберем объекты if(null == getObject($obj)){ debmes('setGroupProperty: obj '.$obj.' not find!<br>'); }else{ $obj_prop = $obj.".".$prop; //object.property sg($obj_prop,$value, 0, $params["ORIGINAL_OBJECT_TITLE"].'.setGroupProperty'); } }
Объекты класса:
Свойства класса:
Методы класса:
if($this->getProperty("status")) { $this->callMethodSafe('turnOff'); }else{ $this->callMethodSafe('turnOn'); }
$this->setProperty('updated',time());
Объекты класса:
if($params['txt']){ $eff = $params['txt']; }else{ $eff = $this->getProperty("Txt"); } include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "TXT ".$eff, 0, 0);
if($params['speed']){ $eff = $params['speed']; }else{ $eff = $this->getProperty("Speed"); } include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "SPD".$eff, 0, 0);
if($params['bri']){ $eff = $params['bri']; }else{ $eff = $this->getProperty("brightness"); } include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "BRI".$eff, 0, 0);
if($params['scale']){ $eff = $params['scale']; }else{ $eff = $this->getProperty("Scale"); } include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "SCA".$eff, 0, 0);
/* * "CURR 7 14 4 50 1 1 1 0 1 21:25:50", где: * CURR - идентификатор команды, CURR - текущее состояние лампы * 7 - номер текущего эффекта * 14 - яркость * 4 - скорость * 50 - масштаб * 1 - признак "матрица включена" * 1 - режим ESP_MODE * 1 - признак USE_NTP (пытаться синхронизировать время по серверам времени в интернете) * 0 - признак "работает таймер" * 1 - признак "кнопка разблокирована" * 21:25:50 - текущее время (если не синхронизировано, показывает время от старта модуляisWeekEnd()*/ $pr = explode(" ",$params['NEW_VALUE']); /* $effects = array ( 0 => "Бeлый cвeт", 1 => "Цвeт", 2 => "Cмeнa цвeтa", 3 => "Бeзyмиe", 4 => "Oблaкa", 5 => "Лaвa", 6 => "Плaзмa", 7 => "Paдyгa 3D", 8 => "Пaвлин", 9 => "3eбpa", 10 => "Лec", 11 => "Oкeaн", 12 => "Mячики", 13 => "Mячики бeз гpaниц", 14 => "Пoпкopн", 15 => "Cпиpaли", 16 => "Пpизмaтa", 17 => "Дымoвыe шaшки", 18 => "Tиxий oкeaн", 19 => "Teни", 20 => "ДHK", 21 => "Cтaя", 22 => "Cтaя и xищник", 23 => "Moтыльки", 24 => "Лaмпa c мoтылькaми", 25 => "3мeйки", 26 => "Nexus", 27 => "Шapы", 28 => "Cинycoид", 29 => "Meтaбoлз", 30 => "Ceвepнoe cияниe", 31 => "Плaзмeннaя лaмпa", 32 => "Лaвoвaя лaмпa", 33 => "Жидкaя лaмпa", 34 => "Жидкaя лaмпa авто", 35 => "Kaпли нa cтeклe", 36 => "Maтpицa", 37 => "Oгoнь 2012", 38 => "Oгoнь 2018", 39 => "Oгoнь 2020", 40 => "Oгoнь", 41 => "Bиxpи плaмeни", 42 => "Paзнoцвeтныe виxpи", 43 => "Maгмa", 44 => "Kипeниe", 45 => "Boдoпaд", 46 => "Boдoпaд 4 в 1", 47 => "Бacceйн", 48 => "Пyльc", 49 => "Paдyжный пyльc", 50 => "Бeлый пyльc", 51 => "Ocциллятop", 52 => "Иcтoчник", 53 => "Фeя", 54 => "Koмeтa", 55 => "Oднoцвeтнaя кoмeтa", 56 => "Двe кoмeты", 57 => "Тpи кoмeты", 58 => "Пpитяжeниe", 59 => "Пapящий oгoнь", 60 => "Bepxoвoй oгoнь", 61 => "Paдyжный змeй", 62 => "Koнфeтти", 63 => "Mepцaниe", 64 => "Дым", 65 => "Paзнoцвeтный дым", 66 => "Пикacco", 67 => "Пикacco 2", 68 => "Kpyги Пикacco", 69 => "Boлны", 70 => "Цвeтныe дpaжe", 71 => "Koдoвый зaмoк", 72 => "Kyбик Pyбикa", 73 => "Tyчкa в бaнкe", 74 => "Гроза в банке", 75 => "Ocaдки", 76 => "Paзнoцвeтный дoждь", 77 => "Cнeгoпaд", 78 => "3вeздoпaд Meтeль", 79 => "Пpыгyны", 80 => "Cвeтлячки", 81 => "Cвeтлячки co шлeйфoм", 82 => "Пeйнтбoл", 83 => "Paдyгa", 84 => "Чacы", 85 => "Бeгyщaя cтpoкa",); $this->setProperty("EffectData",serialize($effects)); */ if($pr[0] == "CURR"){ $this->setProperty("Effect",$pr[1]); //$this->setProperty("NewEffect",$pr[1]); $this->setProperty("brightness",$pr[2]); //$this->setProperty("newBrightness",$pr[2]); $this->setProperty("Speed",$pr[3]); $this->setProperty("Scale",$pr[4]); $this->setProperty("status",$pr[5]); //$this->setProperty("online",$pr[6]); $effects = unserialize($this->getProperty("EffectData")); $eff_name = "".$effects[(int)$pr[1]]; //DebMes($pr[1]." ".$effects[(int)$pr[1]]); $this->setProperty("EffectName",$eff_name); //$this->setProperty("alive",1); }
include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "P_ON", 0, 0);
//callMethod('Lamp1.setEffect', array('effect'=>10)); if(isset($params['effect'])){ $eff = $params['effect']; }elseif(isset($params['NEW_VALUE'])){ $eff = $params['NEW_VALUE']; }else{ $eff = $this->getProperty("effect"); } include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "EFF".$eff, 0, 0);
include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish("LedLamp/LedLamp_004BCB3F/cmnd", "P_OFF", 0, 0);
Свойства класса:
Методы класса:
$this->setProperty("uptime", $params["UPTIME"]); $this->setProperty("rxbytes", $params["RXBYTES"]); $this->setProperty("txbytes", $params["TXBYTES"]); $this->setProperty("router", $params["ROUTER"]); $this->setProperty("net", $params["NET"]); $this->setProperty("frequency", $params["FREQ"]); $this->setProperty("mode", $params["WIFI_MODE"]); $this->setProperty("rssi", $params["RSSI"]);
Свойства класса:
Методы класса:
//запуск оповещения по условиям: //enable=1 $this->setProperty("updated",time()); if(!$params['NEW_VALUE']) return; $ot=$this->object_title; $subj=$this->getProperty('title'); $vol=$this->getProperty('priority'); $body=$this->getProperty('text'); $count = 0; $cnt = $this->getProperty('count'); if(isset($cnt)){ $count = $cnt; } $sw=$this->getProperty('address'); switch ($sw) { case 'file': $filename = "c:/_majordomo/htdocs/cms/texts/msg.txt"; runScript("InFile",array("subject"=>$subj, "body"=>$body, "filename"=>$filename )); break; case 'email': mySendMail('serge.lesnikov@gmail.com','Alice', $subj, $body); break; case 'all': $filename = "c:/_majordomo/htdocs/cms/texts/msg.txt"; runScript("InFile",array("subject"=>$subj, "body"=>$body, "filename"=>$filename )); mySendMail('sergey-lesnikov@yandex.ru','Alice', $subj, $body); runScript('SendTelegram', array("message"=>$subj)); runScript('SendTelegram', array("message"=>$body)); say($subj,$vol); say($body,$vol); registerEvent('Message',$body,1); break; case 'telegram': runScript('SendTelegram', array("message"=>$subj)); runScript('SendTelegram', array("message"=>$body)); break; case 'voice': say($subj,$vol); say($body,$vol); break; case 'event': registerEvent('Message',$body,1/60/60); break; case 'miboard': break; } if($count==0){ $this->setProperty('enable',0); }else{ $this->setProperty('count',$count - 1); }
Объекты класса:
//Получим м последних сообщений и заполним техт 1 == 1;
Свойства класса:
Методы класса:
$ot = $this->object_title; $camAdr = $this->getProperty('Adr'); if ($this->getProperty('snapshotURL')) { $streamURL = $this->getProperty('snapshotURL'); }else{ DebMes($ot.' - не указан адрес снапшота'); return; } $lines = file($streamURL); if(!$lines) { DebMes($ot.' - Не удалось получить снимок'); return; } foreach ($lines as $line_num => $line) { if (preg_match('/img src="(.+?)"/is',$line,$m)) { $snapshotPreviewURL = $m[1]; $snapshotPreviewURL = str_replace('../../..',$camAdr,$snapshotPreviewURL); $fileto = './cms/images/snapshots/'.$ot.'_'.date('Y-m-d-H-i').'.jpg'; if(copy($snapshotPreviewURL,$fileto)){ $this->setProperty('snapshot',$fileto); //$this->setProperty('updated',time()); copy($fileto,DOC_ROOT.'/cms/images/'.$ot.'.jpg'); //статичный адрес последней фотки } } }
Объекты класса:
$ot = "esp0"; $url = "http://192.168.1.77/capture"; //$fileto = './cms/images/snapshots/'.$ot.'_'.date('Y-m-d-H-i').'.jpg'; $fileto = DOC_ROOT."/cms/images/snapshots/".$ot."_".date('Y-m-d-H-i').".jpg"; $ch = curl_init($url); $fp = fopen($fileto, 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); $this->setProperty('snapshot',$fileto); @copy($fileto,DOC_ROOT.'/cms/images/'.$ot.'.jpg'); //статичный адрес последней фотки
//$snap = $this->getProperty('snapshotURL'); $snap = "http://192.168.1.7:44456/image/bs3.jpg"; $fileto = DOC_ROOT."/cms/images/snapshots/cam4_".date('Y-m-d-H-i').".jpg"; $result = getURL($snap,0); SaveFile($fileto, $result); $this->setProperty('snapshot',$fileto); copy($fileto,DOC_ROOT.'/cms/images/cam4.jpg');
//$snap = $this->getProperty('snapshotURL'); $snap = "http://192.168.1.7:44456/image/bs1.jpg"; $fileto = DOC_ROOT."/cms/images/snapshots/cam3_".date('Y-m-d-H-i').".jpg"; $result = getURL($snap,0); SaveFile($fileto, $result); $this->setProperty('snapshot',$fileto); copy($fileto,DOC_ROOT.'/cms/images/cam3.jpg');
//$snap = $this->getProperty('snapshotURL'); $snap = "http://192.168.1.23/webcapture.jpg?command=snap&channel=0&user=admin&password=admin"; $fileto = DOC_ROOT."/cms/images/snapshots/cam2_".date('Y-m-d-H-i').".jpg"; $result = getURL($snap,0); SaveFile($fileto, $result); $this->setProperty('snapshot',$fileto); copy($fileto,DOC_ROOT.'/cms/images/cam2.jpg');
Свойства класса:
Методы класса:
if ($this->getProperty('status')) { $this->callmethodSafe('turnOff'); } else { $this->callmethodSafe('turnOn'); }
$this->setProperty('status', 1);
$this->setProperty('status', 0);
$this->setProperty('volume',(int)$params['value']);
$this->setProperty('channel_num',(int)$params['value']);
//$this->setProperty("updated",time());
$this->setProperty('source',$params['value']);
Объекты класса:
$v = explode("/", $params['NEW_VALUE']); $linked_room = gg($v[1].'.LinkedRoom'); if($v[0] == 'person'){ registerEvent('inhouseMovement', $details=gg($linked_room.'.title').'/'.$v[1].'/detect',$expire_in=1); if( $linked_room == 'Kitchen'){ sg('motiondetect3.value',1,0,'test_event.valueChanged person'); setTimeOut('md3_clean',"sg('motiondetect3.value',0,0,'test_event.valueChanged clear');",3*65); } if( $linked_room == 'Verand'){ sg('motiondetect6.value',1,0,'test_event.valueChanged person'); setTimeOut('md6_clean',"sg('motiondetect6.value',0,0,'test_event.valueChanged clear');",3*60); } if( $linked_room == 'Cabinet'){ sg('motiondetect9.value',1,0,'test_event.valueChanged person'); setTimeOut('md9_clean',"sg('motiondetect9.value',0,0,'test_event.valueChanged clear');",3*65); //runScriptSafe("detection",array('image'=> 'c:/_majordomo/htdocs/cms/images/cam3.jpg','from'=>'cam3')); } } if($v[0] == 'dog'){ if( $linked_room == 'Verand'){ if(gg('Outside.Temperature')<15 && (time() - registeredEventTime('DogBehindDoor')) > 10*60 && (time() - registeredEventTime('Door/Open')) > 1*60) { say('Зверь смотрит в дверь!',1); runScriptSafe("detection",array('image'=> 'c:/_majordomo/htdocs/cms/images/cam2.jpg','from'=>'cam2')); rs("OpenDoorPlease"); } registerEvent('DogBehindDoor', $details='Крыльцо/'.$v[1].'/detect',$expire_in=1); sg('motiondetect6.value',1,0,'test_event.valueChanged dog'); setTimeOut('md6_clean',"sg('motiondetect6.value',0,0,'test_event.valueChanged clear');",3*60); } } if($v[0] == 'cat'){ if( $linked_room == 'Verand'){ if(gg('Outside.Temperature')<15 && (time() - registeredEventTime('CatBehindDoor')) > 10*60 && (time() - registeredEventTime('Door/Open')) > 1*60){ say('Младший брат под дверью!',1); runScriptSafe("detection",array('image'=> 'c:/_majordomo/htdocs/cms/images/cam2.jpg','from'=>'cam2')); rs("OpenDoorPlease"); } registerEvent('CatBehindDoor', $details='Крыльцо/'.$v[1].'/detect',$expire_in=1); } }
//$this->setProperty('value', $params['value']); DebMes("пришла команда от пульта яндекса: канал ".$params['value']); if( $params['value'] == 0) return; $sc = $params['value']; switch ($sc){ case 60: sleep(3); runScriptSafe("reportStatus"); break; case 70: //sleep(3); runScriptSafe("irbis70"); //Как дела? break; case 79: runScriptSafe("irbisTV", array("channel" => 25)); //Моя планета break; case 81: runScriptSafe("goodNight"); break; case 82: runScriptSafe('Включить подсветку в кабинете'); break; case 83: runScriptSafe('Выключить подсветку в кабинете'); break; case 84: runScriptSafe('setBrDim100'); break; case 85: runScriptSafe('setBrDim50'); break; case 90: //select tv input brLinkCommand('pro_sel_tv'); break; case 91: //select hdmi1 input brLinkCommand('pro_sel_hdmi1');//Алиса, включи камеру break; case 92: //select hdmi2 input brLinkCommand('pro_sel_hdmi2');//Алиса, включи камеру break; case 93: ask('что изволите?'); //Алиса, служи break; default: runScriptSafe("irbisTV", array('channel' => (int)$sc)); }
Свойства класса:
Методы класса:
//debmes($params);
if($params['NEW_VALUE'] != $params['OLD_VALUE']) { $this->setProperty('updated', time()); //real moving only } if($params['NEW_VALUE'] == 1) { if ($this->getProperty("IdleDelay")) { $activity_timeout = (int)$this->getProperty("IdleDelay"); }else{ $activity_timeout = 10*60; //default 10 minutes } $ot = $this->object_title; setTimeOut($ot."_activity_timeout","sg('".$ot.".SomebodyHere', 0, 0, 'by idle timer');", $activity_timeout); if($params['OLD_VALUE'] == 0) $this->callMethod('onActivity'); }else{ if($params['OLD_VALUE'] == 1) $this->callMethod('onIdle'); }
$this->setProperty('color', 'blue');
$this->setProperty('color', 'orange');
Объекты класса:
//if(timeBetween("19:30","02:45")){ if(gg('DarknessMode.active')){ callMethod("YandexLamp1.turnOn"); }
callMethod("YandexLamp1.turnOff"); callMethod("Lamp1.turnOff"); callMethod("noorelay2.turnOff");
if(gg("EcoMode.active")){ say('Выключу свет через 5 минут!',1); setTimeOut("noorelay4_turnOff_auto",'callMethod("noorelay4.turnOff");',5*60); } cm('noodimmer0.turnoff');
// cm('noodimmer0.turnon'); if(timeBetween("02:00","07:00")){ sg("noodimmer0.level", 10); }elseif(timeBetween("22:00","02:00")){ sg("noodimmer0.level", 15); }else{ sg("noodimmer0.level", 95); } cm('noodimmer0.turnon');
Свойства класса:
Методы класса:
//$this->setProperty("updatedTimestamp",time());
Объекты класса:
//Доставка@ВкусВилл@Ориентировочное время доставки заказа №169840114-1 с 15:25 до 15:50@ $notes = explode("@", $params['NEW_VALUE']); if($notes[0] == 'Доставка' && $notes[1] == 'ВкусВилл'){ $re = '/Ориентировочное время доставки заказа №(.+) с (\d+:\d+) до (\d+:\d+)/su'; $str = $notes[2]; if(preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0)){ $myDateTime = date_create_from_format('d.m.Y H:i', date('d.m.Y').' '.$matches[2][0]); $dt1 = date_format($myDateTime,'Y-m-d H:i:00'); $myDateTime = date_create_from_format('d.m.Y H:i', date('d.m.Y').' '.$matches[3][0]); $dt2 = date_format($myDateTime,'Y-m-d H:i:00'); }else{ $re = '/Мы получили ваш заказ №(.+) на (\d+.\d+.\d+)\. Спишем стоимость покупки после сборки и доставим c (\d+:\d+) до (\d+:\d+)(.+)/us'; $str = $notes[2];//'Мы получили ваш заказ №169840114-1 на 21.05.2023. Спишем стоимость покупки после сборки и доставим c 14:11 до 16:11'; if(preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0)){ //echo '<pre>'; // print_r($matches); $myDateTime = date_create_from_format('d.m.Y H:i', $matches[2][0].' '.$matches[3][0]); $dt1 = date_format($myDateTime,'Y-m-d H:i:00'); $myDateTime = date_create_from_format('d.m.Y H:i', $matches[2][0].' '.$matches[4][0]); $dt2 = date_format($myDateTime,'Y-m-d H:i:00'); } } if(isset($matches[1][0]) && isset($dt1) && isset($dt2)){ $tsk = array( 'TITLE' => "Заказ Вкусвилл ".$matches[1][0]." из приложения", 'DUE' => $dt1, 'END_TIME' => $dt2, 'NOTES' => "<a href='https://vkusvill.ru/personal/orders/' target='_blank'>к заказам Вкусвилла</a>", 'AUTODONE' => 1, //autoends at end_time and done_code execs 'IS_REMIND' => 1, 'REMIND_TIMER' => 4,// напомним за час 'CATEGORY' => "Заказы", // ... and so on ); include_once(DIR_MODULES . 'todoer/todoer.class.php'); $todo = new todoer(); $todo->create_new_task($tsk, 1); say("Задача добавлена в календарь",2); } }
$rec = SQLSelectOne("SELECT * FROM `pvalues` WHERE `PROPERTY_NAME`='T2rate.value'"); //приведём всё к 1 дню месяца if($rec['ID']){ $hid = $rec['ID']; DebMes('T2rate.valueChanged v '.$rec['UPDATED'].'-->'.date('Y-m-01 00:00:00',strtotime($rec['UPDATED']))); $rec['UPDATED'] = date('Y-m-01 00:00:00',strtotime($rec['UPDATED'])); SQLUpdate('pvalues',$rec); sleep(2);//bad i know( $rec = SQLSelectOne("SELECT * FROM `phistory` WHERE `VALUE_ID`=$hid ORDER BY `ADDED` DESC"); if($rec['ID']){ DebMes('T2rate.valueChanged h '.$rec['ADDED'].'-->'.date('Y-m-01 00:00:00',strtotime($rec['ADDED']))); $rec['ADDED'] = date('Y-m-01 00:00:00',strtotime($rec['ADDED'])); SQLUpdate('phistory',$rec); } }
$rec = SQLSelectOne("SELECT * FROM `pvalues` WHERE `PROPERTY_NAME`='T1rate.value'"); //приведём всё к 1 дню месяца if($rec['ID']){ $hid = $rec['ID']; DebMes('T1rate.valueChanged v '.$rec['UPDATED'].'-->'.date('Y-m-01 00:00:00',strtotime($rec['UPDATED']))); $rec['UPDATED'] = date('Y-m-01 00:00:00',strtotime($rec['UPDATED'])); SQLUpdate('pvalues',$rec); sleep(2);//bad i know( $rec = SQLSelectOne("SELECT * FROM `phistory` WHERE `VALUE_ID`=$hid ORDER BY `ADDED` DESC"); if($rec['ID']){ DebMes('T1rate.valueChanged h '.$rec['ADDED'].'-->'.date('Y-m-01 00:00:00',strtotime($rec['ADDED']))); $rec['ADDED'] = date('Y-m-01 00:00:00',strtotime($rec['ADDED'])); SQLUpdate('phistory',$rec); } } //
$t = $params['NEW_VALUE']; //DebMes($t); $t = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $t); $t = str_replace(['₽','RUR'],'руб.',$t); //$t = str_replace('RUR','руб.',$t); $t = str_replace('+7','телефон +7',$t); echo $t; $msg = explode("//",$t); //echo("<pre>"); $trans = 0; foreach($msg as $key=>$val){ if (str_starts_with($val, 'from:')){ $from = str_replace('from:','',$val); if($from == "Alfa-Bank"){ $trans = 1; $from = "Альфабанк"; } }elseif(str_starts_with($val, 'txt:')){ $txt = str_replace('txt:','',$val); } } if($trans) $txt = lat2ru($txt); echo $from."-> ".$txt."<br>"; say("Новое СМС - отправитель ".$from.". ".$txt,2); if($from == "VPROK.RU"){ //Заказ 183701395 (7123.00₽) сегодня в 14:00-18:00 доставит Алексей (+74952878139, а/м Е812УС799). Время доставки s.vprok.ru/u62r $re = '/Заказ (\d+) \((.+)\) доставим (\d+.\d+.\d+) в период (.+)-(.+)/su'; $str = $txt; //'Заказ 145135678 (7504.00₽) доставим 03.09.2022 в период 12:00-16:00'; if(preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0)){ $myDateTime = date_create_from_format('d.m.Y H:i', $matches[3][0].' '.$matches[4][0]); $dt1 = date_format($myDateTime,'Y-m-d H:i:00'); $myDateTime = date_create_from_format('d.m.Y H:i', $matches[3][0].' '.$matches[5][0]); $dt2 = date_format($myDateTime,'Y-m-d H:i:00'); if($matches[1][0]){ $txt .= " <a href='https://www.vprok.ru/profile/orders/status/" . $matches[1][0] ."' target='_blank'>К заказу</a>"; } $tsk = array( 'TITLE' => "Заказ Перекресток ".$matches[1][0]." из смс", 'DUE' => $dt1, 'END_TIME' => $dt2, 'NOTES' => $txt,//your notes // 'BEGIN_CODE' => "say('задача началась!',1);", //code for beginning // 'DONE_CODE' => "say('задача закончена!',1);", //code for ending 'AUTODONE' => 1, //autoends at end_time and done_code execs 'IS_REMIND' => 1, 'REMIND_TIMER' => 4,// напомним за час //'REMIND_TIME' => date('Y-m-d H:i:00', strtotime($dt1) - 60*60), // напомним за час 'CATEGORY' => "Заказы", // ... and so on ); include_once(DIR_MODULES . 'todoer/todoer.class.php'); $todo = new todoer(); $todo->create_new_task($tsk); say("Задача добавлена в календарь",2); } // //Заказ 183701395 (7123.00₽) сегодня в 14:00-18:00 доставит Алексей (+74952878139, а/м Е812УС799). Время доставки s.vprok.ru/u62r $re = '/Заказ (\d+) \((.+)\) сегодня в (\d+:\d+)-(\d+:\d+) доставит (.+)/su'; $str = $txt; //'Заказ 145135678 (7504.00₽) доставим 03.09.2022 в период 12:00-16:00'; if(preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0)){ $myDateTime = date_create_from_format('d.m.Y H:i', date('d.m.Y').' '.$matches[3][0]); $dt1 = date_format($myDateTime,'Y-m-d H:i:00'); $myDateTime = date_create_from_format('d.m.Y H:i', date('d.m.Y').' '.$matches[4][0]); $dt2 = date_format($myDateTime,'Y-m-d H:i:00'); if($matches[1][0]){ $txt .= " <a href='https://www.vprok.ru/profile/orders/status/" . $matches[1][0] ."' target='_blank'>К заказу</a>"; } $tsk = array( 'TITLE' => "Заказ Перекресток ".$matches[1][0]." из смс", 'DUE' => $dt1, 'END_TIME' => $dt2, 'NOTES' => $txt,//your notes // 'BEGIN_CODE' => "say('задача началась!',1);", //code for beginning // 'DONE_CODE' => "say('задача закончена!',1);", //code for ending 'AUTODONE' => 1, //autoends at end_time and done_code execs 'IS_REMIND' => 1, 'REMIND_TIMER' => 4,// напомним за час //'REMIND_TIME' => date('Y-m-d H:i:00', strtotime($dt1) - 60*60), // напомним за час 'CATEGORY' => "Заказы", // ... and so on ); include_once(DIR_MODULES . 'todoer/todoer.class.php'); $todo = new todoer(); $todo->create_new_task($tsk); say("Задача добавлена в календарь",2); } } //LEROYMERLIN if($from == "LEROYMERLIN"){ $re = '/Ваш заказ (\d+) будет доставлен (\d+.\d+.\d+), (\d+:\d+)-(\d+:\d+)./isu'; $str = $txt; //'Ваш заказ 221097047289 будет доставлен 25.10.22, 08:00-16:00. Отследить: if(preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0)){ $myDateTime = date_create_from_format('d.m.y H:i', $matches[2][0].' '.$matches[3][0]); $dt1 = date_format($myDateTime,'Y-m-d H:i:00'); $myDateTime = date_create_from_format('d.m.y H:i', $matches[2][0].' '.$matches[4][0]); $dt2 = date_format($myDateTime,'Y-m-d H:i:00'); //////////////////////// $re = '/txt:(.+)/isu'; $txt1 = "Подробности - в телефоне"; if( preg_match_all($re, $params['NEW_VALUE'], $matches, PREG_SET_ORDER, 0)){ $txt1 = $matches[0][1]; } /////////////////////// $tsk = array( 'TITLE' => "Заказ Леруа Мерлин ".$matches[1][0]." из смс", 'DUE' => $dt1, //or comment if IS_NODATE=1 'END_TIME' => $dt2, //or comment if IS_NODATE=1 'NOTES' => $txt1,//your notes // 'BEGIN_CODE' => "say('задача началась!',1);", //code for beginning // 'DONE_CODE' => "say('задача закончена!',1);", //code for ending 'AUTODONE' => 1, //autoends at end_time and done_code execs 'IS_REMIND' => 1, 'REMIND_TIMER' => 10, 'REMIND_TIME' => date('Y-m-d H:i:00', strtotime($dt1) - 60*60), // напомним за час 'CATEGORY' => "Заказы", // ... and so on ); include_once(DIR_MODULES . 'todoer/todoer.class.php'); $todo = new todoer(); $todo->create_new_task($tsk); say("Задача добавлена в календарь",2); } }
Свойства класса:
Методы класса:
$this->setProperty('updated',time()); //$this->setProperty('updatedTime',date('H:i',time()));
$this->setProperty('updated',time()); //$this->setProperty('updatedTime',date('H:i')); $ot = $this->object_title; //$noosw = $this->getProperty('nooSwitch'); //$name = gg($noosw.'.name'); $linked_room = $this->getProperty('linkedroom'); if(strlen($linked_room)>0 && gg($ot.'.Activity')){ //кто-то в комнате sg($linked_room.'.SomebodyHere',1); registerEvent('inhouseMovement', $details = gg($linked_room.'.Title').'/'.$ot.'/switch',$expire_in=1/24); }
$this->setProperty('updated',time()); //$this->setProperty('updatedTime',date('H:i'));
$this->setProperty('updated',time()); //$this->setProperty('updatedTime',date('H:i',time())); $ot = $this->object_title; $noosw = $this->getProperty('nooSwitch'); if(strlen($noosw)>0){ $name = getObject($noosw)->getProperty('name'); //регистрируем, что выключено через пульт sg($noosw.'.status',0,0,'manually'); say('Объект '.$name.' выключен вручную'); } $linked_room = $this->getProperty('linkedroom'); if(strlen($linked_room)>0 && gg($ot.'.Activity')){ //кто-то в комнате sg($linked_room.'.SomebodyHere',1); registerEvent('inhouseMovement', $details=gg($linked_room.'.Title').'/'.$ot.'/switch',$expire_in=1/24); }
$this->setProperty('updated',time()); //$this->setProperty('updatedTime',date('H:i',time())); //switch_manual linked Noo $ot = $this->object_title; $noosw = $this->getProperty('nooSwitch'); if(strlen($noosw)>0){ $name = getObject($noosw)->getProperty('name'); //регистрируем, что включено через пульт sg($noosw.'.status',1,0,'manually'); say('Объект '.$name.' включен вручную'); if(timeOutResidue("job_DarknessMode_activate")>2*60*60 && gg("EcoMode.active")){ //до темна более часа say('Ведь светло ещё? Выключу через 5 минут!',2); setTimeOut($noosw."_turnOff_auto",'callMethod("'.$noosw.'.turnOff");',5*60); } } $linked_room = $this->getProperty('linkedroom'); if(strlen($linked_room)>0 && gg($ot.'.Activity')){ //кто-то в комнате sg($linked_room.'.SomebodyHere',1,0,$ot.' NooRemotes onTurnOn'); registerEvent('inhouseMovement', $details = gg($linked_room.'.Title').'/'.$ot.'/switch',$expire_in=1/24); }
$this->setProperty('updated',time()); //$this->setProperty('updatedTime',date('H:i')); $ot = $this->object_title; $noosw = $this->getProperty('nooSwitch'); if(strlen($noosw)>0){ //регистрируем, что включено через пульт $tmp = getObject($noosw)->getProperty('status'); $name = getObject($noosw)->getProperty('name'); if ($tmp) { sg($noosw.'.status',0,0,'manually'); $tmp = 'выключен'; } else { sg($noosw.'.status',1,0,'manually'); $tmp = 'включен'; if(timeOutResidue("job_DarknessMode_activate")>2*60*60 && gg("EcoMode.active")){ //до темна более часа say('Ведь светло ещё? Выключу через 5 минут!',1); setTimeOut($noosw."_turnOff_auto",'callMethod("'.$noosw.'.turnOff");',5*60); } } say('Объект '.$name.' '.$tmp.' вручную'); } $linked_room = $this->getProperty('linkedroom'); if(strlen($linked_room)>0 && gg($ot.'.Activity')){ //кто-то в комнате sg($linked_room.'.SomebodyHere',1); registerEvent('inhouseMovement', $details=gg($linked_room.'.Title').'/'.$ot.'/switch',$expire_in=1/24); }
Объекты класса:
//Дверь закрыта cm('Door.OnClose');
//Дверь открыта cm('Door.OnOpen');
say(gg('NooPult1.but3long'),0,1);
say(gg('NooPult1.but3click'),0,1);
say(gg('NooPult1.but2long'),0,1);
say(gg('NooPult1.but2click'),0,1);
say(gg('NooPult1.but1click'),0,1);
say(gg('NooPult1.but1long'),0,1);
//sg('noorelay6.regime',0); callMethod("noorelay6.turnOff"); clearTimeOut('noorelay6_auto'); //отключим автомат от дд say('Объект Люстра в прихожей выключена вручную');
callMethod("noorelay6.switch"); clearTimeOut('noorelay6_auto'); //отключим автомат от дд say('Объект Люстра в прихожей переключена вручную');
cm("YandexLamp2.switch"); sleep(2); cm("YandexLamp3.switch"); say('Бра на кухне переключена вручную');
cm("YandexLamp2.turnOff"); sleep(2); cm("YandexLamp3.turnOff"); say('Бра на кухне выключена вручную');
Свойства класса:
Методы класса:
DebMes('parent onRegChanged '.$params['NEW_VALUE']); $d = $params['NEW_VALUE']; if($d==0){ $this->callMethod('deactivate'); }elseif($d==1){ $this->callMethod('activate'); }
if ($this->getProperty("active")) $this->callMethod("deactivate"); else $this->callMethod("activate");
$this->setProperty('active', 1);
$this->setProperty('active', 0);
$this->setProperty("updated",time()); if ($params['NEW_VALUE']) { say("Режим ".$this->getProperty('title')." включен"); } else { say("Режим ".$this->getProperty('title')." выключен"); }
Объекты класса:
say('Режим спячки',0); setGlobal('ThisComputer.minMsgLevel',3); //callMethod("ThisComputer.ChangeVolumeLevel",array("VALUE"=>15)); sg("ThisComputer.volumeLevelMain",15); callMethod('TVInfoMode.deactivate'); callMethod("NooRGB0.turnOff");
DebMes('onRegChanged'.$params['NEW_VALUE']);
myclearScheduledJob("next_film_%"); myclearScheduledJob("next_match_%");
say("Электричество подешевело!", 1); $objects = getObjectsByClass("PIDController"); foreach($objects as $obj) { if(getGlobal($obj['TITLE'].".mode") == 3) { sg($obj['TITLE'].".active", 1, 0, 'NightTariffMode activate'); debmes($obj['TITLE'].' <--NightTariffMode activate'); } } $objects = getObjectsByClass("NooThermostats"); foreach($objects as $obj) { if(getGlobal($obj['TITLE'].".mode") == 3) { sg($obj['TITLE'].".auto", 1, 0, 'NightTariffMode activate'); cm($obj['TITLE'].".turnOn"); debmes($obj['TITLE'].' <--NightTariffMode activate'); } } cm('tsmRelay19.turnOn'); //бойлер в ванной /* if(gg("Outside.Temperature") < 5){ $value = gg('ThisComputer.somebodyHomeText') ; if(strpos($value,'Глеб') || strpos($value,'Алёна')){ sg("Thermo_1.mode", 1); say("Температура в большой комнате установлена на 22 градуса",1); } if(strpos($value,'Валя') || strpos($value,'Гриша')) { sg("pid3.setPoint", 18); sg("pid3.active", 1); say("Термостат у Вали включен", 1); } sg("Thermo_0.tempWork", 19); sg("Thermo_0.mode", 1); say("Температура в спальне установлена на 19 градусов", 1); //выключится вместе с тихим режимом } */
$objects = getObjectsByClass("PIDController"); foreach($objects as $obj) { if(getGlobal($obj['TITLE'].".mode") == 3) { sg($obj['TITLE'].".active", 0, 0, 'NightTariffMode deactivate'); debmes($obj['TITLE'].' <--NightTariffMode deactivate'); } } $objects = getObjectsByClass("NooThermostats"); foreach($objects as $obj) { if(getGlobal($obj['TITLE'].".mode") == 3) { sg($obj['TITLE'].".auto", 0, 0, 'NightTariffMode deactivate'); cm($obj['TITLE'].".turnOff"); debmes($obj['TITLE'].' <--NightTariffMode deactivate'); } } /* if(gg("Outside.Temperature")<5){ $value = gg('ThisComputer.somebodyHomeText') ; if(strpos($value,'Гриша')){ //Поповы тут }else{ sg("Thermo_1.mode",2); say("В большой комнате установлен режим экономии", 1); } sg("pid1.active", 2); sg("pid2.active", 2); sg("pid4.active", 2); if(strpos($value,'Валя')){ //Валя тут }else{ cm("Yandex4.turnOff"); sg("pid3.active", 0); say("Термостат у Вали выключен", 1); } } */
if(gg('SleepMode.active')){ cm('grpSunrise.callGroupMethod',array('mg'=>'turnOff')); }else{//если не спят, выключим улицу cm('grpOutside.callGroupMethod',array('mg'=>'turnOff')); } geturl("http://192.168.1.7/api/module/mboard_pro/theme/light",0); return; /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/darknessmode_deactivate.php'); /* end injection of {SDevices} */
Settimeout('StreetLightOn2', "cm('noorelay3.turnon');", (10 - gg('weather_my.clouds')) * 60 + 1); //крыльцо winter *0.3 cm('grpEvening.callGroupMethod', array('mg'=>'turnOn')); geturl("http://192.168.1.7/api/module/mboard_pro/theme/dark", 0); return; /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/darknessmode_activate.php'); /* end injection of {SDevices} */
setGlobal('ThisComputer.minMsgLevel', 1); sg("ThisComputer.volumeLevelMain",70); say('Установлен стандартный уровень сообщений', 2); callMethod('TVInfoMode.activate'); callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'установи громкость 5')); callAPI('/api/module/yadevices','GET',array('station'=>2,'command'=>'установи громкость 5')); // sg("Thermo_0.tempWork",19); sg("Thermo_0.mode", 2); say("Понизим температуру в спальне");
say('Тихий режим',2); setGlobal('ThisComputer.minMsgLevel',3); //callMethod("ThisComputer.ChangeVolumeLevel",array("VALUE"=>20)); sg("ThisComputer.volumeLevelMain",20); callMethod('TVInfoMode.deactivate'); callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'установи громкость 3')); callAPI('/api/module/yadevices','GET',array('station'=>2,'command'=>'установи громкость 3')); sleep(3); //say_irbis('установлена вечерняя громкость'); //callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'повтори за мной установлена вечерняя громкость')); sg("Thermo_0.mode", 1); say("Повысим температуру в спальне");
cm('grpEco.callGroupMethod',array('mg'=>'turnOff'));
Свойства класса:
Методы класса:
if($params['NEW_VALUE'] == 2){//эко $this->setProperty('setPoint',17); $this->setProperty("active",1); } if($params['NEW_VALUE'] == 1){//работа термостата $this->setProperty("active",1); } if($params['NEW_VALUE'] == 0){//не работает $this->setProperty("active", 0); $linkedRelay = $this->getProperty('linkedRelay'); setTimeOut($linkedRelay.'_pid','cm("'.$linkedRelay.'.turnOff");',1); } if($params['NEW_VALUE'] == 3){//работает при дешёвом тарифе/управляется из смены тарифа if(gg('NightTariffMode.active')) { $this->setProperty("active", 1); }else{ $this->setProperty("active", 0); } }
if($params['NEW_VALUE'] != $params['OLD_VALUE']){ $this->setProperty('Ipart',0); $txt = str_replace('.',',',$params['NEW_VALUE']); say($this->getProperty('Name').' - температура установлена на '.$txt.' °C'); }
if(!$this->getProperty("active")){ return; } $linkedRelay = $this->getProperty('linkedRelay'); if(!$linkedRelay){ return; } $inputVal = (float)$params['NEW_VALUE']; //текущее значение регулируемой величины $setPoint = (float)$this->getProperty("setPoint"); //целевое значение регулируемой величины $Ipart = (float)$this->getProperty("Ipart"); //накопитель ошибок для интегральной составляющей $minSaturation = 0.0; //(float)$this->getProperty("minSaturation"); //min output $maxSaturation = 100.0; //(float)$this->getProperty("maxSaturation"); //max output $kp = (float)$this->getProperty("proportional"); $ki = (float)$this->getProperty("integral"); //* $period; <--мы всегда работаем с периодом=1 $kd = (float)$this->getProperty("differential"); // / $period; $error = $setPoint - $inputVal; //текущая ошибка $Ipart += $error; //сумма ошибок для интегральной части if($Ipart > 1.0) $Ipart = 1.0; if($Ipart < -1.0) $Ipart = -1.0; $this->setProperty("Ipart", $Ipart); //запомним накопленную сумму ошибок $dE = $error - ($setPoint - $params['OLD_VALUE']); // дельта ошибок для дифф. части $result = $kp * $error + $ki * $Ipart + $kd * $dE; if($result>1.0){$result = 1.0;}//приведем к диапазону 0..1 if($result<0.0){$result = 0.0;} //$result = round($result * ($maxSaturation - $minSaturation) + $minSaturation); //приведем к заданному диапазону $result = round($result * 100); //приведем к заданному диапазону //////////////////////////// //20210923 $period = time() - $this->getProperty("lastRun"); $this->setProperty("lastRun", time()); //$this->setProperty("lastInput", $inputVal); //запомним последнее значение регулируемой величины $this->setProperty("PID", $result); ////////////////////// clearTimeOut($linkedRelay.'_pid'); $timeSample = $period/100; //$this->getProperty('period') / 100; //ШИМ if($result==0){ cm($linkedRelay.'.turnOff'); }else{ //cm($linkedRelay.'.turnOn'); setTimeOut($linkedRelay.'_pid_start','cm("'.$linkedRelay.'.turnOn");',rand(0,8));//20230122 if($result < 100){ //20211114 setTimeOut($linkedRelay.'_pid','cm("'.$linkedRelay.'.turnOff");',round($result * $timeSample)); }else{ setTimeOut($linkedRelay.'_pid','cm("'.$linkedRelay.'.turnOff");',$period + 10); //подстрахуемся } //приведём к 5-секундным интервалам для noo //$parts5s = func($result, $period) //cm($rl.'.temporaryOn',array('tm'=>$parts5s)); }
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
$new_value = (float)$params['NEW_VALUE']; $old_value = (float)$params['OLD_VALUE']; if($new_value == $old_value) return; $value_id = (int)getHistoryValueId("Mercury200.T2"); $prevUpdated = registeredEventTime("T2/updated"); if($prevUpdated && (date('Ym') == date('Ym',$prevUpdated))) { // } else { //"закроем" предыдущий месяц DebMes('close prev month t2 '); SQLExec("update phistory set ADDED=concat(last_day(`ADDED`),' 23:59:59') where VALUE_ID=$value_id and month(ADDED)!=month(now())"); } //оставим последнее значение за месяц $first = date('Y-m-01 00:00:00');//начало месяца $last = date("Y-m-d H:i:s" , time() - 2 * 60);//оставить последнее с учётом задержки записи if($last > $first) { //для Т2 только SQLExec( "DELETE FROM `phistory` WHERE `VALUE_ID`=$value_id AND `ADDED`<'$last' AND `ADDED`>='$first';"); } registerEvent("T2/updated",'',1);
$value = $params['VALUE']; if($value == 0) return; if($params['NEW_VALUE'] == $params['OLD_VALUE'] && date("j")>1) return; $this->setProperty('T1',$value);//показания счетчика sg("T1.value",$value);//для подсчета расхода
$value = $params['VALUE']; if($value == 0) return; if($params['NEW_VALUE'] == $params['OLD_VALUE']) return; $this->setProperty('T2',$value); sg("T2.value",$value);
$ot = "Mercury200"; $new_value = (float)$params['NEW_VALUE']; $old_value = (float)$params['OLD_VALUE']; //if($new_value == 0) return; //del? check in income $delta = $new_value - $old_value; if($delta == 0) return;//nothing to do $history_values = array( 'valueHour'=>date('Y-m-d H:00:00'), 'valueDay'=>date('Y-m-d 00:00:00'), 'valueMonth'=>date('Y-m-01 00:00:00') ); foreach ($history_values as $history_value=>$time) { $value_id = (int)getHistoryValueId($ot . '.' . $history_value); //последнее значение в нашем интервале $val1 = SQLSelectOne("SELECT ID, VALUE FROM pvalues WHERE ID='" . $value_id . "' AND UPDATED>='" . $time . "' order by UPDATED desc"); if ($val1['ID']) { //нашли, очистим наш интервал в истории SQLExec("DELETE FROM phistory WHERE VALUE_ID=$value_id AND ADDED>='" . $time . "'"); //к последнему значению добавим изменение $set_value = $val1['VALUE'] + $delta; $set_value = round($set_value, 2); $this->setProperty($history_value, $set_value);//запомним новое в истории с новым временем обновления } else { $set_value = $delta; $set_value = round($set_value, 2); $this->setProperty($history_value, $set_value); } }
$new_value = (float)$params['NEW_VALUE']; $old_value = (float)$params['OLD_VALUE']; if(($new_value - $old_value) == 0 && date("j")>1) return; $value_id = (int)getHistoryValueId("Mercury200.T1"); $first = date('Y-m-01 00:00:00');//начало месяца $last = date("Y-m-d H:i:s",time()-2*60); $prevUpdated = registeredEventTime("T1/updated"); if($prevUpdated && (date('Ym') == date('Ym',$prevUpdated))) { //DebMes('last t1 '.date ('Y-m-d H:i:s',$prevUpdated)); } else { //"закроем" предыдущий месяц DebMes('close prev month t1 '); SQLExec("update phistory set ADDED=concat(last_day(`ADDED`),' 23:59:59') where VALUE_ID=$value_id and month(ADDED)!=month(now())"); } //оставим последнее значение за месяц SQLExec( "DELETE FROM `phistory` WHERE `VALUE_ID`=$value_id AND `ADDED`<'$last' AND `ADDED`>='$first';"); //saveToCache("TMP:T1.updated",time()); registerEvent("T1/updated",'',1);
Свойства класса:
Методы класса:
$answ = $params['NEW_VALUE']; if($answ == '') { return; } //$answ = trim(mb_strtolower($answ, 'utf-8')); DebMes('questExecute responce-'.$answ); if( trim(mb_strtolower($answ, 'utf-8')) == 'да'){ eval($this->getProperty('yes')); }elseif( trim(mb_strtolower($answ, 'utf-8')) == 'нет'){ eval($this->getProperty('no')); }else{ eval($this->getProperty('cancel')); } $this->setProperty('active',0); //
$this->setProperty('active',1); if($this->getProperty('Query')){ //получим ответ да/нет/отмена context_activate(49); }else{ $this->setProperty('active',0); }
Объекты класса:
Свойства класса:
Методы класса:
//debmes("onRegChange relays class ".$this->object_title." --".$d." old--".$params['OLD_VALUE'],"yadevices"); $d = $params['NEW_VALUE']; if($d==0){ $this->callMethod('turnOff'); }elseif($d==1){ $this->callMethod('turnOn'); }
if($params['VALUE']){ $todo = strtolower($params['VALUE']); }else{ $todo = "refresh"; } switch ($todo){ case 'on': $this->callMethod('turnon'); break; case 'off': $this->callMethod('turnoff'); break; case 'switch': $this->callMethod('switch'); break; case 'refresh': $this->callMethod('refresh'); break; default: return; }
$this->setProperty("updated",time());
$this->setProperty("status",1);
$this->setProperty("status",0);
if($this->getProperty("status")) { $this->callMethodSafe('turnOff'); }else{ $this->callMethodSafe('turnOn'); }
$status = $this->getProperty("status"); if ($status == "1") { $this->callMethod('turnOn'); } elseif($status == "0") { $this->callMethod('turnOff'); }
Свойства класса:
Методы класса:
Объекты класса:
brLinkCommand('vent_mode'); $md = $this->getProperty("mode"); $md = ($md > 1) ? 0: $md + 1; $this->setProperty('mode', $md);
brLinkCommand('vent_onoff');
brLinkCommand('vent_onoff');
brLinkCommand('vent_onoff'); $this->setProperty('mode',0);
Свойства класса:
Методы класса:
//через noolite one $tm = 1; if($params['tm']) $tm = $params['tm']; $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $cmd = $mode." 0 0 ".$ch." 25 5 $tm 0 0 0 00000000 0"; sendNooAPICmd($cmd,$this->object_title); if($mode == 0){ $this->setProperty("status",1,0,'temporaryOn '.$tm); } //todo setTimeOut( for status
//через noolite one $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $cmd = $mode." 0 0 ".$ch." 2 0 0 0 0 0 00000000 0"; sendNooAPICmd($cmd,$this->object_title); $pow = (int)$this->getProperty("power"); if($pow > 0) { $this->setProperty("powerNow",$pow); }
$ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $cmd = $mode." 0 0 ".$ch." 0 0 0 0 0 0 00000000 0"; sendNooAPICmd($cmd,$this->object_title); $pow = (int)$this->getProperty("power"); if($pow > 0) { $this->setProperty("powerNow", 0); }
Объекты класса:
if(gg('DarknessMode.active') && gg('QuietMode.active')){ setTimeOut('md3_clean',"sg('motiondetect3.value',0,0,'noorelay1.turnoff');",3*65); }
Свойства класса:
Методы класса:
//$params['src']=='yandex' if (!isset($params['value'])) return; $new_level = $params['value']; if ($new_level>=0 && $new_level<=100) { $this->setProperty('level',$new_level); }
$level = $params['NEW_VALUE']; // $this->getProperty('level'); // $minWork = $this->getProperty('minWork'); $maxWork = $this->getProperty('maxWork'); if ($minWork != $maxWork) { $levelWork = floor($minWork + ($maxWork - $minWork) * $level / 100); $this->setProperty('levelWork', $levelWork); $this->setProperty('brightness', $levelWork); }
//DebMes('parent onBrChange fired! br='.$params['NEW_VALUE'].' source='.$params['SOURCE']); //DebMes('---------------------'); //DebMes(json_encode($params)); //DebMes('---------------------'); //DebMes(json_encode($this)); //debmes('set param bright='.$br); $br = $params['NEW_VALUE']; if($this->getProperty('status') == 1){//поменяем на ходу $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; if(!isset($br)) $br = 0; $com = 0; $cmd = 6; $fmt = 1; $d0 = $br; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; //DebMes('cmd='.$cmd); sendNooAPICmd($cmd,$this->object_title,"noodimmers.onBrChange"); } //$this->setProperty('status',($br==0)?0:1);//статус устанавливается в скрипте noodataF
$ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $br = $this->getProperty("brightness"); if($br == 0) $br = 155; $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 6; $fmt = 1; $d0 = $br; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; sendNooAPICmd($cmd,$this->object_title,"noodimmers.turnon");
$ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 0; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; sendNooAPICmd($cmd,$this->object_title,"noodimmers.turnoff");
Свойства класса:
Методы класса:
$color = $this->getProperty('color'); $hsv = hexToHsv($color); if ($hsv && is_array($hsv)) { $this->setProperty('hue', intval($hsv[0])); $this->setProperty('saturation', intval($hsv[1] * 100)); $this->setProperty('lightness', intval($hsv[2] * 100)); }
if($params['NEW_VALUE'] == '000000'){ //$this->callMethod('turnOff'); }else{ $this->callMethod('turnOn'); }
if (!$params['color']) return; //DebMes('color '.$params['color']); $color = strtolower($params['color']); $color = substr($color,-6); //miboard fix $color = str_replace('#','',$color); //DebMes('color2 '.$color); /* $transform = array( 'red'=>'ff0000', 'green'=>'00ff00', 'blue'=>'0000ff', 'white'=>'ffffff' ); if (isset($transform[$color])) { $color = $transform[$color]; } */ if ($color == '000000') { // $this->callMethod('turnOff'); } else { $this->setProperty('color',$color); //$this->callMethod('turnOn'); }
$color = $this->getProperty('color'); if (!isset($color) || $color=='000000') { $this->setProperty('color','ffffff'); $color = 'ffffff'; } $color = substr($color,-6);//fix miboard $color = hexdec($color); $red = $color >> 16 & 0xFF; $green = $color >> 8 & 0xFF; $blue = $color & 0xFF; //через noolite one $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 6; $fmt = 3; $d0 = $red; $d1 = $green; $d2 = $blue; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; //debmes ('sendNooAPICmd '.$cmd); sendNooAPICmd($cmd,$this->object_title); $this->setProperty('status',1);
//через noolite one $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 18; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; //debmes ('sendNooAPICmd '.$cmd); sendNooAPICmd($cmd,$this->object_title);
//через noolite one $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 19; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; //debmes ('sendNooAPICmd '.$cmd); sendNooAPICmd($cmd,$this->object_title);
//через noolite one $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 16; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; sendNooAPICmd($cmd,$this->object_title);
//через noolite one $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 17; $fmt = 0; $d0 = 0; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; //debmes ('sendNooAPICmd '.$cmd); sendNooAPICmd($cmd,$this->object_title);
Объекты класса:
Свойства класса:
Методы класса:
if($params['NEW_VALUE'] == 1){ $t = $this->getProperty('tempWork'); $this->setProperty('tempSet', $t); $this->callMethod('turnOn'); }elseif($params['NEW_VALUE'] == 2){//эко $t = $this->getProperty('tempEco'); $this->setProperty('tempSet', $t); $this->callMethod('turnOn'); }elseif($params['NEW_VALUE'] == 3){//дёшево $t = $this->getProperty('tempWork'); if(gg('NightTariffMode.active')) { $this->setProperty('tempSet', $t); $this->callMethod('turnOn'); }else{ $this->callMethod('turnOff'); } }else{ $t = $this->getProperty('tempWork'); $this->setProperty('tempSet', $t); $this->callMethod('turnOff'); }
$target = $params['NEW_VALUE']; $ot = $this->object_title; $ch = $this->getProperty('channel'); $adr = $this->getProperty('addr'); $mode = ($adr=='00000000')?0:2; $com = 0; $cmd = 6; $fmt = 1; $d0 = (int)$target; $d1 = 0; $d2 = 0; $d3 = 0; $cmd = $mode." ".$com." 0 ".$ch." ".$cmd." ".$fmt." ".$d0." ".$d1." ".$d2." ".$d3." ".$adr." 0"; setTimeOut("setTemp_".$ot,'sendNooAPICmd("'.$cmd.'","'.$ot.'");',2); $mode = $this->getProperty('mode'); if($mode == 2 ) { $this->setProperty('tempEco', $target); }else{ $this->setProperty('tempWork', $target); }
Объекты класса:
sg('tmp_thermo_1.value',$params['NEW_VALUE']);
sg('tmp_thermo_0.value',$params['NEW_VALUE']);
Свойства класса:
Методы класса:
//cmnd/tasmota_4BD00A/POWER1 $topic = "cmnd/".$this->getProperty("subName"); include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish($topic, "OFF", 0, 0); $pow = (int)$this->getProperty("power"); if($pow > 0) { $this->setProperty("powerNow", 0); }
//cmnd/tasmota_4BD00A/POWER1 $topic = "cmnd/".$this->getProperty("subName"); include_once(DIR_MODULES . 'mqtt/mqtt.class.php'); $mqtt = new mqtt(); $rezult = $mqtt->mqttPublish($topic, "ON", 0, 0); $pow = (int)$this->getProperty("power"); if($pow > 0) { $this->setProperty("powerNow", $pow); }
Объекты класса:
if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); //debmes($sensors); //debmes($sensors['AM2301']['Temperature'].' C'); //debmes($sensors['AM2301']['Humidity'].' %'); //debmes('Switch1 '.$sensors['Switch1']); //$this->setProperty('power', (float)$sensors['ENERGY']['Power']); sg('temp_tsm8BF037.value',$sensors['AM2301']['Temperature']); sg('humidity06.value',$sensors['AM2301']['Humidity']); }
if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); //debmes($sensors); //debmes($sensors['ENERGY']['Current'].' A'); //debmes($sensors['ENERGY']['Power'].' W'); $this->setProperty('power', (float)$sensors['ENERGY']['Power']); //debmes($sensors['ENERGY']['Today'].' kWh'); $this->setProperty('energyToday', (float)$sensors['ENERGY']['Today']); $this->setProperty('energyYesterday', (float)$sensors['ENERGY']['Yesterday']); //sg('boiler2_power.value', (float)$sensors['ENERGY']['Power']); }
if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); //debmes($sensors); //debmes($sensors['ENERGY']['Current'].' A'); //debmes($sensors['ENERGY']['Power'].' W'); $this->setProperty('power', (float)$sensors['ENERGY']['Power']); //debmes($sensors['ENERGY']['Today'].' kWh'); $this->setProperty('energyToday', (float)$sensors['ENERGY']['Today']); $this->setProperty('energyYesterday', (float)$sensors['ENERGY']['Yesterday']); //sg('boiler2_power.value', (float)$sensors['ENERGY']['Power']); }
//tsmRelay20 //refoss2 //debmes($params); if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); //debmes($sensors); //debmes($sensors['ENERGY']['Current'].' A'); //debmes($sensors['ENERGY']['Power'].' W'); $this->setProperty('power', (float)$sensors['ENERGY']['Power']); //debmes($sensors['ENERGY']['Today'].' kWh'); $this->setProperty('energyToday', (float)$sensors['ENERGY']['Today']); $this->setProperty('energyYesterday', (float)$sensors['ENERGY']['Yesterday']); sg('boiler2_power.value', (float)$sensors['ENERGY']['Power']); }
//debmes($params); if(isset($params['VALUE'])){ $sensors = json_decode( $params['VALUE'], true); //debmes($sensors); //debmes($sensors['ENERGY']['Current'].' A'); //debmes($sensors['ENERGY']['Power'].' W'); $this->setProperty('power', (float)$sensors['ENERGY']['Power']); //debmes($sensors['ENERGY']['Today'].' kWh'); $this->setProperty('energyToday', (float)$sensors['ENERGY']['Today']); $this->setProperty('energyYesterday', (float)$sensors['ENERGY']['Yesterday']); sg('boiler_power.value', (float)$sensors['ENERGY']['Power']); }
Методы класса:
debmes('class Tuya.turnOff'); //debmes($params); $this->setProperty('mode', 0, 0, 'from mdm'); $this->setProperty('status', 0, 0, 'from mdm');
debmes('class Tuya.turnOn'); //debmes($params); $this->setProperty('mode', 1, 0, 'from mdm'); $this->setProperty('status', 1, 0, 'from mdm');
if($params['VALUE'] == 1){ $this->setProperty('mode', 1, 0,'from mdm'); }else{ $this->setProperty('mode', 0, 0,'from mdm'); }
debmes('class tuya.onModeChange'); $d = $params['NEW_VALUE']; $src = $params['SOURCE']; // "yadevices.devices.capabilities.on_off" if($d==0){ if($src == "yadevices.devices.capabilities.on_off"){ $this->setProperty('status', 0); /* }else{ $this->callMethod('turnOff', $src); */ } }elseif($d==1){ if($src == "yadevices.devices.capabilities.on_off"){ $this->setProperty('status', 1); } }
Объекты класса:
Свойства класса:
Методы класса:
//debmes("turnOn yandex class --".$params['NEW_VALUE']." old--".$params['OLD_VALUE'],"yadevices"); $this->setProperty("regime",1);
//debmes("turnOff yandex class ".$params['NEW_VALUE']." old--".$params['OLD_VALUE'],"yadevices"); $this->setProperty("regime",0);
$d = $params['NEW_VALUE']; //if( $params['NEW_VALUE'] != $params['OLD_VALUE']) if($d==0){ $this->setProperty("status",0); }elseif($d==1){ $this->setProperty("status",1); }
//callMethod($req_skills['LINKED_OBJECT'].'.'.$req_skills['LINKED_METHOD'], array('NEW_VALUE' => $new_value, 'OLD_VALUE' => $old_value, 'DEVICE_STATE' => $currentStatus, 'UPDATED' => $req_skills['UPDATED'], 'ALLOWPARAMS' => $req_skills['ALLOWPARAMS'], 'MODULE' => $this->name)); DebMes($this->object_title.' NEW_VALUE '. $params['NEW_VALUE']. '--OLD_VALUE '.$params['OLD_VALUE']. '--DEVICE_STATE '.$params['DEVICE_STATE']. '--ALLOWPARAMS '.$params['ALLOWPARAMS']. '--UPDATED '.$params['UPDATED']. '--MODULE '.$params['MODULE']); $d = $params['NEW_VALUE']; if($d==0){ $this->setProperty("status",0); }elseif($d==1){ $this->setProperty("status",1); }
Объекты класса:
Объекты класса:
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SControllers_turnOn.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SControllers_turnOff.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SControllers_switch.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_setTargetTemperature.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_setThermostatMode.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_setFanSpeedMode.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_configUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_fanSpeedUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_thermostatUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_tempUp.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SAirConditioners_tempDown.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDimmers_statusUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDimmers_setLevel.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDimmers_turnOff.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDimmers_turnOn.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDimmers_levelWorkUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDimmers_levelUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SGroups_turnOn.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SGroups_turnOff.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SGroups_switch.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SGroups_statusUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SMedias_pause.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SMedias_setSource.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SMedias_setChannel.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SMedias_setVolume.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/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/SThermostats_turnOff.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_disable.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_turnOn.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_enable.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_valueUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_statusUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_tempUp.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_tempDown.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_switchEnable.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SThermostats_setTargetTemperature.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/STVs_pause.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/STVs_setSource.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/STVs_setChannel.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/STVs_setVolume.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
Методы класса:
$vl = $params['NEW_VALUE']; $linked_room = $this->getProperty('linkedRoom'); if ($linked_room) { sg($linked_room.'.Humidity',$vl); }
Объекты класса:
Свойства класса:
Свойства класса:
Методы класса:
$ot = $this->object_title; $vl = $params['NEW_VALUE']; $linked_room = $this->getProperty('linkedRoom'); $type = $this->getProperty('type'); if ($linked_room) { if($vl){ //если дд=1 sg($linked_room.'.SomebodyHere', 1, 0, $ot.'.valueChanged/'.$params['SOURCE']);//сбросится само уже в комнате $data = array( 'TYPE' => 'Presense', 'SENSOR' => $this, 'VALUE' => $vl ); cm($linked_room.'.onSensor', $data); registerEvent('inhouseMovement', $details = gg($linked_room.'.Title').'/'.$ot.'/valueChanged/'.$params['SOURCE'],$expire_in=1); $this->setProperty('statusName', 'Движение!'); $this->setProperty('status', 1);//дань Сергею с ПУ if($type == 'impulse'){//PK314 setTimeOut($ot.'_spec', "sg('".$ot.".value', 0, 0, '".$ot.".valueChanged clear');", 30); }elseif($type == 'pir'){//tasmota //do nothing //setTimeOut($ot.'_spec',"sg('".$ot.".value',0, 0, '".$ot.".valueChanged clear');", 30); }else{//smart setTimeOut($ot.'_refresh', "sg('".$ot.".value', 1, 0, 'autorefresh every minute');", 60);//запустим передергивание значения ДД при вкл } }else{ //если дд=0 $this->setProperty('statusName', 'Нет движения'); clearTimeOut($ot.'_refresh'); $this->setProperty('status', 0);//дань Сергею с ПУ } }
Объекты класса:
if(gg('Cabinet.SomebodyHere') && $params['NEW_VALUE'] == 1) { sg('Cabinet.SomebodyHere', 1, 0, 'Presence from LD'); //setTimeOut('',"sg('motiondetect2.value', 0, 0, 'LD');" }
if ($params['NEW_VALUE'] == 1 && gg('DarknessMode.active') == 1){ cm('tsmRelay21.turnOn'); setTimeOut('md13_move'," cm('tsmRelay21.turnOff');",5*60); }
setTimeOut('esp0_spec', "sg('md_esp0.value', 0, 0, 'md_esp0.valueChanged clear');", 30);
$afterSunRise = timeConvert(gg('weather_my.SunRise')) + 60*30; $beforeSunSet = timeConvert(gg('weather_my.SunSet')) - 60*30; $tm = time(); if(($tm > $beforeSunSet || $tm < $afterSunRise) && !timebetween('02:30','06:30') && $params['NEW_VALUE'] == '1' && gg('FilmLounge.active') == 0){ if($params['OLD_VALUE'] == '0') cm('noorelay6.turnOn'); setTimeOut('noorelay6_auto',"cm('noorelay6.turnOff');",5*60);//вкл на 5 мин }
Объекты класса:
if($params['OLD_VALUE'] == 0 && $params['NEW_VALUE'] > 2){ if(time() - checkFromCache("VAR:WashingStart") > 1.5*60*60){ rs('WashControl', array("cmd"=>"start")); saveToCache("VAR:WashingStart",time()); } }
Свойства класса:
Методы класса:
$vl = $params['NEW_VALUE']; $ot = $this->object_title; $linked_room = $this->getProperty('linkedRoom'); if ($linked_room && $this->getProperty('Activity')) { sg($linked_room.'.SomebodyHere',1, 0, $ot.' Sensors.valueChanged'); registerEvent('inhouseMovement', $details = gg($linked_room.'.Title').'/'.$ot. '/valueChanged', $expire_in=1); }
$this->SetProperty('value',1);
$this->SetProperty('value',0);
Объекты класса:
$this->setProperty('StatusName','Дверь открыта');
if( $params['NEW_VALUE'] ==1 && $params['OLD_VALUE']==0){ //только открыли SetTimeOut('doorBell','playSound("bell-store-entrance",1);',1); if(gg('Outside.Temperature')<15){ setTimeOut('DoorOpen','say("Дверь открыта больше минуты!",3);',60); setTimeOut('DoorOpen1','say("Дверь открыта!",3);',60*2); setTimeOut('DoorOpen2','say("Дверь открыта, а на улице холодно!",5);',60*3); } if(gg("DarknessMode.active") && !gg("noorelay6.status")){//в темноте заходим в дом cm("noorelay6.turnOn"); setTimeOut("noorelay6_auto","cm('noorelay6.turnOff');",5*60); } registerEvent('Door/Open', $details='Открыта входная дверь',$expire_in=1); sg('Verand.SomebodyHere',1,0,'Door open'); registerEvent('inhouseMovement', $details = 'Verand/Door/valueChanged',$expire_in=1); //runScriptSafe('oasis_on_2_30'); } if( $params['NEW_VALUE'] ==0 && $params['OLD_VALUE']==1){ //только закрыли registerEvent('Door/Close', $details='Входная дверь закрыта',$expire_in=1); myclearScheduledJob("DoorOpen%"); }
$this->setProperty('StatusName','Дверь закрыта');
Методы класса:
$vl = $params['NEW_VALUE']; $linked_room = $this->getProperty('linkedRoom'); if ($linked_room) { sg($linked_room.'.Temperature',$vl); $data = array( 'TYPE' => 'Temperature', 'SENSOR' => $this, 'VALUE' => $vl ); cm($linked_room.'.onSensor', $data); }
Объекты класса:
Объекты класса:
if($params['NEW_VALUE']>42 && $params['OLD_VALUE']<=42){ say("Сильная нагрузка на сеть!", 2); //boilers cm('tsmRelay19.turnOff'); cm('tsmRelay20.turnOff'); if(timeBetween("02:00","09:00")){ setTimeOut('BoilerOn', "cm('tsmRelay19.turnOn');", 20*60); setTimeOut('Boiler2On', "cm('tsmRelay20.turnOn');", 15*60); } /* $dx7 = gg('Yandex7.status'); if($dx7 == 1){ cm('Yandex7.turnOff'); setTimeOut('convector2floor', "cm('Yandex7.turnOn');", 5*60); } */ //PIDControllers $pids = getObjectsByClass('PIDController'); foreach($pids as $obj) { cm(getGlobal($obj['TITLE'].".linkedRelay").".turnOff"); } //Thermo - todo $objs = getObjectsByClass('NooThermostats'); foreach($objs as $obj) { //cm($obj['TITLE'].".turnOff"); //setTimeOut('BoilerOn', "cm('tsmRelay19.turnOn');", 10*60); } }
Свойства класса:
Методы класса:
Объекты класса:
$details=array(); $red_state=0; $yellow_state=0; //if (!isOnline('Internet')) { if (!registeredEventDetails('online/internet')) { $yellow_state=1; $details[]='Нет доступа в Интернет'; } //if (!isOnline('dvr')) { if (!registeredEventDetails('online/dvr')) { $yellow_state=1; $details[]="Недоступен регистратор"; } if (!ping('192.168.1.1')) { $red_state=1; $details[]="Недоступна локальная сеть"; } if ($red_state) { $state='red'; $state_title='Красный'; } elseif ($yellow_state) { $state='yellow'; $state_title='Жёлтый'; } else { $state='green'; $state_title='Зелёный'; } $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("Статус связи изменился на ".$state_title."."); say(implode(". ",$details)); } else { say("Статус связи восстановился на ".$state_title); } //$this->callMethod('stateChanged'); }
//DebMes("System checkState"); $details = array(); $red_state = 0; $yellow_state = 0; if(gg('ippon.powerState') == 'off'){ $red_state = 1; $details[] = "Нет сетевого питания."; } $cycles = array('smtpcatcher'=>'цикл smtp','yadevices'=>'цикл Я.девайсез','wscache'=>'цикл очереди ws');//,'wscache'=>'цикл очереди ws' foreach($cycles as $k=>$v) { $tm = checkFromCache('MJD:ThisComputer.cycle_'.$k.'Run'); if ($tm && time()-$tm > 5 * 60) { $yellow_state = 1; $details[] = $v." остановлен."; saveToCache('MJD:ThisComputer.cycle_'.$k.'Run',''); saveToCache('MJD:ThisComputer.cycle_'.$k.'Control','restart'); } } $cycles = array('main'=>'главный цикл','execs'=>'цикл запуска команд','scheduler'=>'цикл планировщика'); foreach($cycles as $k=>$v) { $tm = checkFromCache('MJD:ThisComputer.cycle_'.$k.'Run'); if ($tm && time()-$tm > 2 * 60) { $red_state = 1; $details[] = $v." остановлен."; saveToCache('MJD:ThisComputer.cycle_'.$k.'Run',''); saveToCache('MJD:ThisComputer.cycle_'.$k.'Control','restart'); } } if ($red_state) { $state = 'red'; $state_title='Красный'; } elseif ($yellow_state) { $state = 'yellow'; $state_title='Жёлтый'; } else { $state = 'green'; $state_title='Зелёный'; } $new_details=implode(". ",$details); if (gg("System.stateDetails")!=$new_details) { //$this->setProperty('stateDetails',$new_details); saveToCache('MJD:System.stateDetails',$new_details); postToWebSocketQueue('System.stateDetails',$new_details); } if (gg("System.stateColor")!=$state) { //$this->setProperty('stateColor',$state); saveToCache('MJD:System.stateColor',$state); postToWebSocketQueue('System.stateColor',$state); //$this->setProperty('stateTitle',$state_title); saveToCache('MJD:System.stateTitle',$state_title); postToWebSocketQueue('System.stateTitle',$state_title); if ($state!='green') { say("Системный статус изменился на ".$state_title."."); say(implode(". ",$details)); } else { say("Системный статус восстановился на ".$state_title); } //$this->callMethod('stateChanged'); } return; //////////////////////////////////////////////////////// /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/system_checkstate.php'); /* end injection of {SDevices} */
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title='Красный'; } elseif ($yellow_state) { $state='yellow'; $state_title='Жёлтый'; } else { $state='green'; $state_title='Зелёный'; } $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("Статус безопасности изменился на ".$state_title.".",2); say(implode(". ",$details),2); } else { say("Статус безопасности восстановился на ".$state_title,1); } //$this->callMethod('stateChanged'); }
Свойства класса:
Методы класса:
$this->setProperty('enabled',0);
$this->setProperty('enabled',1);
$enabled = $this->getProperty('enabled'); if ($enabled == 0) { return; } $linkedRelay = $this->getProperty('linkedRelay'); if(!$linkedRelay){ return; } $currentTemperature = $params['NEW_VALUE']; // $this->getProperty('currentValue'); $prevTemperature = $params['OLD_VALUE']; $delta = $currentTemperature - $prevTemperature; $targetTemperature = $this->getProperty('targetValue'); $err = $targetTemperature - $currentTemperature; $this->setProperty('error',$err); $threshold = (float)$this->getProperty('threshold'); if ($threshold == 0) { $threshold = 0.25; } if ($currentTemperature > ($targetTemperature + $threshold)) { // temperature too high callMethod($linkedRelay.'.turnOff'); }elseif($currentTemperature < ($targetTemperature - $threshold)) { // temperature too low callMethod($linkedRelay.'.turnOn'); }
Свойства класса:
Методы класса:
Объекты класса:
RunScript('Date_Full'); SetTimeOut("sun_t","RunScript('sun');",2); SetTimeOut("moon_t","RunScript('moon');",5); SetTimeOut("rates","RunScript('Курсы');",7); //setTimeOut("holidays","RunScript('holidays');",10); if(gg('workday') && gg('AlarmWork.Enable') != 1){ say('Завтра, вроде, на работу, а будильник-то выключен?',2); } setTimeOut("tvguide","RunScript('tvguide');",60*60); //в 01:00 runScriptSafe('cleanAll'); //runScriptSafe('cleanOldLogs'); runScriptSafe('cleanOldSnaps'); runScriptSafe('cleanRSS'); //gps log err clean //sqlexec("delete FROM `gpslog` where `DEVICEID`='1862154937' and `LOCATION_ID`=0 and abs(55.9735 - LAT) <0.1 and abs(37.4119 - lon)<0.1"); //sqlexec('delete FROM `gpslog` where `SPEED`>150'); $dataMax = getHistoryMax("Outside.Temperature", -24*60*60); $dataMin = getHistoryMin("Outside.Temperature", -24*60*60); registerEvent('MinMax/maxTempYesterday',$dataMin."/".$dataMax); runScript("update RSS meteo");//renew rss meteo run setTimeOut("power","RunScript('power_daily');",10*60); setTimeOut("arc_code","runScript('BackUpPHP');",3*60*60); setTimeOut("saveBackUp","runScript('saveBackUp');",3.5*60*60);
$hr = (int)date('G'); saveToCache("MJD:ThisComputer.HourNow",$hr); runScriptsafe('checkPhones'); runScriptsafe('test_imap'); //if (isOnline('Internet')) { //runScriptSafe('checkGmail'); //} if($hr >= 6 && $hr < 22 ){ if(gg('NightTariffMode.active')) callMethod('NightTariffMode.deactivate'); }else{ if(!gg('NightTariffMode.active')) callMethod('NightTariffMode.activate'); } runScriptSafe('tv_prog');//new! 2019-03-31 tv films //runScriptSafe('tv_match');//new! 2019-04-10 champions leag //runScriptSafe('tempOutsideDinamic'); //runScriptSafe('hourColor'); //подсветка кровати / смена цвета if($hr%2 == 0){ runScriptSafe("db_optimize"); }
$tm = time(); $h = (int)date('G',$tm); $m = date('i',$tm); saveToCache("MJD:ThisComputer.timeNow",date( "H:i", $tm)); saveToCache("MJD:ThisComputer.MinuteNow",$m); if (gg('ThisComputer.minMsgLevel')>0){ //часы с боем if ($m=="00") { say(timeNow()); $hh=$h; if ($hh>12) {$hh=$hh-12;} if ($hh==0) {$hh=12;} playSound($hh.'h'); } //четверти if ($m=='15') {playSound('15min');} if ($m=='30') {playSound('30min');} if ($m=='45') {playSound('45min');} } //активность в комнатах if($m%2 == 0) { runScriptSafe('testRoomsActivity'); } if($m%5 == 0) { runScriptSafe("power_daily"); runScriptSafe("pump_power"); } //запуск проверки температуры бродлинка без цикла runScriptSafe('chkBrlnk'); if($m%9 == 0) { if($tm - checkFromCache('Noo:PollLastStart') > 60*5){ runScriptSafe('nooPollphp'); } } //перенесено из main runScriptSafe('CheckUptime'); /////////////////////////////////////////////////////// runScriptSafe('makeAgenda'); runScriptSafe('check_ups'); /* if($m%15 == 0){ if(postToWebsocket("test","test")){ }else{ //DebMes("everyminute - websockets disconnected!"); if(checkFromCache('MJD:ThisComputer.cycle_websocketsControl') == ''){ say('Восстановим вебсокеты...'); saveToCache('MJD:ThisComputer.cycle_websocketsRun',''); saveToCache('MJD:ThisComputer.cycle_websocketsControl','restart'); } } } */
Свойства класса:
Методы класса:
Объекты класса:
if($params['NEW_VALUE']<>$params['OLD_VALUE']){ }
brLinkCommand('pro_sel_hdmi1');
$ch = gg('Samsung.channel'); //brLinkCommand('pro_ch_plus'); sg('Samsung.channel',$ch +1);
brLinkCommand('pro_vol_mute');
$vol = gg('Samsung.volume'); //brLinkCommand('pro_vol_up'); sg('Samsung.volume',$vol+1);
brLinkCommand('pro_sel_tv');
$vol = gg('Samsung.volume'); //brLinkCommand('pro_vol_down'); sg('Samsung.volume',($vol<1)?0:($vol-1));
$ch = gg('Samsung.channel'); //brLinkCommand('pro_ch_minus'); sg('Samsung.channel',($ch<1)?0:($ch-1));
Свойства класса:
Методы класса:
Свойства класса:
Методы класса:
Объекты класса:
brLinkCommand('ch_minus');
debmes('TV_11');
debmes('TV_12');
brLinkCommand('b1');
brLinkCommand('b2');
brLinkCommand('b0');
brLinkCommand('b6');
debmes('tv_10');
brLinkCommand('down');
brLinkCommand('vol_up');
brLinkCommand('vol_down');
brLinkCommand('OnOff'); if(gg('Samsung1.status')==1){ sg('Samsung1.status',0); }else{ sg('Samsung1.status',1); }
brLinkCommand('b8');
brLinkCommand('b9');
brLinkCommand('b5');
brLinkCommand('return');
brLinkCommand('vol_mute');
brLinkCommand('enter');
brLinkCommand('OnOff'); if(gg('Samsung1.status')==1){ sg('Samsung1.status',0); }else{ sg('Samsung1.status',1); }
brLinkCommand('source');
brLinkCommand('up');
brLinkCommand('right');
brLinkCommand('left');
brLinkCommand('b7');
brLinkCommand('b4');
brLinkCommand('b3');
brLinkCommand('ch_plus');
brLinkCommand('pro_sel_tv'); sg('Samsung.source', 'tv' );
brLinkCommand('pro_sel_hdmi1'); sg('Samsung.source', 'hdmi1');
brLinkCommand('pro_enter');
brLinkCommand('pro_right');
brLinkCommand('pro_return');
brLinkCommand('pro_left');
brLinkCommand('pro_b4');
brLinkCommand('pro_b3');
brLinkCommand('pro_up');
brLinkCommand('pro_OnOff'); if(gg('Samsung.status')==1){ sg('Samsung.status',0); say('Выключаю тв'); }else{ sg('Samsung.status',1); say('Включаю тв'); }
brLinkCommand('pro_vol_down'); cm('Samsung.volume_down');
brLinkCommand('pro_b2');
brLinkCommand('pro_b0');
brLinkCommand('pro_b6');
brLinkCommand('pro_b5');
brLinkCommand('pro_b7');
brLinkCommand('pro_b8');
brLinkCommand('pro_b9');
debmes('TV_11');
debmes('TV_12');
brLinkCommand('pro_b1');
brLinkCommand('pro_vol_up'); cm('Samsung.volume_up');
brLinkCommand('pro_down');
brLinkCommand('pro_source'); sg('Samsung.source', '?');
brLinkCommand('pro_OnOff'); if(gg('Samsung.status')==1){ sg('Samsung.status', 0); //say('Выключаю тв'); }else{ sg('Samsung.status', 1); //say('Включаю тв'); }
brLinkCommand('pro_vol_mute');
brLinkCommand('pro_vol_down'); //cm('Samsung.volume_down');
brLinkCommand('pro_vol_up'); //cm('Samsung.volume_up');
brLinkCommand('pro_ch_plus'); //cm('Samsung.channel_plus');
brLinkCommand('pro_ch_minus'); cm('Samsung.Channel_minus');
debmes('tv_10');
Свойства класса:
Методы класса:
Объекты класса:
if($params['NEW_VALUE'] <= 11.8 && gg('ippon.powerState') == 'off' && !timeOutExists("PowerFail") ){ SAY('Батарея бесперебойника исчерпана...', 3); SetTimeOut("PowerFail", "SAY('Подготовка к отключению');", 10); clearTimeOut('CloseMDM45m'); runScript('closeMDM'); }
if($params['NEW_VALUE'] != $params['OLD_VALUE'] && $params['NEW_VALUE'] == 'on'){ DebMes('Действия после восстановления сети'); say("Начало восстановления после пропадания сети",2); clearTimeOut('CloseMDM45m'); //Восстановим освещение runScript('RestoreLightStatusesFromFile'); } if($params['NEW_VALUE'] != $params['OLD_VALUE'] && $params['NEW_VALUE'] == 'off'){ //say('пропало 220!',5); sg('Ptotal.value', 0, 0, 'ups - 220 off!'); sg('GlobalMsg.text', 'пропало 220!'); sg('GlobalMsg.address', 'all'); sg('GlobalMsg.enable', 1); setTimeOut('CloseMDM45m','rs("CloseMDM");', 45 * 60); debmes('timer to close after 45 min start!'); runScript('SaveLightStatusToFile');//сохраним статус света/розеток runScriptSafe('saveDumpDb_220');// first }
Свойства класса:
Методы класса:
$user = $this->object_title; if($params['NEW_VALUE'] == 0 && $params['OLD_VALUE'] == 1){ setTimeOut($user."_wifi_lost","cm('".$user.".leaveHome');", 15 * 60); } if($params['NEW_VALUE'] == 1){ clearTimeOut($user."_wifi_lost"); $this->setProperty('atHome',1, 0, 'by WIFI'); }
$fn = $this->getProperty('FullName'); $str_left = ' покинул'; if($this->getProperty('sex')=='f') $str_left = ' покинула'; say($fn.$str_left.' локацию '.$params['LOCATION'],0); if($params['LOCATION'] == 'Дача') { $this->callMethod('leaveHome'); //$this->setProperty('atHome' , 0); }
$fn = $this->getProperty('FullName'); $str_ent = ' вошёл в'; if($this->getProperty('sex')=='f') $str_ent = ' вошла в'; say($fn.$str_ent.' локацию '.$params['LOCATION'],0); if($params['LOCATION'] == 'Дача') { $this->callMethod('gotHome'); // $this->setProperty('atHome' , 1); }
$bl = $params['NEW_VALUE']; // $this->getProperty('BattLevel'); $charg = $this->getProperty('Charging'); $objTitle = $this->object_title; if ($bl==0) return; if ($bl<5) { $icon = 'fa-battery-empty'; $color = "#FF2400"; } elseif ($bl<25) { $icon = 'fa-battery-quarter'; $color = "#ff4f00"; } elseif ($bl<50) { $icon = 'fa-battery-half'; $color = "#CD5700"; } elseif ($bl<75) { $icon = 'fa-battery-three-quarters'; $color = "#007D00"; } elseif ($bl<=100) { $icon = 'fa-battery-full'; $color = "#00E60C"; } //$this->setProperty('ChargingIcon',$icon); saveToCache("MJD:".$objTitle.".ChargingIcon", $icon); if ($charg==1) { $color = "#FF0000"; //$bl = "".$bl; } $lr = $this->getProperty('linkedRelay'); $atH = $this->getProperty('atHome'); if($atH && $lr && $bl == 100 && $charg == 1){ cm($lr.'.turnOff'); say('Телефон зарядился. Отключаю зарядку.'); } saveToCache("MJD:".$objTitle.".chargeColor", $color);
$Coordinates = $params['NEW_VALUE']; //$Coordinates_old = $params['OLD_VALUE']; $data= explode(',', $Coordinates); $lat = $data[0]; $lon = $data[1]; $this->setProperty('latitude', $lat); $this->setProperty('longitude', $lon); /* $hd = (int)$this->getProperty('HomeDistance'); if($hd > 150 ){ //use Google Locations module //$this->setProperty("Location",$this->getProperty("seenAt")); $this->setProperty("atHome", 0); //$this->callMethod("outOfHome"); }else{ $this->setProperty("atHome", 1); $this->setProperty("Location",'Дача'); //$this->callMethod("gotHome"); } */ /* $xml = simplexml_load_file ('https://geocode-maps.yandex.ru/1.x/?apikey='.gg('Sergey.YmapAPI').'&geocode='.$lon.','.$lat); $found = $xml->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found; if ($found > 0) { $vivod = $xml->GeoObjectCollection->featureMember->GeoObject->metaDataProperty->GeocoderMetaData->text; } else {$vivod = 'Не определено';} $this->setProperty('address',$vivod); */
$this->setProperty("atHome", 1);
$this->setProperty("atHome", 0);
Объекты класса:
if(((int)$params['NEW_VALUE']-(int)$params['OLD_VALUE'])>40 && gg('Sergey.sleep')){ sg('Sergey.sleep',0); }
Свойства класса:
Методы класса:
Объекты класса:
$url=gg('mainVLC.adr'); $file=getURL($url.'/requests/status.xml',0,'',1111,0); $xml = simplexml_load_string($file); var_dump($xml); $vlc_state=$xml->state; $vlc_vol=$xml->volume; sg('mainVLC.status',$vlc_state); sg('mainVLC.volume',$vlc_vol);
$v = $params['volume']; if(!isset($v)){ $v=getGlobal('mainVLC.volume'); } $url = getGlobal('mainVLC.adr'); $data = getURL($url.'/requests/status.xml?command=volume&val='.$v,0,'',1111,0); cm('mainVLC.GetStatus');
$url=getGlobal('mainVLC.adr'); $data=getURL($url.'/requests/status.xml?command=pl_pause',0,'',1111,0); cm('mainVLC.GetStatus');
$url=getGlobal('mainVLC.adr'); $data=getURL($url.'/requests/status.xml?command=pl_stop',0,'',1111,0); cm('mainVLC.GetStatus');
$url=getGlobal('mainVLC.adr'); getURL($url.'/requests/status.xml?command=pl_play',0,'',1111,0); rs('CheckVLCstatus');
$url=getGlobal('mainVLC.adr'); $data=getURL($url.'/requests/status.xml?command=pl_empty',0,'',1111,0); cm('mainVLC.GetStatus');
$f=$params['SOURCE']; if(isset($f) && !$f){ return; } $fil=getGlobal('mainVLC.adr')."/requests/status.xml?command=in_enqueue&input=".$f; $data=getURL($fil,0,'',1111,0); cm('mainVLC.GetStatus');
Свойства класса:
Методы класса:
Объекты класса:
if($params['NEW_VALUE'] && !$params['OLD_VALUE']){ setTimeOut("ws_out","say('Погодная станция недоступна!');",10*60); }elseif(!$params['NEW_VALUE'] && $params['OLD_VALUE']){ clearTimeOut("ws_out"); }
//$wd = myWindDirection((float)gg('ws.windBearing')); //saveToCache('MJD:ws.WindDir', $wd); //postToWebSocketQueue('MJD:ws.WindDir',$wd); $t = checkFromCache('TMP:wind2alarm'); if($t < 6) $t = 6; $rw = $params['NEW_VALUE']; if( $rw >= $t){ say('Порывы ветра более '.str_replace('.' , ',' , $rw).' м в секунду!', 2); saveToCache('TMP:wind2alarm', $rw + 0.5); clearTimeOut('setWindAlarmDef'); }else{ if(!timeOutExists('setWindAlarmDef')) setTimeOut('setWindAlarmDef', "saveToCache('TMP:wind2alarm', 6);", 60 * 10); }
sg('humidity02.value', $params['NEW_VALUE']);
sg('humidity01.value',$params['NEW_VALUE']);
$t = round($params['NEW_VALUE'],1); sg('temp_00.value',$t);
$this->setProperty("updatedTimestamp",time()); $t = round($params['NEW_VALUE'], 1); //if($t > 0){$t = '+'.(float)$t;} //$t = -2.0; sg('temp_out.value', $t);
$rate = (float)$params['NEW_VALUE']; //$isr = gg("ws.isRain"); if ($rate>0) { //----------------------------------------- //оценим сам дождь $status=''; if ($rate==0) { $status='Сухо'; } elseif ($rate<0.31) { $status='Очень слабый дождь'; } elseif ($rate<2.6) { $status='Слабый дождь'; } elseif ($rate<8.1) { $status='Умеренный дождь'; } elseif ($rate<16.1) { $status='Ливень'; } elseif ($rate<50.1) { $status='Сильный ливень'; } else { $status='Потоп!'; } sg('ws.rainfallRateStatus',$status); $status=''; $rate1=(float)gg('ws.rainfallHour'); if ($rate1==0) { $status='Сухо'; } elseif ($rate1<0.31) { $status='Очень слабый дождь'; } elseif ($rate1<2.6) { $status='Слабый дождь'; } elseif ($rate1<8.1) { $status='Умеренный дождь'; } elseif ($rate1<16.1) { $status='Ливень'; } elseif ($rate1<50.1) { $status='Сильный ливень'; } else { $status='Потоп!'; } sg('ws.rainfallStatus',$status); //----------------------------------------- /* пересено в правила if ($isr==0 && gethistorymax("ws.isRain",strtotime("-30 minute"))<1) { //переход из 0 в 1 playSound('water_droplet_2'); say(getRandomLine("maybe").', сейчас за окном '.gg('ws.rainfallRateStatus'),1); } */ sg("ws.isRain",1); } else { //rainfallRate=0 sg("ws.isRain",0); sg('ws.rainfallRateStatus','Сухо'); sg('ws.rainfallStatus','Сухо'); }
, Россия
На форуме: xor
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving