Свойства класса:
Методы класса:
Объекты класса:
//variable $OnWD; // если сегодня рабочий день // и включен будильник // запускаем сценарий "Искуственный рассвет" $OnWD = getGlobal('AlarmWeekDay'.'.'.'AlarmOn'); if (isWeekDay() &&$OnWD == 1) { runScript('sunRise'); }
// это однократный будильник, выключем его setGlobal("AlarmOne.AlarmOn",0); say('Звонит будильник! Пора вставать!',5); if (gg("NightMode.active")==1) { callMethod("NightMode.deactivate"); } { setTimeOut('Alarm', " runScript('morningGreeting');", (int)('10')); } // to-do
// сегодня выходной день if (isWeekEnd()){ say('Звонит будильник. Сегодня выходной. Может будем вставать?',5); if (gg("NightMode.active")==1) { callMethod("NightMode.deactivate"); } { setTimeOut('Alarm', " runScript('morningGreeting');", (int)('10')); } } // to-do
// сегодня рабочий день if (isWeekDay()){ say('Звонит будильник. Хватит дрыхнуть, на работу опоздаешь!',5); if (gg("NightMode.active")==1) { callMethod("NightMode.deactivate"); } { setTimeOut('Alarm', " runScript('morningGreeting');", (int)('10')); } } // to-do
Объекты класса:
Методы класса:
Объекты класса:
// device lost registerEvent('bluetooth_lost_'.$params['mac']);
// new device //say('Обнаружено блютуз устройство'); $tm=registeredEventTime('bluetooth_found_'.$params['mac']); if ($params['user']!='') { registerEvent('bluetooth_found_'.$params['mac']); $tm2=registeredEventTime('bluetooth_lost_'.$params['mac']); if (((time()-$tm)>1*60*60 || $tm<0) && ((time()-$tm2)>1*60*60 || $tm2<0) ) { say($params['user'].' уже дома'); } } if ($params['new']) { //say('Обнаружено новое блютуз устройство'); }
Свойства класса:
Методы класса:
$volume=round(65535*$params['VALUE']/100); $this->setProperty('volumeLevel',$params['VALUE']); safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); say("Изменилась громкость до ".$params['VALUE']." процентов");
Объекты класса:
if ($params['VALUE']){ $this->setProperty('volumeLevel',$params['VALUE']); } $volume = $this->getProperty('volumeLevel'); safe_exec('amixer set Master '.$volume.'% unmute'); say("Изменилась громкость до ".$params['VALUE']." процентов");
say("Отключено питание");
$command=$params['command']; if(!$command){ $sqlQuery = "SELECT shouts.MESSAGE FROM shouts WHERE shouts.MEMBER_ID = 1 ORDER BY shouts.ADDED DESC, ID DESC LIMIT 1"; $res = SQLSelectOne($sqlQuery); $command=$res['MESSAGE']; } $short_command=''; $dt=recognizeTime($command,$short_command); if (preg_match('/скажи сколько врем/is',$command)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята',2); return; } global $voicemode; $voicemode='on'; say('Сейчас '.timeNow(),2); } elseif (preg_match('/сколько время/is',$command)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята'); echo $short_command; return; } say('Сейчас '.timeNow()); } elseif (preg_match('/повтори (.+)/is',$command,$m) || preg_match('/скажи (.+)/is',$command,$m)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята',2); return; } global $voicemode; $voicemode='on'; say($m[1],2); } else { // say('Неизвестная команда...',2); runScript('iiiBot', array('message'=>$command)); }
// Метод выполняется когда некоторое время не работал основной цикл системы // (например компьютер был некоторое время выключен или "спал") $sleeptime=$params['sleeptime']; $longtime=30*60; // если больше 30 минут, значит долго спала :) /* if ($sleeptime>$longtime) { $ph='Как можно так забывать про меня?'; } else { $ph='Немного вздремнула.'; } getObject("alice")->raiseEvent("say", array("say"=>$ph." Где я?")); */ // далее можно вызывать какие-то процедуры определения положения // или другие действия, которые необходимо выполнить после вынужденного простоя
say("Электропитание восстановлено",2);
//getObject("alice")->raiseEvent("say", array("say"=>" Чем бы заняться?"));
say("Алиса в работе",2);
Свойства класса:
Методы класса:
$ot=$this->object_title; clearTimeOut($ot.'_update'); $url=$this->getProperty('URL'); $data=getURL($url.'/requests/status.xml',0,$this->getProperty('Username'),$this->getProperty('Password')); if (preg_match('/<state>/is',$data)) { $this->setProperty('active',1); setTimeout($ot.'_update',"callMethod('$ot.update');",10); } else { $this->setProperty('active',0); setTimeout($ot.'_update',"callMethod('$ot.update');",60); } if (preg_match('/<state>playing<\/state>/is',$data)) { if (preg_match('/<volume>(\d+)<\/volume>/is',$data,$m)) { $this->setProperty('Volume',$m[1]); } $this->setProperty('isPlaying',1); if (preg_match('/\'artist\'>(.+?)<\/info>/is',$data,$m)) { $this->setProperty('Artist',$m[1]); } elseif ($this->getProperty('Artist')!='') { $this->setProperty('Artist',''); } if (preg_match('/\'album\'>(.+?)<\/info>/is',$data,$m)) { $this->setProperty('Album',$m[1]); } elseif ($this->getProperty('Album')!='') { $this->setProperty('Album',''); } if (preg_match('/\'title\'>(.+?)<\/info>/is',$data,$m)) { $this->setProperty('Title',$m[1]); } elseif ($this->getProperty('Title')!='') { $this->setProperty('Title',''); } if (preg_match('/\'filename\'>(.+?)<\/info>/is',$data,$m)) { $this->setProperty('Filename',$m[1]); } elseif ($this->getProperty('Filename')!='') { $this->setProperty('Filename',''); } if (preg_match('/\'artwork_url\'>(.+?)<\/info>/is',$data,$m)) { //$this->setProperty('ArtURL',$url.'/art?'.urlencode($m[1])); $filename='art_'.md5($m[1]); if (!file_exists(ROOT.'cached/'.$filename.'.png')) { $art_img=getURL($url.'/art?'.$filename,0,$this->getProperty('Username'),$this->getProperty('Password')); if ($art_img!='Error') { SaveFile(ROOT.'cached/'.$filename.'.png',$art_img); $this->setProperty('ArtURL','/cached/'.$filename.'.png'); } else { $this->setProperty('ArtURL',''); } } elseif ($this->getProperty('ArtURL')!='/cached/'.$filename.'.png') { $this->setProperty('ArtURL','/cached/'.$filename.'.png'); } } elseif ($this->getProperty('ArtURL')!='') { $this->setProperty('ArtURL',''); } if (preg_match('/\'track_number\'>(.+?)<\/info>/is',$data,$m)) { $this->setProperty('Track',$m[1]); } elseif ($this->getProperty('Track')!='') { $this->setProperty('Track',''); } } else { $this->setProperty('isPlaying',0); if ($this->getProperty('ArtURL')!='') { $this->setProperty('ArtURL',''); } }
Объекты класса:
Свойства класса:
Методы класса:
//variable $wind; $wind = $this->getProperty('wind_direction'); if ($wind > 22 && $wind <= 67) { $wind = 'СВ'; } else if ($wind > 67 && $wind <= 112) { $wind = 'В'; } else if ($wind > 112 && $wind <= 157) { $wind = 'ЮВ'; } else if ($wind > 157 && $wind <= 202) { $wind = 'Ю'; } else if ($wind > 202 && $wind <= 247) { $wind = 'ЮЗ'; } else if ($wind > 247 && $wind <= 292) { $wind = 'З'; } else if ($wind > 292 && $wind <= 317) { $wind = 'СЗ'; } else { $wind = 'С'; } $this->setProperty('text_wind', $wind);
$value2 = $this->getProperty('wind_speed'); $value2 = round($value2, 0); $this->setProperty('round_wind_speed', $value2);
//variable $value; $value = $this->getProperty('temperature'); $value = round($value, 0); $this->setProperty('valuetemp', $value);
// Запишем температуру вчерашнего дня для этого часа $SQLText = " SELECT ph.value as val"; $SQLText.= " FROM pvalues pv, objects o, properties p, phistory ph "; $SQLText.= " WHERE pv.object_id = o.id "; $SQLText.= " AND p.id = pv.property_id "; $SQLText.= " AND o.title = 'ow_fact' "; $SQLText.= " AND p.title = 'temperature' "; $SQLText.= " AND ph.value_id = pv.id "; $SQLText.= " AND UNIX_TIMESTAMP( pv.updated ) - UNIX_TIMESTAMP( ph.added ) <24 *60 *60 +30 *60 "; $SQLText.= " ORDER BY ph.added "; $SQLText.= " LIMIT 1 "; $tempYesterday = SQLSelectOne($SQLText); sg("ow_fact.tempYesterday",$tempYesterday['val'] );
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date('H:i')); if ($this->getProperty('active')) { say("Режим ".$this->getProperty('title')." активирован.",-1); } else { say("Режим ".$this->getProperty('title')." выключен.",-1); }
$this->setProperty('active',1);
$this->setProperty('active',0);
Объекты класса:
setGlobal('minMsgLevel','2'); /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nightmode_activate.php'); /* end injection of {SDevices} */
setGlobal('minMsgLevel','0'); /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nightmode_deactivate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nobodyhomemode_activate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nobodyhomemode_deactivate.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
include_once(DIR_MODULES.'app_radio/app_radio.class.php'); $app_radio=new app_radio(); $app_radio->control($params);
$context = stream_context_create(array( 'http' => array( 'header' => "Authorization: Basic " . base64_encode(":12345") ) )); file_get_contents('http://127.0.0.1:8080/requests/status.xml?command=pl_stop',false,$context);
$context = stream_context_create(array( 'http' => array( 'header' => "Authorization: Basic " . base64_encode(":12345") ) )); file_get_contents('http://127.0.0.1:8080/requests/status.xml?command=pl_play',false,$context);
Объекты класса:
include_once(DIR_MODULES.'app_radio/app_radio.class.php'); $app_radio=new app_radio(); if(is_array($params)) { if(isset($params['sta'])) $app_radio->change_station($params['sta'],$app_radio); if(isset($params['cmd'])) $app_radio->control($params['cmd']); if(isset($params['vol'])) $app_radio->set_volume($params['vol'],$app_radio); } else { if($params=='play' || $params=='stop') $app_radio->control($params); else if(strpos($params, "vol")===0) $app_radio->set_volume((int)substr($params,3),$app_radio); else if(strpos($params, "sta:")===0) $app_radio->change_station(substr($params,4),$app_radio); }
include_once(DIR_MODULES.'app_radio/app_radio.class.php'); $app_radio=new app_radio(); if(is_array($params)) { if(isset($params['sta'])) $app_radio->change_station($params['sta'],$app_radio); if(isset($params['cmd'])) $app_radio->control($params['cmd']); if(isset($params['vol'])) $app_radio->set_volume($params['vol'],$app_radio); } else { if($params=='play' || $params=='stop') $app_radio->control($params); else if(strpos($params, "vol")===0) $app_radio->set_volume((int)substr($params,3),$app_radio); else if(strpos($params, "sta:")===0) $app_radio->change_station(substr($params,4),$app_radio); }
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
$this->setProperty("status",0);
$this->setProperty("status",1);
Объекты класса:
Свойства класса:
Методы класса:
//say ("New= ".$params['NEW_VALUE']); //say ("Old= ".$params['OLD_VALUE']); //$status = $this->getProperty('status'); //say ("Status= ".$status); if ($params['NEW_VALUE']==$params['OLD_VALUE']) return; $status = $this->getProperty('status'); // определение настройки по проговариванию $saylights = gg('Sets.saylights'); $saylights = $saylights - 1; // узнаем прежнее состояние $statusOld = $this->getProperty('statusOld'); // далее выполнять всё если состояние реально изменилось if ($statusOld<>$status) { $this->setProperty('updatedTimestamp',time()); $this->setProperty('alive',1); $ot=$this->object_title; // проверка заданно ли время жизни для ключа $alive_timeout=(int)$this->getProperty('aliveTimeOut'); if (!$alive_timeout) { $alive_timeout=8*60*60; // если не было заданно, то берем 8 часов } if ($status) { $this->setProperty('statusText', "включен"); } else { $this->setProperty('statusText', "выключен"); } say("Свет ".$this->getProperty('roomText')." ".$this->getProperty('statusText'),$saylights); clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); } $this->setProperty('statusOld',$status);
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
$this->setProperty("status",0);
$this->setProperty("status",1);
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('status',1); $this->callMethod('sendCommand',array('command'=>'discofaster'));
$this->setProperty('status',0); $this->callMethod('sendCommand',array('command'=>'off'));
$this->setProperty('status',1); $this->callMethod('sendCommand',array('command'=>'on'));
$status=$this->getProperty("status"); if ($status) { if ($this->getProperty('LampType')==1) { $this->callMethod('setColor'); }else { $this->callMethod('turnOn'); } } else { $this->callMethod('turnOff'); }
$level=$this->getProperty("Level"); if ($level>0) { $this->callMethod('setLevel',array('level'=>$level)); } else { $this->callMethod('turnOff'); }
/* $colors=array( '#ff0000', '#00ff00', '#0000ff'); $color=$colors[rand(0,count($colors)-1)]; */ $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)]; $this->callMethod('setColor',array('color'=>$color));
$this->setProperty('status',1); $this->setProperty('Mode','C'); if ($params['color']) { $this->setProperty('Color',$params['color']); } else { $params['color']=$this->getProperty('Color'); } $this->callMethod('sendCommand',array('command'=>'color','value'=>$params['color']));
if ($params['level']>0) { $this->setProperty('status',1); } else { $this->setProperty('status',0); } $this->setProperty('Level',$params['level']); $this->callMethod('sendCommand',array('command'=>'level','value'=>$params['level']));
$this->setProperty('status',1); $this->setProperty('Mode','W'); $this->callMethod('sendCommand',array('command'=>'white'));
$this->setProperty('status',1); $this->callMethod('sendCommand',array('command'=>'disco'));
$this->setProperty('status',1); $this->callMethod('sendCommand',array('command'=>'discoslower'));
$this->setProperty('updated',time()); $this->setProperty('updatedTime',date('H:i')); include_once(ROOT.'lib/hardware/milight.php'); if (is_array($params)) { $command=$params['command']; $value=$params['value']; } else { $command=$params; } $host=$this->getProperty('Host'); $type=(int)$this->getProperty('LampType'); $zone=(int)$this->getProperty('Zone'); $milight = new Milight($host); $commands=''; if ($type==0) { $milight->setWhiteActiveGroup($zone); if ($command=='leveldown') { $milight->command('whiteBrightnessDown'); } if ($command=='levelup') { $milight->command('whiteBrightnessUp'); } if ($command=='level' && $value>=90) { $command='levelmax'; } if ($command=='level' && $value<=90) { $command='levelmin'; } if ($command=='levelmax') { $milight->command('whiteGroup'.$zone.'BrightnessMax'); } if ($command=='levelmin') { $milight->command('whiteGroup'.$zone.'BrightnessMin'); } if ($command=='nightmode') { $milight->command('whiteGroup'.$zone.'NightMode'); } if ($zone==1) { if ($command=='on') { $milight->whiteGroup1On(); } if ($command=='off') { $milight->whiteGroup1Off(); } } if ($zone==2) { if ($command=='on') { $milight->whiteGroup2On(); } if ($command=='off') { $milight->whiteGroup2Off(); } } if ($zone==3) { if ($command=='on') { $milight->whiteGroup3On(); } if ($command=='off') { $milight->whiteGroup3Off(); } } if ($zone==4) { if ($command=='on') { $milight->whiteGroup4On(); } if ($command=='off') { $milight->whiteGroup4Off(); } } } if ($type==1) { if ($command=='disco') { $milight->setRgbwActiveGroup($zone); $milight->rgbwSendOnToActiveGroup(); $milight->command('rgbwDiscoMode'); } if ($command=='discofaster') { $milight->setRgbwActiveGroup($zone); $milight->rgbwSendOnToActiveGroup(); $milight->command('rgbwDiscoFaster'); } if ($command=='discoslower') { $milight->setRgbwActiveGroup($zone); $milight->rgbwSendOnToActiveGroup(); $milight->command('rgbwDiscoSlower'); } if ($command=='level') { $milight->setRgbwActiveGroup($zone); $milight->rgbwBrightnessPercent($value); } if ($command=='color') { $milight->setRgbwActiveGroup($zone); $milight->rgbwSetColorHexString($value); } if ($zone==1) { if ($command=='on') { $milight->rgbwGroup1On(); } if ($command=='off') { $milight->rgbwGroup1Off(); } if ($command=='white') { $milight->rgbwGroup1SetToWhite(); } } if ($zone==2) { if ($command=='on') { $milight->rgbwGroup2On(); } if ($command=='off') { $milight->rgbwGroup2Off(); } if ($command=='white') { $milight->rgbwGroup2SetToWhite(); } } if ($zone==3) { if ($command=='on') { $milight->rgbwGroup3On(); } if ($command=='off') { $milight->rgbwGroup3Off(); } if ($command=='white') { $milight->rgbwGroup3SetToWhite(); } } if ($zone==4) { if ($command=='on') { $milight->rgbwGroup4On(); } if ($command=='off') { $milight->rgbwGroup4Off(); } if ($command=='white') { $milight->rgbwGroup4SetToWhite(); } } } sleep(1);
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("status",1); $this->callMethod("sendCommand",array('command'=>'-on_ch'.$this->getProperty("channel")));
$this->setProperty("status",0); //safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch'.$this->getProperty("channel")); $this->callMethod("sendCommand",array('command'=>'-off_ch'.$this->getProperty("channel")));
$cmdline='"c:\Program Files\nooLite\nooLite.exe" -api '.$params['command']; $last_called=gg('NoolightCommandSend'); $min_delay=3; $now=time(); if (($now-$last_called)>$min_delay) { //safe_exec($cmdline); $last_callled=$now; sg('NoolightCommandSend',$last_called); DebMes("Noolite instant exec: ".$cmdline); system($cmdline); //exec($cmdline); } else { if ($last_callled<$now) { $last_callled=$now; } $last_called+=$min_delay; sg('NoolightCommandSend',$last_called); DebMes("Noolite scheduled job for ".date('H:i:s',$last_called)); AddScheduledJob("noolight".md5($cmdline),"safe_exec('".$cmdline."');",$last_called); }
Свойства класса:
Методы класса:
$code1=$this->getProperty('Code1'); $code2=$this->getProperty('Code2'); safe_exec("c:\_majordomo\apps\arduino_gw\arduino_gw.exe rcon$code1:$code2;"); $this->setProperty("status",1);
$code1=$this->getProperty('Code1'); $code2=$this->getProperty('Code2'); safe_exec("c:\_majordomo\apps\arduino_gw\arduino_gw.exe rcoff$code1:$code2;"); $this->setProperty("status",0);
Свойства класса:
Методы класса:
$rooms=getObjectsByClass("Rooms"); $total=count($rooms); for($i=0;$i<$total;$i++) { $rooms[$i]['room']=getGlobal($rooms[$i]['TITLE'].'.Title'); if (!$rooms[$i]['room']) { $rooms[$i]['room']=$rooms[$i]['TITLE']; } $rooms[$i]['active']=getGlobal($rooms[$i]['TITLE'].'.SomebodyHere'); $rooms[$i]['time']=getGlobal($rooms[$i]['TITLE'].'.LatestActivity'); $rooms[$i]['diff']=time()-$rooms[$i]['time']; } function cmp($a, $b) { if ($a['diff'] == $b['diff']) { return 0; } return ($a['diff'] < $b['diff']) ? -1 : 1; } usort($rooms,"cmp"); if (!$rooms[0]['active']) { $somebodyHomeText="Никого нет дома. Были в ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")"; } else { $res_rooms=array(); for($i=0;$i<$total;$i++) { if ($rooms[$i]['active']) { $res_rooms[]=$rooms[$i]['room']; } } $somebodyHomeText="Кто-то дома: ".implode(", ",$res_rooms); } setGlobal('somebodyHomeText',$somebodyHomeText); //echo "Updated";
$latestActivity=$this->getProperty('LatestActivity'); $this->setProperty('LatestActivity',time()); $this->setProperty('LatestActivityTime',date('H:i')); $this->setProperty('SomebodyHere',1); $ot=$this->object_title; if ($this->getProperty("IdleDelay")) { $activity_timeout=(int)$this->getProperty("IdleDelay"); } else { $activity_timeout=10*60; } clearTimeOut($ot."_activity_timeout"); setTimeOut($ot."_activity_timeout","callMethod('".$ot.".onIdle');",$activity_timeout); $this->callMethod("updateActivityStatus"); /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/Rooms_onActivity.php'); /* end injection of {SDevices} */
$this->setProperty('SomebodyHere',0); $this->callMethod("updateActivityStatus");
Объекты класса:
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SDevices_statusUpdated.php');
require(DIR_MODULES.'devices/SDevices_logicAction.php');
Методы класса:
require(DIR_MODULES.'devices/SButtons_pressed.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SControllers_turnOn.php');
require(DIR_MODULES.'devices/SControllers_turnOff.php');
require(DIR_MODULES.'devices/SControllers_switch.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SDimmers_levelUpdated.php');
require(DIR_MODULES.'devices/SDimmers_turnOn.php');
require(DIR_MODULES.'devices/SDimmers_turnOff.php');
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_turnOff.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_colorUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_setColor.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_turnOn.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SCounters_valueUpdated.php'); /* end injection of {SDevices} */
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SLeak_statusUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SOpenClose_statusUpdated.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SSensors_valueUpdated.php');
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SSmoke_statusUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
//variable $value; $value = $this->getProperty('humidity'); $value = round($value, 0); $this->setProperty('valuehum', $value);
//variable $hum; //variable $room; $hum = $this->getProperty('valuehum'); $room = $this->getProperty('linkedRoom '); setGlobal($room.'.'.'Humidity', $hum);
Объекты класса:
Свойства класса:
Методы класса:
if ($params['status']) { $this->setProperty('status',$params['status']); } $this->setProperty('updatedTimestamp',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);
Методы класса:
$this->setProperty('status',$params['status']); // выставляем статус сенсора $this->setProperty('updatedTimestamp',time()); // выставляем время срабатывания сенсора if ($params['status']) { // если статус = 1 setGlobal('somebodyHome',1); // ставим глобальный флаг на то что кто-то дома setGlobal('somebodyHomeText','Дома кто-то есть'); // так же ставим свойства глобальной переменной для текстового статуса ClearTimeOut("nobodyHome"); // очищаем таймер события "никого нет дома" SetTimeOut("nobodyHome","runScript('nobodyHome');", 1*60*60); // назначаем новый таймер. срабатывает через час после последнего срабатывания датчика. $last_register=registeredEventTime('inhouseMovement'); // проверяем когда в последний раз срабатывало событие "движение внутри дома" if (!$last_register || ((time()-$last_register)>2*60*60)) { // срабатывало более 2х часов назад (либо никогда не срабатывало ранее) say("Ну наконец-то кто-то появился дома!"); if (timeBetween('06:30', '12:00')) { // движение замечено утром runScript('morningGreeting'); // запускаем скрипт "доброе утро" } } registerEvent('inhouseMovement',$this->name,7); // регистрируем событие "движение внутри дома" }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('status',$params['status']); // выставляем статус сенсора $this->setProperty('updatedTimestamp',time()); // выставляем время срабатывания сенсора $this->setProperty('alive',1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=24*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); if ($params['status']) { $this->setProperty('motionDetected',1); clearTimeOut($this->object_title.'_detected'); setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30); $linked_room=$this->getProperty('LinkedRoom'); if ($linked_room!='') { callMethod($linked_room.'.onActivity'); } if ($this->object_title=='sensorMovement3' || $this->object_title=='sensorMovementRemote1' || $this->object_title=='sensorMovementRemote2') { //|| $this->object_title=='sensorMovement5' return; // не реагируем на движение в спальне, по ip-сенсорам и по сенсору на втром этаже } ClearTimeOut("nobodyHome"); SetTimeOut("nobodyHome","callMethod('NobodyHomeMode.activate');", 1*60*60); // выполняем если целый час никого не было if (getGlobal('NobodyHomeMode.active')) { callMethod('NobodyHomeMode.deactivate'); } $last_register=registeredEventTime('inhouseMovement'); // проверяем когда в последний раз срабатывало событие "движение внутри дома" registerEvent('inhouseMovement',$this->name,2); // регистрируем событие "движение внутри дома" if (timeBetween('05:00', '12:00') && ((time()-$last_register)>2*60*60)) { runScript('Greeting'); // запускаем скрипт "доброе утро" } }
Объекты класса:
Свойства класса:
Методы класса:
//variable $value; $value = $this->getProperty('temp'); $value = round($value, 0); $this->setProperty('valuetemp', $value);
//variable $temp; //variable $room; $temp = $this->getProperty('valuetemp'); $room = $this->getProperty('linkedRoom '); setGlobal($room.'.'.'Temperature', $temp);
Объекты класса:
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$details=array(); $red_state=0; $yellow_state=0; if (!isOnline('Internet')) { $yellow_state=1; $details[]=LANG_GENERAL_NO_INTERNET_ACCESS; } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".", -1); say(implode(". ",$details), -1); } else { say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title, -1); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; $cycles=array('states'=>'states','main'=>'main','execs'=>'exec','scheduler'=>'scheduler'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED."."; } } $cycles=array('ping'=>'ping','webvars'=>'webvars'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED."."; } } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); } else { say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); } $this->callMethod('stateChanged'); } /* 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=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); } else { say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); } $this->callMethod('stateChanged'); }
Свойства класса:
Методы класса:
//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module//START openweather module $updateTime = gg('ow_setting.updateTime'); if($updateTime > 0) { $count = gg('ow_setting.countTime'); if($count >= $updateTime) { include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php'); $app_openweather = new app_openweather(); $app_openweather->get_weather(gg('ow_city.id')); sg('ow_setting.countTime', 1); } else { $count++; sg('ow_setting.countTime', $count); } } // END openweather module/* START yaWeather module*/ $updateTime = gg('yw_setting.updateTime'); if($updateTime > 0){ $count = gg('yw_setting.countTime'); if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yw_setting.city_id')); sg('yw_setting.countTime',1); } else { $count++; sg('yw_setting.countTime',$count); } }/* END yaWeather*/
Объекты класса:
// раскидываем дату и время $h=(int)date('G',time()); if (gg('ThisComputer.DateD')!=date("d", time())) { $day[0]="воскресенье"; $day[1]="понедельник"; $day[2]="вторник"; $day[3]="среда"; $day[4]="четверг"; $day[5]="пятница"; $day[6]="суббота"; $month[1]="января"; $monthAlt[1]="ЯНВАРЬ"; $month[2]="февраля"; $monthAlt[2]="ФЕВРАЛЬ"; $month[3]="марта"; $monthAlt[3]="МАРТ"; $month[4]="апреля"; $monthAlt[4]="АПРЕЛЬ"; $month[5]="мая"; $monthAlt[5]="МАЙ"; $month[6]="июня"; $monthAlt[6]="ИЮНЬ"; $month[7]="июля"; $monthAlt[7]="ИЮЛЬ"; $month[8]="августа"; $monthAlt[8]="АВГУСТ"; $month[9]="сентября"; $monthAlt[9]="СЕНТЯБРЬ"; $month[10]="октября"; $monthAlt[10]="ОКТЯБРЬ"; $month[11]="ноября"; $monthAlt[11]="НОЯБРЬ"; $month[12]="декабря"; $monthAlt[12]="ДЕКАБРЬ"; sg("ThisComputer.DateD",date( "d", time())); sg("ThisComputer.DateM",date( "m", time())); sg("ThisComputer.DateY",date( "Y", time())); sg("ThisComputer.Date",date( "d.m.Y", time())); sg("ThisComputer.Day",$day[date("w")]); sg("ThisComputer.Month",$month[date("n")]); sg("ThisComputer.MonthAlt",$monthAlt[date("n")]); }
$h=(int)date('G',time()); $m=date('i',time()); if (isWeekDay()) { } if (($h>=8) && getGlobal('clockChimeEnabled')) { if ($m=="00") { say(timeNow(),1); } } setGlobal('timeNow',date('H:i')); $homeStatus=date('H:i'); if (getGlobal('NobodyHomeMode.active')) { $homeStatus.=' Дома никого'; } else { $homeStatus.=' Дома кто-то есть'; } $homeStatus.=' '.getGlobal('Security.stateDetails'); $homeStatus.=' '.getGlobal('System.stateDetails'); $homeStatus.=' '.getGlobal('Communication.stateDetails'); setGlobal('HomeStatus',$homeStatus); if (timeBetween(getGlobal('SunRise'),getGlobal('SunSet')) && getGlobal('isDark')=="1") { setGlobal("isDark",0); callMethod('DarknessMode.deactivate'); } elseif (!timeBetween(getGlobal('SunRise'),getGlobal('SunSet')) && getGlobal('isDark')!="1") { setGlobal("isDark",1); callMethod('DarknessMode.activate'); } if (timeIs(getGlobal('SunRise'))) { say('Всходит солнце',-1); } if (timeIs(getGlobal('SunSet'))) { say('Солнце заходит',1); } if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) { say("Похоже никого нет сегодня, можно сэкономить немного."); callMethod('EconomMode.activate'); } if (timeIs('24:00') && (gg("NightMode.active")!=="1")) { callMethod('NightMode.activate'); } elseif (timeIs('08:00') && (gg("NightMode.active")!="1")) { callMethod('NightMode.deactivate'); } //будильник $objects=getObjectsByClass("AlarmClock"); foreach($objects as $obj) { // переберем все будильники в системе if (getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника } } // получем ЧАСЫ и МИНУТЫ отдельно $timeH=date("H", time()); $timeM=date("i", time()); sg("ThisComputer.timeH",$timeH); sg("ThisComputer.timeM",$timeM);
Методы класса:
Объекты класса:
if ($params['serial']=='' && $params['devname']!='') { $params['serial']=$params['devname']; } $device=SQLSelectOne("SELECT * FROM usbdevices WHERE SERIAL LIKE '".$params['serial']."'"); if (!$device['ID']) { // new device connected //say("Подключено новое устройство",1); $device=array(); $device['SERIAL']=$params['serial']; $device['TITLE']='устройство '.$params['devname']; $device['FIRST_FOUND']=date('Y-m-d H:i:s'); $device['LAST_FOUND']=date('Y-m-d H:i:s'); $device['LOG'].=$device['FIRST_FOUND'].' подключено (впервые)'."\n"; $device['ID']=SQLInsert('usbdevices',$device); } else { // device already in our database //say("Подключено ".$device['TITLE'],1); if ($device['USER_ID']) { $user=SQLSelectOne("SELECT * FROM users WHERE ID='".$device['USER_ID']."'"); if ($user['ID']) { //$user['NAME']; // теперь мы знаем имя пользователя, связанного с этим устройством } } $device['LAST_FOUND']=date('Y-m-d H:i:s'); $device['LOG']=$device['LAST_FOUND'].' подключено'."\n".$device['LOG']; SQLUpdate('usbdevices',$device); if ($device['SCRIPT_ID']!='') { runScript($device['SCRIPT_ID'],$params); } elseif ($device['SCRIPT']!='') { eval($device['SCRIPT']); } }
Свойства класса:
Методы класса:
$this->setProperty('atHome',1); $this->setProperty('atHomeUpdated', date( "H:i - d.m.Y", time())); $this->setProperty('atHomeTimestamp', time());
$this->setProperty('atHome',0); $this->setProperty('atHomeUpdated', date( "H:i - d.m.Y", time())); $this->setProperty('atHomeTimestamp', time());
Объекты класса:
//say("Алексей уже практически здесь");
say("У Алексея на телефоне сработал будильник.");
if (isset($params['OLD_VALUE']) && $params['OLD_VALUE']==$params['NEW_VALUE']) return; if ($this->getProperty('isMoving')) { say("Алексей начал движение."); } else { $location=$this->getProperty('seenAt'); if (!$location) { $location=$this->getProperty('Coordinates'); } say("Алексей остановился (".$location.")"); } //say("Moving state changed from ".$params['OLD_VALUE']." to ".$params['NEW_VALUE']);
Свойства класса:
Методы класса:
Объекты класса:
say('Я - Cистема домашней автоматизации MajorDoMo. Или полностью: Major Domestic Module, что означает Главный Домашний Модуль.');
if(timeBetween("05:00", "11:00")){ say("Доброе утро!",5); }elseif(timeBetween("11:00", "17:00")){ say("Добрый день!",5); }elseif(timeBetween("17:00", "23:00")){ say("Добрый вечер!",5); }elseif(timeBetween("23:00", "05:00")){ say("Доброй ночи!",5); }else{ // Новое, неизвестное время суток. say('Привет!',1); }
say('Меня зовут Алиса');
class ModIiiRu { // IiiID можно взять из ссылки на бота из рейтинга const IiiID = '195310af-cc83-4f0d-aaae-456e08662421'; // выдери ответ нужного ифа и подставь в нижнюю строку // const IiiID = 'a1f6a965-6d27-4a42-a619-5cdcaead11d'; public function cmd($cmd) { $data = json_encode(array(self::IiiID, $cmd)); $data = self::xorKey($data, false); $data = self::sendMessage($data); $data = json_decode($data); $text = $data->result->text->value; return $text; } private static function sendMessage($send){ $url='http://iii.ru/api/2.0/json/Chat.request'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $send); $res = curl_exec($ch); if (!$res) return false; curl_close($ch); return self::xorKey($res, true); } public static function xorKey($res, $decode) { $key = "some very-very long string without any non-latin characters due to different string representations inside of variable programming languages"; $keylen = strlen($key); $res = $decode ? base64_decode($res) : base64_encode($res); $strlen = strlen($res); $i = 0; $result = ''; while ($i<$strlen) { $buf = $res[$i] ^ $key[$i % $keylen]; $result .= $buf; $i++; } $result= $decode ? base64_decode($result) : base64_encode($result); return $result; } } $command=$params['command']; $mod = new ModIiiRu(); say($mod->cmd($command)); //say("111111111111111"); //$data1 ="JBYkV3oyBgg2ejNWPzoRBTYUBBA/ICNbNA15AyYzLVo7JxBSIS1DFCIpYBU7IDMCeicpCD4iLyULSzRhVDkPcQcbY1VZPy8MKjRTSQ:"; //$data1 = $mod->xorKey($data1, true); //say($data1);
Свойства класса:
Методы класса:
Объекты класса:
$city_id=gg("Zlatoust.city_id"); //ID города узнаем тут: https://pogoda.yandex.ru/static/cities.xml $data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml?".rand(); // адрес xml файла - 28411 //say($data_file); $xml = simplexml_load_file($data_file); // раскладываем xml на массив if($xml === false ) { return; } // Запишем прогноз погоды на 10 дней $nDay=0; foreach($xml->day as $day) { // записываем дату с днем недели на каждый день sg("Zlatoust.mcD".$nDay."_Day",getDayDate($day['date'])); // нам нужны только 4 части дня по 6+1 параметров в каждом for($i = 0;$i < 4;$i++) { $prop_Temp = 'mcD'.$nDay.'_Temp_'.$i; //addClassProperty('Weather',$prop_Temp); $prop_Image = 'mcD'.$nDay.'_Image_'.$i; //addClassProperty('Weather',$prop_Image); $prop_WindDir = 'mcD'.$nDay.'_WindDir_'.$i; //addClassProperty('Weather',$prop_WindDir); $prop_WindDirText = 'mcD'.$nDay.'_WindDirText_'.$i; //addClassProperty('Weather',$prop_WindDirText); $prop_WindSpeed = 'mcD'.$nDay.'_WindSpeed_'.$i; //addClassProperty('Weather',$prop_WindSpeed); $prop_Humidity = 'mcD'.$nDay.'_Humidity_'.$i; //addClassProperty('Weather',$prop_Humidity); $prop_Pressure = 'mcD'.$nDay.'_Pressure_'.$i; //addClassProperty('Weather',$prop_Pressure); // 1 температура sg("Zlatoust.".$prop_Temp, getTempSign($day->day_part[$i]->{'temperature-data'}->avg)); // 2 Картинка sg("Zlatoust.".$prop_Image,$day->day_part[$i]->{'image-v3'}); // 3 Направление ветра $dir = $day->day_part[$i]->wind_direction; // Функция возвращает массив, поэтому записываем в переменные значения, полученные в функции list ($dir, $dirtext) = getWindDirection($dir); sg("Zlatoust.".$prop_WindDir, $dir); sg("Zlatoust.".$prop_WindDirText, $dirtext); // 4 Скорость ветра sg("Zlatoust.".$prop_WindSpeed,$day->day_part[$i]->wind_speed); // 5 Влажность sg("Zlatoust.".$prop_Humidity,$day->day_part[$i]->humidity); // 6 Атмосферное давление sg("Zlatoust.".$prop_Pressure,$day->day_part[$i]->pressure); } $nDay++; } // Проговариваем, при необходимости $sayMetUSD = gg ("Sets.sayMetUSD"); if ($sayMetUSD) { say("Читаю прогноз погоды на 10 дней с Yandex",($sayMetUSD-2)); } // ******************************************************** // КОНЕЦ ОСНОВНОГО БЛОКА // Функция - добавления "+" к положительной температуре function getTempSign($temp) { $temp = (int)$temp; return $temp > 0 ? '+'.$temp : $temp; } // Функция - получить направления ветра в МАССИВ function getWindDirection($wind) { $wind = (string)$wind; $wind_direction = array('s'=>'↑ ю', 'n'=>'↓ с', 'w'=>'→ з', 'e'=>'← в', 'sw'=>'↗ юз', 'se'=>'↖ юв', 'nw'=>'↘ сз', 'ne'=>'↙ св'); $wind_dirtxt = array('s'=>'южный', 'n'=>'северный', 'w'=>'западный', 'e'=>'восточный', 'sw'=>'юго-западный', 'se'=>'юго-восточный', 'nw'=>'северо-западный', 'ne'=>'северо-восточный'); return array ($wind_direction[$wind], $wind_dirtxt[$wind]); } // Функция - получить локализованный день недели function getDayDate($date) { $date = strtotime($date); // $months = array('','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'); $days = array('ВС','ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ'); // return $days[date('w', $date)].', '.(int)date('d',$date).' '.$months[date('n', $date)].' '.date('y',$date).' г.'; return $days[date('w', $date)]; }
// температура сейчас $temp=round(gg("ow_fact.temperature")); $temp = getTempSign($temp); // если значение температуры положительно, для наглядности добавляем "+" sg("Zlatoust.Temp",$temp); sg("ThisComputer.TempOutside",$temp); sg("Zlatoust.Type",gg("ow_fact.weather_type")); sg("Zlatoust.Pressure",gg("ow_fact.pressure_mmhg")); sg("Zlatoust.Humidity",gg("ow_fact.humidity")); sg("Zlatoust.WindSpeed",gg("ow_fact.wind_speed")); sg("Zlatoust.Image",gg("ow_fact.image")); sg("Zlatoust.Rain",gg("ow_fact.rain")); // Направление ветра $dir = gg("ow_fact.wind_direction"); // Функция возвращает массив, поэтому записываем в переменные значения, полученные в функции // list ($dir, $dirtext) = getWindDirection($dir); sg("Zlatoust.WindDir",$dir); // sg("Zlatoust.WindDirText",$dirtext); // Солнце: восход/закат sg("Zlatoust.SunRise",date('H:i', gg("ow_fact.sunrise"))); sg("Zlatoust.SunSet",date('H:i', gg("ow_fact.sunset"))); // Луна // sg("Zlatoust.Moon_phase",$xml->day[0]->moon_phase); // sg("Zlatoust.MoonRise",$xml->day[0]->moonrise); // sg("Zlatoust.MoonSet",$xml->day[0]->moonset); // Обновляем показатели жизни объекта sg("Zlatoust.updatedTimestamp", time()); sg("Zlatoust.updatedTime", date( "H:i - d.m.Y", time())); // Проговариваем, при необходимости $sayMetUSD = gg ("Sets.sayMetUSD"); if ($sayMetUSD) { say("Читаю текущую погоду",($sayMetUSD-2)); } // ******************************************************** // КОНЕЦ ОСНОВНОГО БЛОКА // Функция - добавления "+" к положительной температуре function getTempSign($temp) { $temp = (int)$temp; return $temp > 0 ? '+'.$temp : $temp; }
$city_id=gg("Zlatoust.city_id"); //ID города узнаем тут: https://pogoda.yandex.ru/static/cities.xml $data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml?".rand(); // адрес xml файла - 28411 //say($data_file); $xml = simplexml_load_file($data_file); // раскладываем xml на массив if($xml === false ) { return; } // температура вчера в это же время $temp_yesterday=$xml->yesterday->temperature; // Если значение температуры положительно, для наглядности добавляем "+" $temp_yesterday = getTempSign($temp_yesterday); sg("Zlatoust.TempYesterday",$temp_yesterday); // температура сейчас $temp=$xml->fact->temperature; if (date('G')==13) {sg("Zlatoust.Temp13h",$temp);} if (date('G')==21) {sg("Zlatoust.Temp21h",$temp);} $temp = getTempSign($temp); // Если значение температуры положительно, для наглядности добавляем "+" // достаем из XML-файла время его чтения $XMLuptime = $xml->fact->uptime; $XMLuptime = explode("T", $XMLuptime); $XMLuptimeTo = ($XMLuptime[0].' '.$XMLuptime[1]); // addClassProperty('Weather','XMLuptime'); sg("Zlatoust.XMLuptime",$XMLuptimeTo); // сохраняем основные параметры текущей погоды sg("Zlatoust.Temp",$temp); sg("ThisComputer.TempOutside",$temp); sg("Zlatoust.Type",$xml->fact->weather_type); sg("Zlatoust.Pressure",$xml->fact->pressure); sg("Zlatoust.Humidity",$xml->fact->humidity); sg("Zlatoust.WindSpeed",$xml->fact->wind_speed); sg("Zlatoust.Image",$xml->fact->{'image-v3'}); // определение вероятности дождя 0 или 1 $rain1=gg("Zlatoust.Type"); $rain2=$xml->day[0]->day_part[0]->weather_type; $rain3=$xml->day[0]->day_part[1]->weather_type; $rain4=$xml->day[0]->day_part[2]->weather_type; $rain5=$xml->day[0]->day_part[3]->weather_type; $rain=($rain1. $rain2. $rain3. $rain4. $rain5); $pos = strpos($rain, "дожд"); if ($pos === false) { sg("Zlatoust.Rain",0); } else { sg("Zlatoust.Rain",1); // say("Возможен дождь",2); } // Направление ветра $dir = $xml->fact->wind_direction; // Функция возвращает массив, поэтому записываем в переменные значения, полученные в функции list ($dir, $dirtext) = getWindDirection($dir); sg("Zlatoust.WindDir",$dir); sg("Zlatoust.WindDirText",$dirtext); // Солнце: восход/закат sg("Zlatoust.SunRise",$xml->day[0]->sunrise); sg("Zlatoust.SunSet",$xml->day[0]->sunset); // Луна sg("Zlatoust.Moon_phase",$xml->day[0]->moon_phase); sg("Zlatoust.MoonRise",$xml->day[0]->moonrise); sg("Zlatoust.MoonSet",$xml->day[0]->moonset); // длинный текстовый прогноз погоды // $metcast=""; $metcast="На улице ".gg("Zlatoust.Type")."."; // ветер $WindSpeed=(float)gg("Zlatoust.WindSpeed"); if ($WindSpeed<1) { $metcast.=' Ветра, скорее всего, нет.'; } elseif ($WindSpeed<3) { $metcast.=' Возможен слабый ветер.'; } elseif ($WindSpeed<6) { $metcast.=' Возможен сильный ветер.'; } elseif ($WindSpeed<9) { $metcast.=' Возможен довольно сильный ветер.'; } else { $metcast.=' Возможен очень сильный ветер.'; } $w=round(strip_tags(gg("Zlatoust.Temp"))); $tempw=$w; if($w < "0"){ $tempw=abs($w); } if($w > "0"){ $templus=" плюс "; } if($tempw >= 11 and $tempw <= 14){ $tempcels=" градусов";} else{ while ($tempw > 9){ $tempw=$tempw-10; } if($tempw == 0 or $tempw >= 5 and $tempw <= 9){ $tempcels=" градусов"; } if($tempw == 1){ $tempcels=" градус"; } if($tempw >= 2 and $tempw <= 4){ $tempcels=" градуса"; } } $metcast.=' Температура '.gg("Zlatoust.Temp").' '.$tempcels.'.'; $tm=(float)gg("Zlatoust.Temp"); if ($tm<-40) { $metcast.=' Мы морозов не боимся!'; } elseif ($tm<-30) { $metcast.=' Очень холодно, оденьтесь теплее.'; } elseif ($tm<-20) { $metcast.=' Самое время есть мороженое.'; } elseif ($tm<-10) { $metcast.=' Холодновато.'; } elseif ($tm<-3) { $metcast.=' Не особо холодно.'; } elseif ($tm<3) { $metcast.=' Значит, возможно, гололёд.'; } elseif ($tm<10) { $metcast.=' Тепловато.'; } elseif ($tm<25) { $metcast.=' Тепло.'; } elseif ($tm<30) { $metcast.=' Жарко.'; } elseif ($tm>30) { $metcast.=' Ташкент.'; } // $metcast.=' Восход солнца сегодня в '.gg("Zlatoust.SunRise").','; // $metcast.=' закат в '.gg("Zlatoust.SunSet").'.'; sg("Zlatoust.metcast",$metcast); // прогноз на 3 дня $w3days="Сегодня ночью будет "; $temp=$xml->day[0]->day_part[3]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.="°, "; $w3days.=$xml->day[0]->day_part[3]->weather_type; $w3days.=".\r\nЗавтра днём будет "; $temp=$xml->day[1]->day_part[1]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.="°, "; $w3days.=$xml->day[1]->day_part[1]->weather_type; $w3days.=". Послезавтра ночью "; $temp=$xml->day[1]->day_part[3]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.="°, "; $w3days.=$xml->day[1]->day_part[3]->weather_type; $w3days.="."; sg("Zlatoust.forecast",$w3days); // Определяем время года $season = $xml->fact->season; switch ($season){ case 'winter': $season="зима"; break; case 'summer': $season="лето"; break; case 'autumn': $season="осень"; break; case 'spring': $season="весна"; break; } sg("Zlatoust.season",$season); //время года // Обновляем показатели жизни объекта sg("Zlatoust.updatedTimestamp", time()); sg("Zlatoust.updatedTime", date( "H:i - d.m.Y", time())); // Проговариваем, при необходимости $sayMetUSD = gg ("Sets.sayMetUSD"); if ($sayMetUSD) { say("Читаю прогноз погоды на 3 дня с Yandex",($sayMetUSD-2)); } // ******************************************************** // КОНЕЦ ОСНОВНОГО БЛОКА // Функция - добавления "+" к положительной температуре function getTempSign($temp) { $temp = (int)$temp; return $temp > 0 ? '+'.$temp : $temp; } // Функция - получить направления ветра в МАССИВ function getWindDirection($wind) { $wind = (string)$wind; $wind_direction = array('s'=>'↑ ю', 'n'=>'↓ с', 'w'=>'→ з', 'e'=>'← в', 'sw'=>'↗ юз', 'se'=>'↖ юв', 'nw'=>'↘ сз', 'ne'=>'↙ св'); $wind_dirtxt = array('s'=>'южный', 'n'=>'северный', 'w'=>'западный', 'e'=>'восточный', 'sw'=>'юго-западный', 'se'=>'юго-восточный', 'nw'=>'северо-западный', 'ne'=>'северо-восточный'); return array ($wind_direction[$wind], $wind_dirtxt[$wind]); }
// температура сейчас $temp=$xml->fact->temperature; if (date('G')==13) {sg("Zlatoust.Temp13h",$temp);} if (date('G')==21) {sg("Zlatoust.Temp21h",$temp);} $temp = getTempSign($temp); // Если значение температуры положительно, для наглядности добавляем "+" $file='http://api.pogoda.com/index.php?api_lang=ru&localidad=234230&affiliate_id=qn3ynjz38h7q'; $nday=7; // за 7 дней if($xml = simplexml_load_file($file)){ $i=0; $nombre = htmlentities($xml->location[0]->attributes()->city,ENT_COMPAT,'UTF-8'); $array=explode('[', $nombre); $nombre = ucwords(rtrim($array[0])); foreach ($xml->location->var as $var) { switch ($i) { case 0: //READ THE MINIMUM TEMPERATURE// for($j=0; $j<$nday; $j++){$TempMin[$j] = htmlentities($xml->location->var[0]->data->forecast[$j]->attributes()->value,ENT_COMPAT,'UTF-8');} break; case 1: //READ THE MAXIMUM TEMPERATURE// for($j=0; $j<$nday; $j++){$TempMax[$j] = htmlentities($xml->location->var[1]->data->forecast[$j]->attributes()->value,ENT_COMPAT,'UTF-8');} break; case 2: //READ THE WIND// //icon numerical value for($j=0; $j<$nday; $j++){ $wind[$j] = htmlentities($xml->location->var[2]->data->forecast[$j]->attributes()->id,ENT_COMPAT,'UTF-8'); $wind_desc[$j] = htmlentities($xml->location->var[2]->data->forecast[$j]->attributes()->value,ENT_COMPAT,'UTF-8'); } break; case 3: //READ THE SYMBOL// //icon numerical value for($j=0; $j<$nday; $j++){ $Symbol[$j] = htmlentities($xml->location->var[3]->data->forecast[$j]->attributes()->id,ENT_COMPAT,'UTF-8'); $Symbol_desc[$j]= htmlentities($xml->location->var[3]->data->forecast[$j]->attributes()->value,ENT_COMPAT,'UTF-8'); } break; case 4: //READ THE DAY OF THE WEEK// for($j=0; $j<$nday; $j++){$Day[$j] = htmlentities($xml->location->var[4]->data->forecast[$j]->attributes()->value,ENT_COMPAT,'UTF-8');} break; } $i++; } } //WE FINISH READING THE FILE, WE ACCUMULATED DATA IN ARRAYS TEMPMIN, TEMPMAX, DAY, SYMBOL else {echo "The XML file can not be read"; exit;} say ($TempMin[0],1); say ($TempMin[1],1); say ($TempMin[2],1); say ($TempMin[3],1); say ($TempMin[4],1); say ($TempMin[5],1); say ($TempMin[6],1); say ($Day[0],1); say ($Day[1],1); say ($Day[2],1); say ($Day[3],1); say ($Day[4],1); say ($Day[5],1); say ($Day[6],1);
Свойства класса:
Объекты класса:
Методы класса:
$updateTime = gg("yt_settings.updateTime"); if($updateTime > 0){ $count = gg("yt_settings.countTime"); if($count >= $updateTime){ include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php"); $app_yatraffic=new app_yatraffic(); $app_yatraffic->get_traffic(gg("yt_settings.reg_id")); sg("yt_settings.countTime",1); } else { $count++; sg("yt_settings.countTime",$count); } }
include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php"); $app_yatraffic=new app_yatraffic(); $app_yatraffic->get_traffic(gg("yt_settings.reg_id"));
Объекты класса:
Объекты класса:
, Россия
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving