Class properties:
Class methods:
Class objects:
// это однократный будильник, выключем его sg("AlarmOne.AlarmOn",0); // все проснулись setGlobal("SleepAllMode.active",0); say('Пора вставать!'); // включим радио callMethod("Radio.RadioPlay"); // запланируем выключить радио через 1час SetTimeOut("AlarmOne_RadioStop",'callMethod("Radio.RadioStop");', 3600); // если на улице темно if(timeBetween(gg("YandexSamara.SunSet"),gg("YandexSamara.SunRise"))){ // плавное включение Бра в спальне callMethod("NooLiteD_SpalnyaBra.dim",array("value"=>5)); SetTimeOut("nl_lowOn_SpalnyaBra",'runScript("nl_lowOn_SpalnyaBra");', 60); // Запланируем выключить его через полчаса SetTimeOut("AlarmWeekEnd_BraOff",'callMethod("NooLiteD_SpalnyBra.turnOff");', 30*60); }
if (isWeekEnd()){ // сегодня выходной день // все проснулись setGlobal("SleepAllMode.active",0); say('Пора вставать!'); // включим радио callMethod("Radio.RadioPlay"); // запланируем выключить радио через 25 минут SetTimeOut("AlarmWeekEnd_RadioStop",'callMethod("Radio.RadioStop");', 60*25); // запланируем напоминание о точном времени и доклад погоды SetTimeOut("AlarmWeekEnd_timeNow1",'callMethod("сколько время.action");', 60*30); SetTimeOut("AlarmWeekEnd_Pogoda", 'callMethod("погода на улице.action");', 60*35); SetTimeOut("AlarmWeekEnd_timeNow2",'callMethod("сколько время.action");', 60*40); SetTimeOut("AlarmWeekEnd_timeNow3",'callMethod("сколько время.action");', 60*50); // если на улице темно if(timeBetween(gg("YandexSamara.SunSet"),gg("YandexSamara.SunRise"))){ // плавное включение Бра в спальне callMethod("NooLiteD_SpalnyaBra.dim",array("value"=>5)); SetTimeOut("nl_lowOn_SpalnyaBra",'runScript("nl_lowOn_SpalnyaBra");', 60); // Запланируем выключить его через полчаса SetTimeOut("AlarmWeekEnd_BraOff",'callMethod("NooLiteD_SpalnyBra.turnOff");', 30*60); } }
if (isWeekDay()){ // сегодня рабочий день // все проснулись setGlobal("SleepAllMode.active",0); say('Пора вставать!'); // включим радио callMethod("Radio.RadioPlay"); // запланируем выключить радио AddScheduledJob("AlarmWeekDay_RadioStop",'callMethod("Radio.RadioStop");', recognizeTime("в 6:55")); // запланируем напоминание о выходе из дома и доклад погоды AddScheduledJob("AlarmWeekDay_timeNow1",'callMethod("сколько время.action");', recognizeTime("в 06:45")); AddScheduledJob("AlarmWeekDay_timeNow1",'callMethod("сколько время.action");', recognizeTime("в 7:00")); AddScheduledJob("AlarmWeekDay_Pogoda", 'callMethod("прогноз погоды.action");', recognizeTime("в 07:05")); AddScheduledJob("AlarmWeekDay_TaskExist1",'callMethod("TaskExistMode.modeChanged");', recognizeTime("в 7:07")); AddScheduledJob("AlarmWeekDay_timeNow2",'callMethod("сколько время.action");', recognizeTime("в 7:10")); // AddScheduledJob("AlarmWeekDay_Pogoda", 'callMethod("погода при движении в зале.action");', recognizeTime("в 07:05")); AddScheduledJob("AlarmWeekDay_timeNow3",'callMethod("сколько время.action");', recognizeTime("в 7:20")); AddScheduledJob("AlarmWeekDay_timeNow4",'callMethod("сколько время.action");', recognizeTime("в 7:30")); // Запланируем в 17-00 на 30 минут включить вытяжку и вентиляцию AddScheduledJob("AlarmWeekDay_vent30min",'runScript("ventilyation30min");', recognizeTime("в 17:00")); // если на улице темно if(timeBetween(gg("YandexSamara.SunSet"),gg("YandexSamara.SunRise"))){ // плавное включение Бра в спальне callMethod("NooLiteD_SpalnyaBra.dim",array("value"=>5)); SetTimeOut("nl_lowOn_SpalnyaBra",'runScript("nl_lowOn_SpalnyaBra");', 60); // Запланируем выключить его через полчаса SetTimeOut("AlarmWeekEnd_BraOff",'callMethod("NooLiteD_SpalnyBra.turnOff");', 30*60); } }
Class properties:
Class methods:
$consumption = $this->getProperty("balance_old") - $this->getProperty("balance"); if ($consumption > 0){ $this->setProperty("consumption", $consumption); }elseif($this->getProperty("consumption")!=0){ $this->setProperty("consumption", 0); } $this->setProperty("balance_old",$this->getProperty("balance"));
Class objects:
Class methods:
Class objects:
// 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'].' уже дома'); } say($params['user'].' пришел'); // отладка } if ($params['new']) { //say('Обнаружено новое блютуз устройство'); }
// device lost registerEvent('bluetooth_lost_'.$params['mac']); // say($params['user'].' ушел'); // отладка
Class properties:
Class methods:
Class objects:
if ($params['VALUE']){ $this->setProperty('volumeLevel',$params['VALUE']); } $volume = $this->getProperty('volumeLevel'); safe_exec('amixer set Master '.$volume.'% unmute'); say("Изменилась громкость до ".$params['VALUE']." процентов");
$command=trim($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("Отключено питание");
Class properties:
Class methods:
//$this->setProperty('status',$params['status']); $this->setProperty('updatedTimestamp',time()); $this->setProperty("updatedTime",date("H:i",time())); $this->setProperty("updatedDateTime",date("d.m.Y H:i:s",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=24*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
Class objects:
sg('Relay_Hallway_Light.status',1); // включить свет в корридоре
if (gg("sensorDoorLockUp.status") and gg("NobodyHomeMode.active")==0) { sg('NooLiteD_KuhnyaTop.status',0); sg('NooLiteD_KuhnyaTop.brightness',0); sg('NooLiteD_KuhnyaBra.status',0); sg('NooLiteD_KuhnyaBra.brightness',0); sg('NooLiteD_KuhnyaVit.status',0); sg('NooLiteD_KuhnyaVit.brightness',0); sg('NooLiteD_SpalnyaTop.status',0); sg('NooLiteD_SpalnyaTop.brightness',0); sg('NooLiteD_SpalnyaBra.status',0); sg('NooLiteD_SpalnyaBra.brightness',0); sg('NooLiteD_ZalTop.status',0); sg('NooLiteD_ZalTop.brightness',0); sg('NooLiteD_TualetTop.status',0); sg('NooLiteD_TualetTop.brightness',0); sg('NooLiteD_TualetVit.status',0); sg('NooLiteD_TualetVit.brightness',0); sg('NooLiteD_TualetTP.status',0); sg('NooLiteD_TualetTP.brightness',0); sg('Relay_Hallway_Light.status',0); // выключить свет в корридоре SetTimeOut("NooLite_RGB_Off",'callMethod("NooLite_RGB_1.check");', 2*60); sg("NobodyHomeMode.active",1); }
sg('Relay_Hallway_Light.status',1); // включить свет в корридоре
if ($this->getProperty("status")){// дверь закрыта callMethod('NooLite_RGB_1.setColor',array("brightness"=>50,"R"=>100,"G"=>100,"B"=>100)); ClearTimeOut("NooLite_RGB_Off"); SetTimeOut("NooLite_RGB_Off",'callMethod("NooLite_RGB_1.check");', 2*60); sg('Relay_RGB_Right.status',1); ClearTimeOut("Relay_RGB_Right_Off"); SetTimeOut("Relay_RGB_Right_Off",'sg("Relay_RGB_Right.status",0);', 2*60); }else{ // дверь открыта ClearTimeOut("Relay_RGB_Right_Off"); ClearTimeOut("NooLite_RGB_Off"); sg('Relay_RGB_Right.status',1); callMethod('NooLite_RGB_1.setColor',array("brightness"=>50,"R"=>100,"G"=>100,"B"=>100)); sg('Relay_Hallway_Light.status',1); // включить свет в корридоре }
if(gg('sensorDoorbell.status')){ safe_exec('wget -O /var/www/ftp/Doorbell'.date("YmdHis").'.jpg http://192.168.1.111:8080/?action=snapshot'); Say('Внимание! Кто-то звонит в дверь!',1); safe_exec('wget -O /var/www/ftp/Doorbell'.date("YmdHis").'.jpg http://192.168.1.111:8080/?action=snapshot'); }
// здесь подписываем оъекты на событие изменения состояния // суммарного датчика движения callMethod('SecurityArmedMode.check'); // охрана callMethod('NobodyHomeMode.check'); // никого нет дома
//Устанавливаем заначения в суммарный датчик движения if (getGlobal("sensorMovement1.status")==0 && getGlobal("sensorMovement2.status")==0 && getGlobal("sensorMovementSUM.status")==1){ callMethod("sensorMovementSUM.statusChanged",array("status"=>0)); }elseif(getGlobal("sensorMovement2.status")==1 && getGlobal("sensorMovementSUM.status")==0){ callMethod("sensorMovementSUM.statusChanged",array("status"=>1)); }
//if ($this->getProperty('status')) { if (getGlobal("sensorLight.status")) { say('Светает'); } else { say('Стемнело'); }
//Устанавливаем заначения в суммарный датчик движения if (getGlobal("sensorMovement1.status")==0 && getGlobal("sensorMovement2.status")==0 && getGlobal("sensorMovementSUM.status")==1){ callMethod("sensorMovementSUM.statusChanged",array("status"=>0)); }elseif(getGlobal("sensorMovement1.status")==1 && getGlobal("sensorMovementSUM.status")==0){ callMethod("sensorMovementSUM.statusChanged",array("status"=>1)); }
if ($this->getProperty("status")){// датчик не активирован sg('Relay_RGB_Right.status',1); // ClearTimeOut("Relay_RGB_Right_Off"); SetTimeOut("Relay_RGB_Right_Off",'sg("Relay_RGB_Right.status",0);', 2*60); callMethod('NooLite_RGB_1.setColor',array("brightness"=>20,"R"=>gg('NooLite_RGB_1.R'),"G"=>gg('NooLite_RGB_1.G'),"B"=>gg('NooLite_RGB_1.B'))); // ClearTimeOut("NooLite_RGB_Off"); SetTimeOut("NooLite_RGB_Off",'callMethod("NooLite_RGB_1.check");', 2*60); }else{ // датчик активирован // ClearTimeOut("Relay_RGB_Right_Off"); // ClearTimeOut("NooLite_RGB_Off"); sg('Relay_RGB_Right.status',1); callMethod('NooLite_RGB_1.setColor',array("brightness"=>20,"R"=>gg('NooLite_RGB_1.R'),"G"=>gg('NooLite_RGB_1.G'),"B"=>gg('NooLite_RGB_1.B'))); }
Class properties:
Class methods:
$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'); } } }
Class properties:
Class objects:
Class properties:
Class methods:
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date('H:i')); if ($this->getProperty('active')) { say("Режим ".$this->getProperty('title')." включен."); } else { say("Режим ".$this->getProperty('title')." выключен."); }
$this->setProperty('active',1);
$this->setProperty('active',0);
Class objects:
if (($this->getProperty('active')) // режим напом. вкл. &&(!gg(NobodyHomeMode.active)) // кто-то дома &&(!gg(SleepAllMode.active))){ // и он не спит if (!gg("ReminderColor.status")){ // если не горит callMethod("ReminderColor.sendCommand",array("command"=>"red")); // зажигаем } } else { // иначе if (gg("ReminderColor.status")){ // если горит callMethod("ReminderColor.sendCommand",array("command"=>"off")); // тушим } }
if (file_exists('./modules/app_calendar/app_calendar.class.php')) { include_once('./modules/app_calendar/app_calendar.class.php'); $calendar=new app_calendar(); $calendar->usual($out); $events=$out['EVENTS_TODAY']; $task_exists=0; if (is_array($events)) { $total=count($events); $tasks=array(); for($i=0;$i<$total;$i++) { if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') { $tasks[]=$events[$i]['TITLE']; } } $total_tasks=count($tasks); if ($total_tasks) { $task_exists=1; } } $events=$out['EVENTS_PAST']; // напоминание о пропущенных задачах if ($events[0]['TITLE']) { $task_exists=1; } if ($this->getProperty("active")!=$task_exists){ $this->setProperty("active",$task_exists); } }
if ($this->getProperty('active')) { // отключаем голосовые сообщения с обычным приорететом setGlobal('minMsgLevel',2); //Выключим теплый пол // callMethod("NooLiteD_TualetTP.turnOff"); // напоминалка if (gg("NooLite_300.status")){ callMethod("NooLite_300.turnOff"); } } else { // включаем голосовые сообщения с обычным приорететом setGlobal('minMsgLevel',1); //Включим теплый пол callMethod("NooLiteD_TualetTP.turnOn"); // напоминалка callMethod("TaskExistMode.modeChanged"); }
if (!getGlobal("SleepAllMode.active") // Режим "Все спят" выключен &&!getGlobal("NobodyHomeMode.active") // Режим Никого нет дома выключен // весь свет выключен &&!gg("NooLiteD_SpalnyaTop.status") &&!gg("NooLiteD_SpalnyaBra.status") &&!gg("NooLiteD_ZalTop.status") &&!gg("NooLiteD_KuhnyaTop.status") &&!gg("NooLiteD_KuhnyaBra.status") &&!gg("NooLiteD_TualetTop.status") &&!gg("NooLiteD_ZalBra.status") &&(gg("BigComp.status")==2) // компьютер выключен &&(time()-gg("WebCamScreen01.timeStamp")>35*60) // движение > 35 мин назад // &&(getGlobal("sensorMovementSUM.updatedTimestamp")<strtotime("-1 hour"))// последнее движение было ранее чем 1 час назад &&timeBetween(gg("YandexSamara.SunSet"),gg("YandexSamara.SunRise"))) // темно { // Значит люди спят setGlobal("SleepAllMode.active",1); }
if ($this->getProperty("active")){ if (gg('ema.charging')==0){ if(timeBetween("05:00", "08:00")){ $saytext = "Удачного дня!"; }elseif(timeBetween("08:00", "17:00")){ $saytext = "Всего доброго!"; }elseif(timeBetween("17:00", "21:00")){ $saytext = "Приятной прогулки!"; }else{ $saytext = "До свидания!"; } // Пробки. // $saytext = $saytext.' '.getGlobal('ThisComputer.ProbkiText'); say111($saytext,-25); }else{ say111("Внимание! Миша забыл телефон дома.",-25); } // выключим весь свет runScript('nl_TurnOffAll'); // выключим звук runScript('mute'); }else{ // кто-то дома callMethod("привет.action"); if (gg('lemur.isHome')==0){ say("Лена сейчас ".gg("lemur.Location"),1); }else{ say('Приветствую Вас, Лена',1); } if (gg('ema.isHome')==0){ say("Миша сейчас ".gg("ema.Location"),1); }else{ say('Приветствую Вас, Миша',1); } //Включим теплый пол callMethod("NooLiteD_TualetTP.turnOn"); //Включим световой будильник callMethod("NooLite_RGB_1.check"); // напоминалка callMethod("TaskExistMode.modeChanged"); //Наромним о делах runScript('sayTodayAgenda'); }
// Проверка датчика движения /* if (getGlobal("NobodyHomeMode.active") // никого нет дома &&!getGlobal("SecurityArmedMode.active") // охраны нет &&getGlobal("sensorMovementSUM.status")){ // движение ЕСТЬ //В режиме никого нет дома обраружено движение. Значит пришли люди. setGlobal("NobodyHomeMode.active",0); } if (!getGlobal("NobodyHomeMode.active") // Режим Никого нет дома выключен &&!getGlobal("SecurityArmedMode.active") // охраны нет &&!getGlobal("SleepAllMode.active") // спящих нет &&!getGlobal("sensorMovementSUM.status") // движения НЕТ &&(getGlobal("sensorMovementSUM.updatedTimestamp")<strtotime("-1 hour"))// последнее движение было ранее чем 1 час назад &&timeBetween("10:00", "21:00")){ // Значит люди ушли. setGlobal("NobodyHomeMode.active",1); } */
if ($this->getProperty("active")){ //say('У нас гости.',1); callMethod('NooLite_RGB_1.setColor',array("brightness"=>100,"R"=>0,"G"=>100,"B"=>0)); callMethod('NooLite_RGB_1.setColor',array("brightness"=>100,"R"=>100,"G"=>100,"B"=>100)); sg('NooLite_RGB_1.rolling',1); callMethod('NooLite_RGB_1.refresh'); }else{ //say('До свидания, гости дорогие.',1); sg('NooLite_RGB_1.rolling',0); callMethod('NooLite_RGB_1.setColor',array("brightness"=>100,"R"=>0,"G"=>0,"B"=>100)); callMethod('NooLite_RGB_1.setColor',array("brightness"=>100,"R"=>100,"G"=>100,"B"=>100)); }
// Проверка датчика движения if (getGlobal("SecurityArmedMode.active") &&getGlobal("sensorMovementSUM.status")){ //При включенной охране обраружено движение. ТРЕВОГА!!! ТРЕВОГА!!! say("Внимание! Тревога! обнаружено движение!",5); }
if($this->getProperty('active')){ // Принудительно гасим все датчики движения setGlobal("sensorMovement1.status",0); setGlobal("sensorMovement2.status",0); // При постановке на охрану никого не должно быть дома setGlobal("NobodyHomeMode.active",1); // При постановке на охрану гостей выпроваживаем setGlobal("GuestsMode.active",0); }else{ // При снятии с охраны дома появляются люди setGlobal("NobodyHomeMode.active",0); }
Class properties:
Class methods:
Class objects:
$this->setProperty("RadioIsPlay",0); $this->callMethod("RadioSwitch");
if(!getGlobal("NobodyHomeMode.active")){ $this->setProperty("RadioIsPlay",1); $this->callMethod("RadioSwitch"); }else{ say('Никого нет дома, радио не включаю'); }
// if (getGlobal("Radio.RadioIsPlay")){ say("Включаю радио"); // safe_exec("mpc play 1"); getURL('http://192.168.1.140:8080/requests/status.xml?command=pl_empty',0); getURL('http://192.168.1.140:8080/requests/status.xml?command=in_play&input=http://air.verdure.net:8881/listen.pls',0); // getURL('http://192.168.1.140:8080/requests/status.xml?command=in_play&input=http://streaming.radionomy.com/The-Smooth-Lounge',0); // getURL('http://192.168.1.140:8080/requests/status.xml?command=in_play&input=http://stream-sd.radioparadise.com:8056',0); setGlobal("Radio.RadioPlayBeginTime",time()); }else{ // safe_exec("mpc stop"); getURL('http://192.168.1.140:8080/requests/status.xml?command=pl_stop',0); say("Радио выключено"); }
say("Установим уровень громкости радио ".getGlobal("Radio.RadioVolume")." %."); exec("mpc volume ".getGlobal("Radio.RadioVolume"));
Class properties:
Class methods:
$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('updatedTimestamp',time()); $this->setProperty("updatedTime",date("H:i",time()));
Class objects:
Class properties:
Class methods:
$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'=>'-bind_ch '.$this->getProperty("channel")));
$this->callMethod("sendCommand",array('command'=>'-unbind_ch '.$this->getProperty("channel")));
$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); } }
$cmdline='sleep 0.5; /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); } */
Class objects:
Class properties:
Class methods:
$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); }
if ($params['value']) { $this->setProperty("brightness",$params['value']); $this->callMethod("refresh"); }
$this->setProperty("status",1); $this->setProperty("brightness",100); $this->callMethod("refresh");
$this->setProperty("status",0); $this->setProperty("brightness",0); $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); }
Class objects:
Class properties:
Class methods:
$value = $params['VALUE']; if ($value){ $brightness=substr($value,0,3); $R=substr($value,3,3); $G=substr($value,6,3); $B=substr($value,9,3); }else{ $brightness=$params['brightness']; $R=$params['R']; $G=$params['G']; $B=$params['B']; } $this->setProperty('brightness',$brightness); $this->setProperty('R',$R); $this->setProperty('G',$G); $this->setProperty('B',$B); $this->callMethod('refresh');
$brightness=$this->getProperty("brightness"); $r=$this->getProperty("R"); $g=$this->getProperty("G"); $b=$this->getProperty("B"); /* $sum=$r+$g+$b; if ($sum==0) { $sum=1; } */ $sum=100; // не понял я задумку, но так занчения [0..100] приводятся к [0..255] $r_value=round((255*$r/$sum)*$brightness/100); $g_value=round((255*$g/$sum)*$brightness/100); $b_value=round((255*$b/$sum)*$brightness/100); if ($this->getProperty("rolling")) { $this->callMethod("sendCommand",array('command'=>'-roll_color_ch '.$this->getProperty("channel"))); } else { $this->callMethod("sendCommand",array('command'=>'-set_color_ch '.$this->getProperty("channel").' '.$r_value.' '.$g_value.' '.$b_value)); } if ($brightness>0) { $this->setProperty('status',1); } else { $this->setProperty('status',0); }
Class objects:
//Только если дома кто-то есть включим цветовые часы if (!getGlobal("NobodyHomeMode.active")){ if (timeBetween("00:00", "01:00")||timeBetween("12:00", "13:00")){ // красный $this->callMethod('setColor',array("VALUE"=>'001100000000')); }elseif (timeBetween("01:00", "02:00")||timeBetween("13:00", "14:00")){ // желтый $this->callMethod('setColor',array("VALUE"=>'001100050000')); }elseif (timeBetween("02:00", "03:00")||timeBetween("14:00", "15:00")){ // морская волна $this->callMethod('setColor',array("VALUE"=>'001000100100')); }elseif (timeBetween("03:00", "04:00")||timeBetween("15:00", "16:00")){ // красный $this->callMethod('setColor',array("VALUE"=>'001100000010')); }elseif (timeBetween("04:00", "05:00")||timeBetween("16:00", "17:00")){ // зелный $this->callMethod('setColor',array("VALUE"=>'001000100000')); }elseif (timeBetween("05:00", "06:00")||timeBetween("17:00", "18:00")){ // голубой $this->callMethod('setColor',array("VALUE"=>'001000100050')); }elseif (timeBetween("06:00", "07:00")||timeBetween("18:00", "19:00")){ // малиновый $this->callMethod('setColor',array("VALUE"=>'001100000050')); }elseif (timeBetween("07:00", "08:00")||timeBetween("19:00", "20:00")){ // светло-зеленый $this->callMethod('setColor',array("VALUE"=>'001050100000')); }elseif (timeBetween("08:00", "09:00")||timeBetween("20:00", "21:00")){ // синий $this->callMethod('setColor',array("VALUE"=>'001000050100')); }elseif (timeBetween("09:00", "10:00")||timeBetween("21:00", "22:00")){ // красный $this->callMethod('setColor',array("VALUE"=>'001100010000')); }elseif (timeBetween("10:00", "11:00")||timeBetween("22:00", "23:00")){ // салатовый $this->callMethod('setColor',array("VALUE"=>'001100100000')); }elseif (timeBetween("11:00", "12:00")||timeBetween("23:00", "00:00")){ // фиолетовый $this->callMethod('setColor',array("VALUE"=>'001000000100')); }else{ //неизвестное время суток $this->callMethod('setColor',array("VALUE"=>'001100100100')); } }else{ $this->callMethod('turnOff'); } //цвета в резерве // сиреневый //$this->callMethod('setColor',array("VALUE"=>'001100000100')); // лиловый //$this->callMethod('setColor',array("VALUE"=>'001050000100'));
Class properties:
Class methods:
$this->callMethod('sendCommand',array("command"=>$this->getProperty("Color")));
$command = $params['command']; $cmdline='/usr/bin/ledcontroller '.$command; safe_exec($cmdline); $this->setProperty("Color",$command); if ($this->getProperty("Color")=="off"){ $this->setProperty("status",0); }else{ $this->setProperty("status",1); }
Class objects:
Class properties:
Class methods:
$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);
Class objects:
Class methods:
Class objects:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Class properties:
Class methods:
$cmdline='/usr/local/bin/nooliterx1 -api '.$params['command']; safe_exec($cmdline);
$this->callMethod("sendCommand",array('command'=>'-bind_ch '.$this->getProperty("channel")));
$this->callMethod("sendCommand",array('command'=>'-unbind_ch '.$this->getProperty("channel")));
$this->callMethod("sendCommand",array('command'=>'-clear_ch '.$this->getProperty("channel")));
$this->callMethod("sendCommand",array('command'=>'-norm_ch '.$this->getProperty("channel")));
Class objects:
callMethod("ReminderColor.sendCommand",array("command"=>"off")); // тушим //callMethod("NooLite_300.turnOff"); say("Напоминания выключены");
//Помечаем последнюю проговоренную задачу как выполненную if(time()-gg("TaskExistMode.lastSelectTimeStamp")<60){ // SQLExec("UPDATE calendar_events SET IS_DONE=1, DONE_WHEN=NOW() WHERE ID=".gg("TaskExistMode.lastSelectId")); include_once('./modules/app_calendar/app_calendar.class.php'); $calendar=new app_calendar(); $calendar->task_done(gg("TaskExistMode.lastSelectId")); say("Задача ".gg("TaskExistMode.lastSelectTitle")." выполнена успешно.",1); } callMethod("TaskExistMode.check");
//Напомним о делах if(time()-gg("TaskExistMode.lastSelectTimeStamp")<60){ $lastSelectId = gg("TaskExistMode.lastSelectId"); }else{ $lastSelectId = 0; } sg("TaskExistMode.lastSelectTimeStamp",time()); $SQLText = " SELECT e.id as ID, e.title as TITLE, e.notes as NOTES, u.name AS USERNAME"; $SQLText.= " FROM calendar_events e "; $SQLText.= " LEFT JOIN users u ON e.USER_ID = u.ID "; $SQLText.= " WHERE IS_TASK =1 "; $SQLText.= " AND IS_DONE =0 "; $SQLText.= " AND DUE < NOW( ) "; $SQLText.= " AND e.ID > ".$lastSelectId." "; $SQLText.= " ORDER BY e.ID "; $SQLText.= " LIMIT 1 "; $SQLResult = SQLSelectOne($SQLText); if ($SQLResult['ID']){ $sayText = ""; if($SQLResult['USERNAME']){ $sayText .= $SQLResult['USERNAME']." "; } $sayText .= $SQLResult['TITLE'].". ".$SQLResult['NOTES']; sg("TaskExistMode.lastSelectId",$SQLResult['ID']); sg("TaskExistMode.lastSelectTitle",$SQLResult['TITLE']); }else{ if($lastSelectId){ $sayText = "Конец списка"; sg("TaskExistMode.lastSelectId",0); }else{ $sayText = "Дел больше нет"; } } say($sayText,1);
callMethod("NooLiteD_ZalTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
//sg('NooLiteD_KuhnyaTop.status',0); //sg('NooLiteD_KuhnyaTop.brightness',0); //sg('NooLiteD_KuhnyaBra.status',0); //sg('NooLiteD_KuhnyaBra.brightness',0); //sg('NooLiteD_KuhnyaVit.status',0); //sg('NooLiteD_KuhnyaVit.brightness',0); //sg('NooLiteD_SpalnyaTop.status',0); //sg('NooLiteD_SpalnyaTop.brightness',0); //sg('NooLiteD_SpalnyaBra.status',0); //sg('NooLiteD_SpalnyaBra.brightness',0); //sg('NooLiteD_ZalTop.status',0); //sg('NooLiteD_ZalTop.brightness',0); //sg('NooLiteD_TualetTop.status',0); //sg('NooLiteD_TualetTop.brightness',0); //sg('NooLiteD_TualetVit.status',0); //sg('NooLiteD_TualetVit.brightness',0); //sg('NooLiteD_TualetTP.status',0); //sg('NooLiteD_TualetTP.brightness',0); if ($params['buf2']=7 and gg("NobodyHomeMode.active")==0){ callMethod('NooLite_RGB_1.setColor',array("brightness"=>100,"R"=>0,"G"=>100,"B"=>0)); callMethod('NooLite_RGB_1.setColor',array("brightness"=>100,"R"=>100,"G"=>100,"B"=>100)); SetTimeOut("NooLite_RGB_Off",'callMethod("NooLite_RGB_1.check");', 2*60); sg("NobodyHomeMode.active",1); }
if ($params['buf2']==7){ sg("GuestsMode.active",1); }elseif($params['buf2']==8){ sg("GuestsMode.active",0); }
sg('NooLiteD_KuhnyaTop.status',0); sg('NooLiteD_KuhnyaTop.brightness',0); sg('NooLiteD_KuhnyaBra.status',0); sg('NooLiteD_KuhnyaBra.brightness',0); sg('NooLiteD_KuhnyaVit.status',0); sg('NooLiteD_KuhnyaVit.brightness',0); sg('NooLiteD_SpalnyaTop.status',0); sg('NooLiteD_SpalnyaTop.brightness',0); sg('NooLiteD_SpalnyaBra.status',0); sg('NooLiteD_SpalnyaBra.brightness',0); sg('NooLiteD_ZalTop.status',0); sg('NooLiteD_ZalTop.brightness',0); sg('NooLiteD_TualetTop.status',0); sg('NooLiteD_TualetTop.brightness',0); sg('NooLiteD_TualetVit.status',0); sg('NooLiteD_TualetVit.brightness',0); sg('NooLiteD_TualetTP.status',1); sg('NooLiteD_TualetTP.brightness',100); say('Спокойной ночи!',1);
callMethod("NooLiteD_SpalnyaBra.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_SpalnyaTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
sg('NooLiteD_SpalnyaTop.status',0); sg('NooLiteD_SpalnyaTop.brightness',0); sg('NooLiteD_SpalnyaBra.status',0); sg('NooLiteD_SpalnyaBra.brightness',0);
callMethod("NooLiteD_SpalnyaBra.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_SpalnyaTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
getURL('http://'.gg('bigComp.address').':8000/?action=System.Shutdown',0); //say('http://'.gg('bigComp.address').':8000/?action=System.Shutdown'); callMethod("NooLite_RGB_1.setColor",array("brightness"=>100,"R"=>100,"G"=>100,"B"=>100)); callMethod("NooLiteD_SpalnyTop.turnOff"); callMethod("NooLiteD_SpalnyBra.turnOff"); callMethod("NooLiteD_KuhnyaTop.turnOff"); callMethod("NooLiteD_KuhnyaBra.turnOff"); callMethod("NooLiteD_TualetTop.turnOff"); callMethod("NooLiteD_TualetVit.turnOff"); callMethod("NooLiteD_ZalTop.turnOff"); SetTimeOut("NooLite_RGB_Off",'callMethod("NooLite_RGB_1.check");', 2*60); //sg("SleepAllMode.active",1);
say('Внимание! Человеку в туалете требуется помощь.',1);
callMethod("NooLiteD_TualetVit.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_TualetTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
//callMethod("NooLiteD_TualetVit.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
//sg('NooLiteD_TualetTop.status',0); //sg('NooLiteD_TualetTop.brightness',0); //sg('NooLiteD_TualetVit.status',0); //sg('NooLiteD_TualetVit.brightness',0);
//callMethod("NooLiteD_TualetTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_ZalTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_KuhnyaBra.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_KuhnyaVit.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
sg('NooLiteD_KuhnyaTop.status',0); sg('NooLiteD_KuhnyaTop.brightness',0); sg('NooLiteD_KuhnyaBra.status',0); sg('NooLiteD_KuhnyaBra.brightness',0);
callMethod("NooLiteD_KuhnyaTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_KuhnyaBra.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_KuhnyaTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_KuhnyaTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_TualetTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
callMethod("NooLiteD_ZalTop.receiveCommand", array("buf2"=>$params['buf2'],"buf4"=>$params['buf4']));
Class properties:
Class methods:
Class objects:
$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'); }
Class properties:
Class methods:
$ch = curl_init("https://t-karta.ru/ek/SitePages/TransportServicePage.aspx?functionName=GetCardInfo&pan=".$this->getProperty("tcard_ek_pan"));//."&dateFrom=22.03.2014&dateTo=04.04.2015"); //curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, "https://t-karta.ru/ek/SitePages/default.aspx"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.99 Safari/537.22"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); //curl_setopt($ch, CURLOPT_COOKIE, "tcard_city=%D0%A1%D0%B0%D0%BC%D0%B0%D1%80%D0%B0; ASP.NET_SessionId=3dkuz3z0f0b4xj455n3kwwnh; tcard_ek_pan=9643106303300029716"); curl_setopt($ch, CURLOPT_COOKIE, "ASP.NET_SessionId=".$this->getProperty("SessionId")."; tcard_ek_pan=".$this->getProperty("tcard_ek_pan")); $ohm = curl_exec($ch); $json = json_decode($ohm); $balans = $json -> {'CardSum'}; $this->setProperty("balance",$balans/100); $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("H:i",time()));
Class objects:
Class properties:
Class methods:
//$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); }
Class objects:
Class properties:
Class methods:
// START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); echo"<br>Count ++ $count"; } } // END yaWeather module // START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); //echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); //echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); //echo"<br>Count ++ $count"; } } // END yaWeather module // START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); //echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); //echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); //echo"<br>Count ++ $count"; } } // END yaWeather module // START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); //echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); //echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); //echo"<br>Count ++ $count"; } } // END yaWeather module // START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); //echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); //echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); //echo"<br>Count ++ $count"; } } // END yaWeather module // START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); //echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); //echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); //echo"<br>Count ++ $count"; } } // END yaWeather module // START yaWeather module $updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.setting.countTime'); //echo"<br>updateTime = $updateTime || Count = $count"; if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yaweather.city.id')); sg('yaweather.setting.countTime',1); //echo"<br>Update Weather"; } else { $count++; sg('yaweather.setting.countTime',$count); //echo"<br>Count ++ $count"; } } // END yaWeather module /* START yaWeather module*/cm("city.ywUpdateTime");/* END yaWeather 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*/
Class objects:
// Световые часы callMethod("NooLite_RGB_1.check"); // Проверка транспортной карты callMethod("t-karta-lemur.get_info"); // Проверка Moves runScript("getMovesData"); // Проверка Misfit Shine runScript("getMisfitData"); // Проверка mapmyfitness //runScript("getMapMyFitness"); // Проверка Весов runScript("getWithingsData"); // Обновление wunderlisе include_once(DIR_MODULES.'app_wunderlist/app_wunderlist.class.php'); $wunderlist=new app_wunderlist(); $wunderlist->refreshAll();
$h=(int)date('G',time()); $m=date('i',time()); if (($h>=8)) { if ($m=="00") { say(timeNow()); } } //Записываем текущее время sg("ThisComputer.timeNow",date( "H:i", time())); //будильник $objects=getObjectsByClass("AlarmClock"); foreach($objects as $obj) { // переберем все будильники в системе if (getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника } } //В обед расскажем анекдот //if (timeIs('12:30')) { // callMethod("Chat_request.action",array("command"=>"Расскажи анекдот")); // say("Анекдот:"); //} //Читаем состояние сенсоров сервера RunScript('sensorsUbuntu'); // Включение/выключение реле левой части RGB подсветки коридора if (timeBetween(gg("YandexSamara.SunSet"),gg("YandexSamara.SunRise"))){ // темно if (gg('Relay_RGB_Left.status')==0){ sg('Relay_RGB_Left.status',1); } }else{ if (gg('Relay_RGB_Left.status')==1){ sg('Relay_RGB_Left.status',0); } } //Подписываем на события таймера методы проверок //всех заитересованных объектов //при этом код проверки инкапсулирован в самом объекте // Режим Охрана callMethod("SecurityArmedMode.check"); // Режим Никого нет дома callMethod("NobodyHomeMode.check"); // Режим У нас гости callMethod("GuestsMode.check"); // Режим Все спят callMethod("SleepAllMode.check"); // напоминалка callMethod("TaskExistMode.check"); // Блок Экономайзер // Коридорная люстра if (gg('Relay_Hallway_Light.status')){ // если горит свет в корридоре if (gg('sensorDoorHeck.status') or gg('sensorDoorLockDown.status')){ // закрыт один или оба замка if (gg('sensorHallwayPIR.status') // датчик движения не активирован and (time()-gg('sensorHallwayPIR.updatedTimestamp'))>60*2){ // больше 2 минут sg('Relay_Hallway_Light.status',0); // выключить } } } // Свет в туалете if (gg('NooLiteD_TualetTop.status')==1){ // если горит свет в туалете if (time()-gg('NooLiteD_TualetTop.updatedTimestamp')>60*30){ // больше 30 минут callMethod("NooLiteD_TualetTop.turnOff"); // выключить } } // Свет в спальне if (gg('NooLiteD_SpalnyTop.status')==1){ // если горит свет в спальне if (time()-gg('NooLiteD_SpalnyTop.updatedTimestamp')>60*30){ // больше 30 минут callMethod("NooLiteD_SpalnyTop.turnOff"); // выключить } } // Свет в кухне if (gg('NooLiteD_KuhnyaTop.status')==1){ // если горит свет в кухне if (time()-gg('NooLiteD_KuhnyaTop.updatedTimestamp')>60*60){ // больше 60 минут callMethod("NooLiteD_KuhnyaTop.turnOff"); // выключить } } // Входная дверь закрыта но не заперта if ( gg('sensorDoorEnter.status')==1 // дверь закрыта and gg('sensorDoorHeck.status')==0 // задвижка открыта and gg('sensorDoorLockDown.status')==0 // нижний замок открыт and gg('sensorDoorLockUp.status')==0 // верхний замок открыт and ($m=="00" or $m=="15" or $m=="30" or $m=="45") ) // минута кратна 15 { say("Внимание! Открыта входная дверь!",5); }
Class methods:
Class objects:
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']); } }
Class properties:
Class methods:
$url="http://sms.ru/sms/send?api_id=".$this->getProperty("PhoneNumberAPI")."&to=7".$this->getProperty("PhoneNumber")."&text=".urlencode($params['value']); getURL($url,0);
$Coordinates=$this->getProperty("Coordinates"); $lat=substr($Coordinates,0,strpos($Coordinates,",")); $lon=substr($Coordinates,strpos($Coordinates,",")+1); $this->setProperty("Location",Getgeocode($lon,$lat));
Class objects:
Class properties:
Class methods:
Class objects:
callMethod("NooLite_300.turnOff");
callMethod("NooLite_300.turnOn");
callMethod("включи.action",array("command"=>$params['command']));
callMethod("выключи.action",array("command"=>$params['command']));
$url='http://192.168.1.140/wunder/getTasks.php'; $priority=1; $data=getURL($url,0); $data=json_decode($data); //var_dump($data); //echo "<hr>"; $tasks=0; foreach($data as $k=>$v) { //echo $k; //print_r($v); //echo "<hr>"; say("Список ".$k,$priority); $tasks=$v; $total=count($tasks); for($i=0;$i<$total;$i++) { $title=$tasks[$i]->title; if ($title) { say($title,$priority); $tasks++; } } } if ($tasks==0) { say("Список задач пуст.",$priority); }
$command=$params['command']; $cmdUrl = 'http://192.168.1.140/wunder/addTask.php?title='.urlencode($command); say('Новая задача: '.$command); getURL($cmdUrl,0);
$command=$params['command']; $from = "ermolenkom@yandex.ru"; $to = "ermolenkom.аааа@m.evernote.com"; $subject = " @Алиса #MajorDoMo"; $body = $command; SendMail($from, $to, '=?UTF-8?B?'.base64_encode($command.$subject).'?=', " "); say("Запомнила.");
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);
$command=$params['command']; if ($command==""){// если это первый вызов то $StartTime = time();//запомним время вызова }else{ $StartTime=(int)$command; } if ( gg(sensorMovement2.status) // обнаружено движение &&(gg(time()>sensorMovement2.updatedTimestamp)+11)){ // в течении 11 секунд было движение callMethod("погода на улице.action"); }elseif(time()<$StartTime + 60*15 ){ // перепланируем себя только если прошло менее 5 минут SetTimeOut("voice_command.погода при движении",'callMethod("погода при движении в зале.action",array("command"=>'.(string)$StartTime.'));',20); }else{ say("Просрочен доклад погоды по движению."); }
say('Я - Cистема домашней автоматизации MajorDoMo. Или полностью: Major Domestic Module, что означает Главный Домашний Модуль.');
$command=$params['command']; say($command);
say('Спокойной ночи');
$status=""; $status.="Сегодня ".gg("YandexSamara.Type")."."; say($status,1); $status=""; $w=round(gg("YandexSamara.Temp")); $tempw=$w; 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= градуса ; } } //$tNew = abs((float)getGlobal('YandexSamara.Temp')); $status.=' Температура '.getGlobal('YandexSamara.Temp')." ".$tempcels." цельсия"; say($status,1); // Сравнение со вчерашним днем $tNew = (float)getGlobal('YandexSamara.Temp'); $tOld = (float)getGlobal('YandexSamara.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); } $tempw=""; $tempcels=""; $status=""; $h=round(gg("YandexSamara.Humidity")); $tempw=$h; 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= процента ; } } $status.="Относительная влажность ".gg("YandexSamara.Humidity")." ".$tempcels. "."; say($status,1); $tempw=""; $tempcels=""; $status=""; $pressure=(float)gg("YandexSamara.Pressure"); if ($pressure<728) { $status.=' Атмосферное давление пониженное'; } elseif ($pressure>768) { $status.=' Атмосферное давление повышенное.'; } else { $status.=' Атмосферное давление нормальное.'; } say($status,1); $status=""; // ветер $WindSpeed=(float)gg("YandexSamara.WindSpeed"); if ($WindSpeed<1) { $status.=' Ветра нет.'; } elseif ($WindSpeed<3) { $status.=' Ветер слабый.'; } elseif ($WindSpeed<6) { $status.=' Ветер сильный.'; } elseif ($WindSpeed<9) { $status.=' Ветер очень сильный.'; } else { $status.=' Ветер очень! Очень сильный.'; } $status.=' Направление '.getGlobal('YandexSamara.WindDir').'.'; say($status,1); // Прогноз погоды на сегодня if (timeBetween("00:00", "12:00")){ say("Днём ".gg("YandexSamara.DayWeatherType").".",1); $w=round(gg("YandexSamara.DayTemp")); }else{ say("Вечером ".gg("YandexSamara.EveningWeatherType").".",1); $w=round(gg("YandexSamara.EveningTemp")); } $tempw=$w; 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= градуса ; } } $status=""; $status.=' температура будет '.$w." ".$tempcels." цельсия"; say($status,1); // Погода на завтра say("Завтра ".gg("YandexSamara.TomorrowDayWeatherType").".",1); $status=""; $w=round(gg("YandexSamara.TomorrowDayTemp")); $tempw=$w; 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= градуса ; } } $status.=' Температура будет '.getGlobal('YandexSamara.TomorrowDayTemp')." ".$tempcels." цельсия"; say($status,1); // Пробки. $status=getGlobal('ThisComputer.ProbkiText').'.'; say($status,1);
$status=""; $status.="На улице ".gg("YandexSamara.Type")."."; say($status,1); $status=""; // ветер $WindSpeed=(float)gg("YandexSamara.WindSpeed"); if ($WindSpeed<1) { $status.=' Ветра нет.'; } elseif ($WindSpeed<3) { $status.=' Ветер слабый.'; } elseif ($WindSpeed<6) { $status.=' Ветер сильный.'; } elseif ($WindSpeed<9) { $status.=' Ветер очень сильный.'; } else { $status.=' Ветер очень! Очень сильный.'; } $status.=' Направление '.getGlobal('YandexSamara.WindDir').'.'; say($status,1); // Температура $status=""; $tNew = abs((float)getGlobal('YandexSamara.Temp')); if ($tNew==1){ $tGradus = 'градус'; }elseif($tNew==2 || $tNew==3 || $tNew==4){ $tGradus = 'градуса'; }else{ $tGradus = 'градусов'; } $status.=' Температура '.getGlobal('YandexSamara.Temp')." ".$tGradus; say($status,1); $status=""; // $status.=' Восход солнца сегодня в '.getGlobal('YandexSamara.SunRise').','; // $status.=' закат в '.getGlobal('YandexSamara.SunSet').'.'; // Общий прогноз $pieces = explode(".", getGlobal('Sinoptik.description')); foreach ($pieces as $pieceph) { if ($pieceph!="") { say($pieceph.".",1); } } // Сравнение со вчерашним днем $tNew = (float)getGlobal('YandexSamara.Temp'); $tOld = (float)getGlobal('YandexSamara.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);
global $voicemode; $voicemode='on'; setGlobal('minMsgLevel',0); say('Хорошо.');
$objects=SQLSelect("SELECT TITLE FROM objects"); $total=count($objects); for($i=0;$i<$total;$i++){ if (gg($objects[$i]['TITLE'].'.AlertSay')) { say(gg($objects[$i]['TITLE'].'.AlertSay'),0); sg($objects[$i]['TITLE'].'.AlertSay',''); } }
say('Точное время. '.timeNow111(),1);
$command=$params['command']; say($command,1);
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('Меня зовут Алиса');
//global $voicemode; //$voicemode='off'; setGlobal('minMsgLevel',1);
$command=trim($params['command']); if (preg_match('/свет(.*)/is',$command,$m)) { $m = trim($m[1]); if ($m=='в зале' || $m==''){ callMethod("NooLiteD_ZalTop.turnOn"); }elseif ($m=='на кухне' || $m=='в кухне') { callMethod("NooLiteD_KuhnyaTop.turnOn"); }elseif ($m=='в туалете' || $m=='в ванной') { callMethod("NooLiteD_TualetTop.turnOn"); }elseif ($m=='в спальне' || $m=='в маленькой комнате') { callMethod("NooLiteD_SpalnyTop.turnOn"); }elseif ($m=='везде') { callMethod("NooLiteD_ZalTop.turnOn"); callMethod("NooLiteD_KuhnyaTop.turnOn"); callMethod("NooLiteD_SpalnyTop.turnOn"); }; }elseif (preg_match('/радио(.*)/is',$command,$m)) { // здесь код включающий интернет радио setGlobal("Radio.RadioIsPlay",1); }else{ say('Не знаю: '.$command); };
$command=trim($params['command']); if (preg_match('/свет(.*)/is',$command,$m)) { $m = trim($m[1]); if ($m=='в зале' || $m==''){ callMethod("NooLiteD_ZalTop.turnOff"); }elseif ($m=='на кухне' || $m=='в кухне') { callMethod("NooLiteD_KuhnyaTop.turnOff"); callMethod("NooLiteD_KuhnyaBra.turnOff"); }elseif ($m=='в туалете' || $m=='в ванной') { callMethod("NooLiteD_TualetTop.turnOff"); }elseif ($m=='в спальне' || $m=='в маленькой комнате') { callMethod("NooLiteD_SpalnyTop.turnOff"); callMethod("NooLiteD_SpalnyBra.turnOff"); }elseif ($m=='везде' || $m=='в доме'|| $m=='дома'|| $m=='во всем доме') { callMethod("NooLiteD_ZalTop.turnOff"); callMethod("NooLiteD_KuhnyaTop.turnOff"); callMethod("NooLiteD_KuhnyaBra.turnOff"); callMethod("NooLiteD_TualetTop.turnOff"); callMethod("NooLiteD_SpalnyTop.turnOff"); callMethod("NooLiteD_SpalnyBra.turnOff"); }; }elseif (preg_match('/радио(.*)/is',$command,$m)) { // здесь код выключающий интернет радио setGlobal("Radio.RadioIsPlay",0); }else{ say('Не знаю: '.$command); };
Class properties:
Class objects:
Class properties:
Class objects:
Class properties:
Class objects:
Class methods:
$updateTime = gg('yaweather.setting.updateTime'); if($updateTime > 0){ $count = gg('yaweather.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('yaweather.city.id')); sg('yaweather.setting.countTime',1); } else { $count++; sg('yaweather.setting.countTime',$count); } }
Class objects:
Class objects:
Class properties:
Class objects:
, Russia
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Public agreement
SmartLiving