Свойства класса:
Методы класса:
Объекты класса:
Методы класса:
Свойства класса:
Методы класса:
Объекты класса:
getURL('http://192.168.1.106/getdth',0);
$this->setProperty("temperature",$params['temperature']); $this->setProperty("humidity",$params['humidity']); $this->setProperty('updatedTimestamp',time()); $this->setProperty('updatedTimenow',timeNow(time()));
Свойства класса:
Объекты класса:
$flower = $params['flower']; $humidity = $params['humidity']; $temp = $params['temp']; if ($flower) { $this->setProperty("flower", preg_replace('/(\s)?FLOOWER:(?(1)|\s?)/x', '', $flower)); $this->setProperty('flowerUpdatedTimestamp', time()); $this->setProperty('flowerUpdatedTimenow', timeNow(time())); } if ($humidity) { $this->setProperty("humidity", preg_replace('/(\s)?HUMIDITY:(?(1)|\s?)/x', '', $humidity)); $this->setProperty('humidityUpdatedTimestamp', time()); $this->setProperty('humidityUpdatedTimenow', timeNow(time())); } if ($temp) { $this->setProperty("temp", preg_replace('/(\s)?TEMP:(?(1)|\s?)/x', '', $temp)); $this->setProperty('tempUpdatedTimestamp', time()); $this->setProperty('tempUpdatedTimenow', timeNow(time())); }
Свойства класса:
Методы класса:
Объекты класса:
$flower = $params['value']; if ($flower) { $this->setProperty("value", preg_replace('/(\s)?FLOOWER:(?(1)|\s?)/x', '', $flower)); $this->setProperty('updatedTimestamp', time()); $this->setProperty('updatedTimenow', timeNow(time())); }
$humidity = $params['value']; if ($humidity) { $this->setProperty("value", preg_replace('/(\s)?HUMIDITY:(?(1)|\s?)/x', '', $humidity)); $this->setProperty('updatedTimestamp', time()); $this->setProperty('updatedTimenow', timeNow(time())); }
$temp = $params['value']; if ($temp) { $this->setProperty("value", preg_replace('/(\s)?TEMP:(?(1)|\s?)/x', '', $temp)); $this->setProperty('updatedTimestamp', time()); $this->setProperty('updatedTimenow', timeNow(time())); }
Свойства класса:
Методы класса:
Объекты класса:
$command=$params['command']; $short_command=''; $dt=recognizeTime($command,$short_command); $objects=getObjectsByClass("voice_command"); foreach($objects as $obj){ if (preg_match('/'.mb_strtolower($obj['TITLE'],'utf-8').'(.*)/is',mb_strtolower($command,'utf-8'),$m)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята'); return; } callMethod($obj['TITLE'].".action",array("command"=>$m[1])); return; } } // если голосовых команд не найдено - отправим в чат callMethod("Chat_request.action",array("command"=>$command));
say("Отключено питание");
if ($params['VALUE']){ $this->setProperty('volumeLevel',$params['VALUE']); } $volume = $this->getProperty('volumeLevel'); safe_exec('amixer set Master '.$volume.'% unmute'); say("Изменилась громкость до ".$params['VALUE']." процентов");
Свойства класса:
Методы класса:
$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()); $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 (getGlobal('somebodyHome')!=1) { setGlobal('somebodyHome',1); } $last_register=registeredEventTime('inhouseMovement'); registerEvent('inhouseMovement',$this->name,2); if (!$last_register || ((time()-$last_register)>2*60*60)) { if (timeBetween('06:00', '12:00')) { runScript('morningGreeting'); } if (timeBetween('16:00', '01:00')) { runScript('eveningGreeting'); } } }
Свойства класса:
Методы класса:
$this->setProperty('balance',$params['balance']);
Объекты класса:
Свойства класса:
Методы класса:
if ($this->getProperty("status")){ $this->callMethod('turnOn'); }else{ $this->callMethod('turnOff'); }
$this->setProperty("status",1); $this->callMethod("sendCommand",array('command'=>'-on_ch '.$this->getProperty("channel")));
$this->setProperty("status",0); $this->callMethod("sendCommand",array('command'=>'-off_ch '.$this->getProperty("channel")));
$this->callMethod("sendCommand",array('command'=>'-unbind_ch '.$this->getProperty("channel")));
$cmdline='sleep 0.5; sudo /usr/bin/noolitepc -api '.$params['command']; safe_exec($cmdline); /* $last_called=gg('NoolightCommandSend'); if ((time()-$last_called)>2) { sg('NoolightCommandSend',time()); safe_exec($cmdline); // exec($cmdline); } else { $last_called+=2; sg('NoolightCommandSend',$last_called); AddScheduledJob("noolight".md5($cmdline),"safe_exec('".$cmdline."');",$last_called); } */
$buf2=$params['buf2']; // принятая команда if ($buf2==0){ //выключить нагрузку $this->setProperty("status",0); }elseif($buf2==2){ //включить нагрузку $this->setProperty("status",1); }elseif($buf2==4){ //включает или выключает нагрузку if ($this->getProperty("status")){ $this->setProperty("status",0); }else{ $this->setProperty("status",1); } }
$this->callMethod("sendCommand",array('command'=>'-bind_ch '.$this->getProperty("channel")));
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("status",0); $this->setProperty("brightness",0); $this->callMethod("refresh");
if ($params['value']) { $this->setProperty("brightness",$params['value']); $this->callMethod("refresh"); }
$value=$this->getProperty("brightness"); $this->callMethod("sendCommand",array('command'=>'-set_ch '.$this->getProperty("channel").' '.$value)); if ($value>0) { $this->setProperty('status',1); } else { $this->setProperty('status',0); }
$buf2=$params['buf2']; // принятая команда $buf3=$params['buf3']; // формат данных 0-нет, 1-1байт, 2-4байта $buf4=$params['buf4']; // Байт данных 0 $buf5=$params['buf5']; // Байт данных 1 $buf6=$params['buf6']; // Байт данных 2 $buf7=$params['buf7']; // Байт данных 3 if ($buf2==0){ //выключить нагрузку $this->setProperty("status",0); $this->setProperty("brightness",0); }elseif($buf2==1){ //запускает плавное понижение яркости //$this->setProperty("status",1); }elseif($buf2==2){ //включить нагрузку $this->setProperty("status",1); $this->setProperty("brightness",100); }elseif($buf2==3){ //запускает плавное повышение яркости //$this->setProperty("status",1); }elseif($buf2==4){ //включает или выключает нагрузку if ($this->getProperty("status")){ $this->setProperty("status",0); $this->setProperty("brightness",0); }else{ $this->setProperty("status",1); $this->setProperty("brightness",100); } }elseif($buf2==5){ //запускает плавное изменение яркости в обратном направлении //$this->setProperty("status",1); }elseif($buf2==6){ //установить заданную в «Байт данных 0» яркость $this->setProperty("brightness",$buf4); }elseif($buf2==10){ //остановить регулировку //$this->setProperty("status",1); }
$this->setProperty("status",1); $this->setProperty("brightness",100); $this->callMethod("refresh");
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date('H:i')); if ($this->getProperty('status')) { say("Mode ".$this->getProperty('title')." activated."); } else { say("Mode ".$this->getProperty('title')." deactivated."); }
$this->setProperty('active',1);
$this->setProperty('active',0);
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
$city_id=27530; $data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml?".rand(); // адрес xml файла //$data_file="http://export.yandex.ru/weather-ng/forecasts/33815.xml?".rand(); // адрес xml файла $xml = simplexml_load_file($data_file); // раскладываем xml на массив $temp=$xml->fact->temperature; // Если значение температуры положительно, для наглядности добавляем "+" if ($temp>0) {$temp='+'.$temp;} sg("Moscow.Temp",$temp); sg("Moscow.Pressure",$xml->fact->pressure); sg("Moscow.Humidity",$xml->fact->humidity); sg("Moscow.Uptime",$xml->fact->uptime); sg("Moscow.weather",$xml->fact->weather_type); sg("Moscow.Image",$xml->fact->image); sg("Moscow.Image2",$xml->fact->{'image-v3'}); $dir = $xml->fact->wind_direction; switch ($dir){ case 's': $dir="южный"; break; case 'n': $dir="северный"; break; case 'w': $dir="западный"; break; case 'e': $dir="восточный"; break; case 'sw': $dir="юго-западный"; break; case 'se': $dir="юго-восточный"; break; case 'nw': $dir="северо-западный"; break; case 'ne': $dir="северо-восточный"; break; case 'calm': $dir="штиль"; break; } sg("Moscow.wind_direction",$dir); sg("Moscow.wind_speed",$xml->fact->wind_speed); $dir = $xml->day[0]->moon_phase; switch ($dir){ case '0': $dir="Полнолуние"; break; case '1': $dir="Убывающая"; break; case '2': $dir="Убывающая"; break; case '3': $dir="Убывающая"; break; case '4': $dir="Убывающая"; break; case '5': $dir="Убывающая"; break; case '6': $dir="Убывающая"; break; case '7': $dir="Убывающая"; break; case '8': $dir="Новолуние"; break; case '9': $dir="Растущая"; break; case '10': $dir="Растущая"; break; case '11': $dir="Растущая"; break; case '12': $dir="Растущая"; break; case '13': $dir="Растущая"; break; case '14': $dir="Растущая"; break; case '15': $dir="Растущая"; break; } sg("Moscow.moon_img",$dir); //sg("Moscow.SunRise",$xml->day[0]->sunrise);// сегодня восход солнца //sg("Moscow.SunSet",$xml->day[0]->sunset);// сегодня заход солнца //sg("Moscow.moonrise",$xml->day[0]->moonrise);// сегодня восход луны //sg("Moscow.moonset",$xml->day[0]->moonset);// сегодня заход луны //sg("Moscow.moon_phase",$xml->day[0]->moon_phase);// фаза луны //$DayStart = explode(":",gg("Moscow.SunRise")); //$DayEnd = explode(":",gg("Moscow.SunSet")); //$transit = explode(":",gg("Moscow.transit")); //$civil_twilight_begin = explode(":",gg("Moscow.civil_twilight_begin")); //$h_start = (int)$DayStart[0]; //$m_start = (int)$DayStart[1]; //$h_end = (int)$DayEnd[0]; //$m_end = (int)$DayEnd[1]; //$dh = $h_end - $h_start; //$dm = $m_end - $m_start; //if ($dm<0){ //$dh=$dh-1; //$dm=$dm+60; //} //sg("Moscow.LongTag","$dh:$dm"); $status=""; $status.="Сейчас на улице ".gg("Moscow.Type").""; // ветер $WindSpeed=(float)gg("Moscow.WindSpeed"); if ($WindSpeed<1) { $status.='ветра нет.'; } elseif ($WindSpeed<3) { $status.='ветер слабый, '; } elseif ($WindSpeed<8) { $status.='ветер умеренный, '; } elseif ($WindSpeed<13) { $status.='ветер сильный, '; } elseif ($WindSpeed<20) { $status.='ветер очень сильный, '; } elseif ($WindSpeed<28) { $status.='ветер штормовой, '; } else { $status.='ветер очень очень сильный, УРАГАН, '; } $status.= $dir . ','; $status.='температура '.getGlobal('Moscow.Temp')."°C,"; $tm=(float)getGlobal('Moscow.Temp'); if ($tm<-40) { $status.=' Сибирь морозов не боится!'; } elseif ($tm<-20) { $status.=' очень холодно, оденьтесь теплее.'; } elseif ($tm<-10) { $status.=' холодновато.'; } elseif ($tm<-3) { $status.=' не особо холодно.'; } elseif ($tm<3) { $status.=' значит возможно гололёд.'; } elseif ($tm<10) { $status.=' тепловато.'; } elseif ($tm<25) { $status.=' очень тепло.'; } elseif ($tm<45) { $status.=' жарко.'; } $status.=' Восход солнца в '.getGlobal('Moscow.SunRise').','; $status.=' закат в '.getGlobal('Moscow.SunSet').','; $status.=' долгота дня '.getGlobal('Moscow.LongTag').'.'; sg('Moscow.WeatherDnes',$status); $w3days="Сегодня днём ожидается температура не выше "; $temp=$xml->day[0]->day_part[1]->temperature_to; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[0]->day_part[1]->weather_type; $w3days.=", давление "; $w3days.=$xml->fact->pressure; $w3days.=" миллиметров ртутного столба, влажность "; $w3days.=$xml->fact->humidity; $w3days.="процентов, ветер "; $dir = $xml->fact->wind_direction; switch ($dir){ case 's': $dir="южный"; break; case 'n': $dir="северный"; break; case 'w': $dir="западный"; break; case 'e': $dir="восточный"; break; case 'sw': $dir="юго-западный"; break; case 'se': $dir="юго-восточный"; break; case 'nw': $dir="северо-западный"; break; case 'ne': $dir="северо-восточный"; break; case 'calm': $dir="штиль"; break; } $w3days.=$dir; $w3days.=" - "; $w3days.=$xml->fact->wind_speed; $w3days.=" метров в секунду, а ночью будет "; $temp=$xml->day[0]->day_part[3]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов. "; $w3days.=' '; $w3days.="Завтра днём будет "; $w3days.=$xml->day[1]->day_part[1]->weather_type; $w3days.=", воздух прогреется до "; $temp=$xml->day[1]->day_part[1]->temperature_to; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.="а ночью температура опустится до "; $temp=$xml->day[1]->day_part[3]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов. "; $w3days.=' '; $w3days.="Послезавтра прогреется днём до "; $temp=$xml->day[2]->day_part[1]->temperature_to; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.="на небе будет "; $w3days.=$xml->day[2]->day_part[1]->weather_type; $w3days.=", а к вечеру температура упадет до "; $temp=$xml->day[2]->day_part[3]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов. "; sg("Moscow.Weather3days",$w3days); $sun_info = date_sun_info(time(), 55.7522200, 37.6155600); foreach ($sun_info as $key => $val) { if ($key == 'sunrise') { $sunrise = $val; //echo 'Восход: '.date("H:i:s", $sunrise).' setGlobal('Moscow.SunRise',date("H:i:s", $sunrise)); } if ($key == 'sunset') { $sunset = $val; $day_length = $sunset - $sunrise; echo 'Заход: '.date("H:i", $sunset).' '; echo 'Долгота дня: '.gmdate("H:i", $day_length).' '; setGlobal('Moscow.SunSet',date("H:i:s", $sunset)); setGlobal('Moscow.LongTag',gmdate("H:i:s", $day_length)); } if ($key == 'transit') { $transit = $val; echo 'В зените: '.date("H:i:s", $transit).' '; setGlobal('Moscow.Transit',date("H:i:s", $transit)); } if ($key == 'civil_twilight_begin') { $civil_twilight_begin = $val; echo 'Начало утренних сумерек: '.date("H:i:s", $civil_twilight_begin).' '; setGlobal('Moscow.civil_begin',date("H:i:s", $civil_twilight_begin)); } if ($key == 'civil_twilight_end') { $civil_twilight_end = $val; echo 'Конец вечерних сумерек: '.date("H:i:s", $civil_twilight_end).' '; setGlobal('Moscow.civil_end',date("H:i:s", $civil_twilight_end)); $noy_length = $civil_twilight_end - $civil_twilight_begin; setGlobal('Moscow.nayt',gmdate("H:i:s", $noy_length)); echo 'Долгота ночи: '.gmdate("H:i", $noy_length).' '; } } setGlobal('ThisComputer.info_sinoptik', $status);
Свойства класса:
Методы класса:
$city_id=$this->getProperty('Id'); $data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml?".rand(); // адрес xml файла $xml = simplexml_load_file($data_file); // раскладываем xml на массив $temp=$xml->fact->temperature; // Если значение температуры положительно, для наглядности добавляем "+" if ($temp>0) {$temp='+'.$temp;} sg("Yandex.Temp",$temp); sg("Yandex.Type",$xml->fact->weather_type); sg("Yandex.Pressure",$xml->fact->pressure); sg("Yandex.Humidity",$xml->fact->humidity); $WindSpeed=round($xml->fact->wind_speed); sg("Yandex.WindSpeed",$WindSpeed); sg("Yandex.Image",$xml->fact->image); $dir = $xml->fact->wind_direction; switch ($dir){ case 's': $dir="южный"; break; case 'n': $dir="северный"; break; case 'w': $dir="западный"; break; case 'e': $dir="восточный"; break; case 'sw': $dir="юго-западный"; break; case 'nw': $dir="северо-западный"; break; case 'se': $dir="юго-восточный"; break; case 'ne': $dir="северо-восточный"; break; case 'calm': $dir="штиль"; break; } sg("Yandex.WindDir",$dir); sg("Yandex.Sunrise",$xml->day[0]->sunrise); sg("Yandex.Sunset",$xml->day[0]->sunset); $status=""; $status.="На улице ".gg("Yandex.Type")."."; // ветер if ($WindSpeed<1) { $status.=' Ветра нет.'; } elseif ($WindSpeed<3) { $status.=' Ветер слабый, '; } elseif ($WindSpeed<8) { $status.=' Ветер умеренный, '; } elseif ($WindSpeed<13) { $status.=' Ветер сильный, '; } elseif ($WindSpeed<20) { $status.=' Ветер очень сильный, '; } elseif ($WindSpeed<28) { $status.=' Ветер штормовой, '; } else { $status.=' Ветер очень очень сильный, УРАГАН, '; } $status.= $dir . '.'; $status.=' Температура '.getGlobal('Yandex.Temp')."°C,"; $tm=(float)getGlobal('Yandex.Temp'); if ($tm<-40) { $status.=' Сибирь морозов не боится!'; } elseif ($tm<-20) { $status.=' очень холодно, оденьтесь теплее.'; } elseif ($tm<-10) { $status.=' холодновато.'; } elseif ($tm<-3) { $status.=' не особо холодно.'; } elseif ($tm<3) { $status.=' значит возможно гололёд.'; } elseif ($tm<10) { $status.=' тепловато.'; } elseif ($tm<25) { $status.=' очень тепло.'; } elseif ($tm<45) { $status.=' жарко.'; } //$status.=' Восход солнца в '.getGlobal('Yandex.SunRise').','; //$status.=' закат в '.getGlobal('Yandex.SunSet').'.'; sg('Yandex.WeatherDnes',$status); $w3days="Сегодня ночью будет "; $temp=$xml->day[0]->day_part[5]->temperature; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[0]->day_part[5]->weather_type; $w3days.=". Завтра днём "; $temp=$xml->day[1]->day_part[4]->temperature; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[1]->day_part[4]->weather_type; $w3days.=". На вторые сутки ночью будет "; $temp=$xml->day[1]->day_part[5]->temperature; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[1]->day_part[5]->weather_type; $w3days.=". Днём "; $temp=$xml->day[2]->day_part[4]->temperature; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[2]->day_part[4]->weather_type; $w3days.=". На третьи сутки ночью будет "; $temp=$xml->day[2]->day_part[5]->temperature; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[2]->day_part[5]->weather_type; $w3days.=". Днём "; $temp=$xml->day[3]->day_part[4]->temperature; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.=" градусов, "; $w3days.=$xml->day[3]->day_part[4]->weather_type; sg("Yandex.Weather3days",$w3days);
say($this->getProperty('Weather3days'));
say($this->getProperty('WeatherDnes'));
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
// if (getGlobal("Radio.RadioIsPlay")){ say("Включаю радио"); // safe_exec("mpc play 1"); // getURL('http://192.168.1.102:6600/requests/status.xml?command=pl_empty',0); // getURL('http://192.168.1.102:6600/requests/status.xml?command=in_play&input=http://stream-sd.radioparadise.com:8056',0); safe_exec("mpc add http://stream-sd.radioparadise.com:8056"); safe_exec("mpc play 1"); setGlobal("Radio.RadioPlayBeginTime",time()); }else{ safe_exec("mpc stop"); // getURL('http://192.168.1.102:6600/requests/status.xml?command=pl_stop',0); say("Радио выключено"); }
if(!getGlobal("NobodyHomeMode.active")){ $this->setProperty("RadioIsPlay",1); $this->callMethod("RadioSwitch"); }else{ say('Никого нет дома, радио не включаю'); }
$this->setProperty("RadioIsPlay",0); $this->callMethod("RadioSwitch");
// say("Установим уровень громкости радио ".getGlobal("Radio.RadioVolume")." %."); exec("mpc volume ".getGlobal("Radio.RadioVolume")); // say("Установим уровень громкости радио ".getGlobal("Radio.RadioVolume").""); // $vol=gg("Radio.RadioVolume"); //getURL('http://:18616837@127.0.0.1:8080/requests/status.xml?command=volume&val='.$vol,0); // $host=gg("ThisComputer.HOST"); // $port=gg("ThisComputer.PORT"); // $user=gg("ThisComputer.USER"); // $pass=gg("ThisComputer.PASS"); // getURL('http://:18616837@'.$host.":".$port.'/requests/status.xml?command=volume&val='.$vol,0); // getURL('http://'.$user.':'.$pass.'@'.$host.":".$port.'/requests/status.xml?command=volume&val='.$vol,0);
include_once(DIR_MODULES.'app_radio/app_radio.class.php'); $app_radio=new app_radio(); $app_radio->control('play');//вкл радио || $app_radio->control('stop') выкл радио
Свойства класса:
Методы класса:
$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);
Объекты класса:
Свойства класса:
Методы класса:
$latestActivity=$this->getProperty('LatestActivity'); $this->setProperty('LatestActivity',time()); $this->setProperty('LatestActivityTime',date('H:i')); $this->setProperty('SomebodyHere',1); $ot=$this->object_title; $activity_timeout=10*60; clearTimeOut($ot."_activity_timeout"); setTimeOut($ot."_activity_timeout","callMethod('".$ot.".onIdle');",$activity_timeout);
$this->setProperty('SomebodyHere',0);
Объекты класса:
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title='Red'; } elseif ($yellow_state) { $state='yellow'; $state_title='Yellow'; } else { $state='green'; $state_title='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("System state changed to ".$state_title."."); say(implode(". ",$details)); } else { say("System state restored to ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; $cycles=array('states'=>'states cycle','main'=>'main cycle','execs'=>'exec cycle','scheduler'=>'scheduler cycle'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]=$v." stopped."; } } $cycles=array('ping'=>'ping cycle','webvars'=>'webvars cycle','watchfolders'=>'watch folders cycle','rss'=>'RSS cycle'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]=$v." stopped."; } } if ($red_state) { $state='red'; $state_title='Red'; } elseif ($yellow_state) { $state='yellow'; $state_title='Yellow'; } else { $state='green'; $state_title='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("System state changed to ".$state_title."."); say(implode(". ",$details)); } else { say("System state restored to ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title='Red'; } elseif ($yellow_state) { $state='yellow'; $state_title='Yellow'; } else { $state='green'; $state_title='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("System state changed to ".$state_title."."); say(implode(". ",$details)); } else { say("System state restored to ".$state_title); } $this->callMethod('stateChanged'); }
Свойства класса:
Методы класса:
//$params['t'] $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("H:i",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=30*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); if (!isset($params['t'])) { return; } $old_temp=$this->getProperty('temp'); $t=round($params['t'],1); if ($t>110) return; $this->setProperty('temp',$t); if ($params['uptime']) { $this->setProperty('uptime',$params['uptime']); } if ($t>$old_temp) { $d=1; } elseif ($t<$old_temp) { $d=-1; } else { $d=0; } $this->setProperty('direction',$d); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.Temperature',$t); }
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
$h=(int)date('G',time()); $m=date('i',time()); // if (timeIs('08:30')) { // setGlobal("minMsgLevel",0);//включаем озвучку сообщений // setGlobal("ThisComputer.AliseOn",1);//включаем переключатель алисы // setGlobal("Alisemenu",Вкл);//надпись в меню вкл // } // if (($h>=9)) { // if ($m=="00") { // say(timeNow()); // } // } //проговаривать время $st=""; $stm=(gg("ThisComputer.Say_time_X")); if ($stm=='Не говорить') { $st.=($m=="70"); } elseif ($stm=='Каждые 15 минут') { $st.=(($m=="00")||($m=="15")||($m=="30")||($m=="45")); } elseif ($stm=='Каждые пол часа') { $st.=(($m=="00")||($m=="30")); } else{ $st.=($m=="00"); } if ($st){ say(timeNow()); } //проговаривать погоду $sp=""; $stp=(gg("ThisComputer.SayPogX")); if ($stp=='Не говорить') { $sp.=($m=="70"); } elseif ($stp=='Каждые 15 минут') { $sp.=(($m=="00")||($m=="15")||($m=="30")||($m=="45")); } elseif ($stp=='Каждые пол часа') { $sp.=(($m=="00")||($m=="30")); } else{ $sp.=($m=="00"); } if ($sp){ runScript("AliseSaypogoda"); } //будильник $objects=getObjectsByClass("AlarmClock"); foreach($objects as $obj) { // переберем все будильники в системе if (getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника } } // $objects=getObjectsByClass("ArduinoMaster"); // foreach($objects as $obj) { // переберем все сенсоры в классе // callMethod($obj['TITLE'].".sendValue"); // выполним метод // } //В обед расскажем анекдот //if (timeIs('12:30')) { // callMethod("Chat_request.action",array("command"=>"Расскажи анекдот")); // say("Анекдот:"); //} //Читаем состояние сенсоров сервера // RunScript('sensorsUbuntu'); callMethod("Moscow.update"); //Подписываем на события таймера методы проверок //всех заитересованных объектов //при этом код проверки инкапсулирован в самом объекте // Режим Охрана callMethod("SecurityArmedMode.check"); // Режим Никого нет дома callMethod("NobodyHomeMode.check"); // Режим У нас гости callMethod("GuestsMode.check"); // Режим Все спят callMethod("SleepAllMode.check"); //выключаем озвучку // if (timeIs('22:58')) { // setGlobal("minMsgLevel",1); // setGlobal("ThisComputer.AliseOn",0);//выключаем переключатель алисы // setGlobal("Alisemenu",Выкл);//надпись в меню выкл // }
Методы класса:
Объекты класса:
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']); } }
Свойства класса:
Методы класса:
Объекты класса:
say('Точное время '.timeNow(),1);
$status=""; $status.="На улице ".gg("YandexMoscow.Type")."."; say($status,1); $status=""; // ветер $WindSpeed=(float)gg("YandexMoscow.WindSpeed"); if ($WindSpeed<1) { $status.=' Ветра нет.'; } elseif ($WindSpeed<3) { $status.=' Ветер слабый.'; } elseif ($WindSpeed<6) { $status.=' Ветер сильный.'; } elseif ($WindSpeed<9) { $status.=' Ветер очень сильный.'; } else { $status.=' Ветер очень! Очень сильный.'; } $status.=' Направление '.getGlobal('YandexMoscow.WindDir').'.'; say($status,1); // Температура $status=""; $tNew = abs((float)getGlobal('YandexMoscow.Temp')); if ($tNew==1){ $tGradus = 'градус'; }elseif($tNew==2 || $tNew==3 || $tNew==4){ $tGradus = 'градуса'; }else{ $tGradus = 'градусов'; } $status.=' Температура '.getGlobal('YandexMoscow.Temp')." ".$tGradus; say($status,1); $status=""; // $status.=' Восход солнца сегодня в '.getGlobal('YandexSamara.SunRise').','; // $status.=' закат в '.getGlobal('YandexSamara.SunSet').'.'; // Общий прогноз say(getGlobal('Sinoptik.description'),1); // Сравнение со вчерашним днем $tNew = (float)getGlobal('YandexMoscow.Temp'); $tOld = (float)getGlobal('YandexMoscow.tempYesterday'); $tDelta = abs($tNew - $tOld); if ($tDelta==1){ $tGradus = 'градус'; }elseif($tDelta==2 || $tDelta==3 || $tDelta==4){ $tGradus = 'градуса'; }else{ $tGradus = 'градусов'; } if ($tNew>$tOld){ say("Сегодня теплее, чем вчера на ".$tDelta." ".$tGradus.".",1); }elseif($tNew<$tOld){ say("Сегодня холоднее, чем вчера на ".$tDelta." ".$tGradus.".",1); }elseif($tNew==$tOld){ say("Температура сегодня такая же как вчера.",1); } // Пробки. $status.=' '.getGlobal('ThisComputer.ProbkiText').'.'; say($status,1);
say('Я - Cистема домашней автоматизации. Меня зовут: Элис.');
$command=$params['command']; say($command);
say('Спокойной ночи');
say(gg("ThisComputer.weatherFull"));
class ModIiiRu { // IiiID можно взять из ссылки на бота из рейтинга const IiiID = '3aecd642-3f4c-431d-8124-123906a34882'; // выдери ответ нужного ифа и подставь в нижнюю строку // const IiiID = '6d739a70-bc74-46f6-8a95-79730c2e6ed0'; 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);
if(timeBetween("05:00", "11:00")){ say("Доброе утро!",1); }elseif(timeBetween("11:00", "17:00")){ say("Добрый день!",1); }elseif(timeBetween("17:00", "23:00")){ say("Добрый вечер!",1); }elseif(timeBetween("23:00", "05:00")){ say("Доброй ночи!",1); }else{ // Новое, неизвестное время суток. say('Привет!',1); }
// здесь код включающий интернет радио callMethod("Radio.RadioPlay");
// здесь код выключающий интернет радио callMethod("Radio.RadioStop");
$command=$params['command']; runScript("AddEvernote",$command.$subject); say("Я запомнила.");
$command=$params['command']; say("Очень приятно познакомиться " . $command.$subject . ", меня зовут Элис.");
say('Меня зовут Элис');
$command=$params['command']; say($command);
Свойства класса:
Объекты класса:
Свойства класса:
Объекты класса:
, Россия
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving