Свойства класса:
Методы класса:
Объекты класса:
if (isWeekEnd()){ // сегодня выходной день say('Звонит будильник! Пора вставать!',5); if (gg("NightMode.active")==1) { callMethod("NightMode.deactivate"); } // включим радио //callMethod("Radio.RadioPlay"); // запланируем выключить радио через 1час //SetTimeOut("AlarmWeekEnd_RadioStop",'callMethod("Radio.RadioStop")', 3600); }
if (isWeekDay()){ // сегодня рабочий день say('Звонит будильник! Пора вставать!',5); if (gg("NightMode.active")==1) { callMethod("NightMode.deactivate"); } // включим радио //callMethod("Radio.RadioPlay"); // запланируем выключить радио через 1час //SetTimeOut("AlarmWeekDay_RadioStop",'callMethod("Radio.RadioStop")', 3600); }
// это однократный будильник, выключем его setGlobal("AlarmOne.AlarmOn",0); say('Звонит будильник! Пора вставать!',5); if (gg("NightMode.active")==1) { callMethod("NightMode.deactivate"); } // включим радио //callMethod("Radio.RadioPlay"); // запланируем выключить радио через 1час //SetTimeOut("AlarmOne_RadioStop",'callMethod("Radio.RadioStop")', 3600);
Свойства класса:
Методы класса:
/*if ($params['VALUE']){ $this->setProperty('volumeLevel',$params['VALUE']); } $volume = $this->getProperty('volumeLevel'); exec('sudo -u pi amixer set Master '.$volume.'% unmute'); say("Изменилась громкость до ".$volume." процентов",-1);*/
Объекты класса:
say('Похоже что отключалось питание. Я снова готова к работе');
$command=$params['command']; $short_command=''; $dt=recognizeTime($command,$short_command); $objects=getObjectsByClass("voice_command"); foreach($objects as $obj){ $fl=1; foreach(explode(" ",mb_strtolower($obj['TITLE'],'utf-8')) as $wo){ if (!(preg_match('/'.$wo.'(.*)/is',mb_strtolower($command,'utf-8'),$m))) { $fl=0; } } if ($fl==1) { callMethod($obj['TITLE'].".action",array("command"=>$m[1])); return; } if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята'); return; } } say("Неизвестная команда");
Свойства класса:
Методы класса:
$counter=$params['counter']; $passed=$params['passed']; $old_counter=$this->getProperty("counter"); if ($counter>0) { $old_counter+=$counter; $this->setProperty("counter",$old_counter); $this->setProperty("power",round($old_counter/150)); } if ($passed>0) { $speed=round((($counter*60*60/$passed)/150),2); $this->setProperty("speed",$speed); } $this->setProperty("updated",time()); $this->setProperty("updatedTime",date('H:i'));
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('updatedTimestamp',time()); $this->setProperty("updatedTime",date("H:i",time())); if ($this->getProperty("alive")) { $ot=$this->object_title; $alive_timeout=5*60; clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('updatedTimestamp',time()); $this->setProperty("updatedTime",date("H:i",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=12*60*60; clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); //добавить таймаут датчика движения $linked_room=$this->getProperty("LinkedRoom"); if (($linked_room) && ($this->getProperty("status")==1)) { callMethod($linked_room.'.onActivity'); } if ($this->getProperty("status")==1) { $this->setProperty("statustext","кто-то есть"); } else { $this->setProperty("statustext","нет движения"); }
Объекты класса:
//Устанавливаем заначения в суммарный датчик движения if (getGlobal("sensorMovementKoridor.status")==0 && getGlobal("sensorMovementArtemRoom.status")==0) && getGlobal("sensorMovementSUM.status")==1){ setGlobal("sensorMovementSUM.status",0); } elseif(getGlobal("sensorMovementKoridor.status")==1 && getGlobal("sensorMovementArtemRoom.status")==1 && getGlobal("sensorMovementSUM.status")==0){ setGlobal("sensorMovementSUM.status",1); }
//Устанавливаем заначения в суммарный датчик движения if (getGlobal("sensorMovementArtemRoom.status")==0 && getGlobal("sensorMovementKoridor.status")==0) && getGlobal("sensorMovementSUM.status")==1){ setGlobal("sensorMovementSUM.status",0); } elseif(getGlobal("sensorMovementArtemRoom.status")==1 && getGlobal("sensorMovementKoridor.status")==1) && getGlobal("sensorMovementSUM.status")==0){ setGlobal("sensorMovementSUM.status",1); }
if (getGlobal("sensorLight.status")) { say('Светает'); } else { say('Стемнело'); }
// здесь подписываем оъекты на событие изменения состояния // суммарного датчика движения callMethod('SecurityArmedMode.check'); // охрана callMethod('NobodyHomeMode.check'); // никого нет дома
Свойства класса:
Методы класса:
$vol = gg('Music.Volume'); exec("mpc volume " . $vol );
Объекты класса:
exec("mpc clear"); exec("mpc load sexmusic"); exec("mpc play"); say("Включаю интимную атмосферу",-1);
exec("mpc clear"); exec("mpc load favoritemusic"); exec("mpc play"); say("Любимый плейлист запущен",-1);
exec("mpc clear"); exec("mpc load relaxmusic"); exec("mpc play");
exec("mpc play"); sg("Music.isPlay",1); sg("Music.PlayBeginTime",time()); say("Музыка включена",-1);
exec("mpc stop"); sg("Music.isPlay",0); say("Поставила на паузу",-1);
exec("mpc prev");
exec("mpc next");
Свойства класса:
Методы класса:
if (gg("Artem.atHome")==0) { $this->setProperty("isForReading",1); $count=$this->getProperty("count")+1; $this->setProperty("count",$count); }
if (gg("Artem.atHome")==1) { $this->setProperty("isForReading",0); $this->setProperty("count",0); }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('active',1);
$this->setProperty('active',0);
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date('H:i')); if ($this->getProperty('active')) { say("Режим ".$this->getProperty('title')." активирован."); } else { say("Режим ".$this->getProperty('title')." деактивирован."); }
Объекты класса:
say("До свидания, дорогие гости!");
say("Здрасьте, гости дорогие!");
//запуск чего-нибудь, развеивающего тьму
//отключение чего-нибудь, развеивающего тьму
$h=(int)date('G',time()); if (gg("NightMode.active")==0) { if ($h<23) { say("Время ещё детское! Но если вы так настаиваете"); } say('Всем спокойной ночи!'); sg("ThisComputer.minMsgLevel","1"); say('Перехожу в бесшумный режим'); } else { say("Хозяин, я и так уже в ночном режиме"); }
$h=(int)date('G',time()); if (gg("NightMode.active")==1) { sg("ThisComputer.minMsgLevel","0"); say('Бесшумный режим отключен'); if ($h>9) { say("Уже далеко не утро, но всё равно доброе!"); } else { say('Доброе утро!'); } SetTimeOut("WeatherDnes","callMethod('YandexNVKZ.sayDnes');", 0.5*60); } else { say("Хозяин, я и так уже в дневном режиме"); }
if ($this->getProperty("active")){ say("Всем пока!"); }else{ say("Привет!"); }
// Проверка датчика движения if ((getGlobal("NobodyHomeMode.active")==1) // никого нет дома && (getGlobal("SecurityArmedMode.active")==0) // охраны нет && (getGlobal("sensorMovementSUM.status")==1)){ // движение ЕСТЬ //В режиме никого нет дома обраружено движение. Значит пришли люди. setGlobal("NobodyHomeMode.active",0); } //if (!getGlobal("NobodyHomeMode.active") // Режим Никого нет дома выключен // &&!getGlobal("SecurityArmedMode.active") // охраны нет // &&!getGlobal("sensorMovementSUM.status") // движения НЕТ // &&(getGlobal("sensorMovementSUM.updatedTimestamp") //доделать проверку датчика
// Проверка датчика движения if ((getGlobal("SecurityArmedMode.active")==1) && (getGlobal("sensorMovementSUM.status")==1)){ //При включенной охране обнаружено движение. ТРЕВОГА!!! ТРЕВОГА!!! say("Внимание! Тревога! обнаружено движение!",5); callMethod("securityMode.newNote"); }
if($this->getProperty('active')){ // Принудительно гасим все датчики движения setGlobal("sensorMovementArtemRoom.status",0); setGlobal("sensorMovementKoridor.status",0); // При постановке на охрану никого не должно быть дома setGlobal("NobodyHomeMode.active",1); }else{ // При снятии с охраны дома появляются люди setGlobal("NobodyHomeMode.active",0); }
Свойства класса:
Методы класса:
saylong($this->getProperty('Weather3days'));
$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;} $this->setProperty("Temp",$temp); $this->setProperty("Type",$xml->fact->weather_type); $this->setProperty("Pressure",$xml->fact->pressure); $this->setProperty("Humidity",$xml->fact->humidity); $WindSpeed=round($xml->fact->wind_speed); $this->setProperty("WindSpeed",$WindSpeed); $this->setProperty("Image","<img src=\"http://img.yandex.net/i/wiz" . $xml->fact->image . ".png\" alt=\"%YandexNVKZ.Type%\" title=\"%YandexNVKZ.Type%\">"); $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; } $this->setProperty("WindDir",$dir); $this->setProperty("Sunrise",$xml->day[0]->sunrise); $this->setProperty("Sunset",$xml->day[0]->sunset); $status=""; $status.="На улице ".gg("YandexNVKZ.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('YandexNVKZ.Temp')."°,"; $tm=(float)getGlobal('YandexNVKZ.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.=' жарко.'; } $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.="°C, "; $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; $this->setProperty("Weather3days",$w3days); // Запишем температуру вчерашнего дня для этого часа $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 = '" . "YandexNVKZ" . "' "; //$this['TITLE'] $SQLText.= " AND p.title = 'Temp' "; $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); $this->setProperty("tempYesterday",$tempYesterday['val'] ); // Сравнение со вчерашним днем $tNew = $xml->fact->temperature; $tOld = $tempYesterday['val']; $tDelta = abs($tNew - $tOld); if ($tNew>$tOld){ $status.=" Сегодня теплее, чем вчера на ".$tDelta."°."; }elseif($tNew<$tOld){ $status.=" Сегодня холоднее, чем вчера на ".$tDelta."°."; }elseif($tNew==$tOld){ $status.=" Температура сегодня такая же как вчера."; } $this->setProperty("WeatherDnes",$status);
saylong($this->getProperty('WeatherDnes'));
Объекты класса:
Свойства класса:
Методы класса:
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
$this->setProperty("status",0);
$this->setProperty("status",1);
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
Свойства класса:
Методы класса:
$this->setProperty('SomebodyHere',0);
$latestActivity=$this->getProperty('LatestActivity'); $this->setProperty('LatestActivity',time()); $this->setProperty('LatestActivityTime',date('H:i')); $this->setProperty('SomebodyHere',1); $ot=$this->object_title; $activity_timeout=5*60; clearTimeOut($ot."_activity_timeout"); setTimeOut($ot."_activity_timeout","callMethod('".$ot.".onIdle');",$activity_timeout);
Объекты класса:
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$gray_state=0; $green_state=0; if (!isOnline('192.168.1.100')) { $gray_state=1; } else { $green_state=1; } if ($gray_state) { $state='gray'; $state_title='Не в сети'; } elseif ($green_state) { $state='green'; $state_title='Включен'; } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); $this->callMethod('stateChanged'); }
$gray_state=0; $green_state=0; if (!isOnline('192.168.1.102')) { $gray_state=1; } else { $green_state=1; } if ($gray_state) { $state='gray'; $state_title='Не в сети'; } elseif ($green_state) { $state='green'; $state_title='Включен'; } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); $this->callMethod('stateChanged'); }
$gray_state=0; $green_state=0; if (!isOnline('192.168.1.101')) { $gray_state=1; } else { $green_state=1; } if ($gray_state) { $state='gray'; $state_title='Не в сети'; } elseif ($green_state) { $state='green'; $state_title='Включен'; } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; if (!isOnline('Интернет')) { // в модуле "Устройства Online" должна быть запись с названием "Интернет" $red_state=1; $details[]="Нет доступа в интернет"; } if ($red_state) { $state='red'; $state_title='Красный'; } elseif ($yellow_state) { $state='yellow'; $state_title='Жёлтый'; } else { $state='green'; $state_title='Зелёный'; } $this->setProperty('stateDetails',implode(". ",$details)); if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("Уровень системы связи изменился на ".$state_title."."); say(implode(". ",$details)); } else { say("Уровень системы связи восстановился на ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; $cycles=array('states'=>'цикл проверки состояния','main'=>'главный цикл','execs'=>'цикл запуска команд','scheduler'=>'цикл планировщика'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]="Остановлен ".$v; } } $cycles=array('ping'=>'цикл пинг','webvars'=>'цикл веб переменных','watchfolders'=>'цикл слежения за папками','rss'=>'цикл эр-эс-эс'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]="Остановлен ".$v; } } if (!isOnline("MR3020")) { $yellow_state=1; $details[]="Беспроводной узел недоступен"; } if (!gg("arduinoKoridor.alive")) { $yellow_state=1; $details[]="Arduino не отвечает на запросы"; } //$sensors=array(); //$sensors['tempArtemRoom']="датчик домашней температуры"; //$sensors['tempOutside']="датчик уличной температуры"; //$sensors['tempRadiator']="датчик температуры батарей"; //$sensors['sensorMovementArtemRoom']="датчик движения в комнате"; //$sensors['sensorMovementSUM']="датчик движения общий"; //foreach($sensors as $k=>$v) { // if (!gg($k.'.alive')) { // $yellow_state=1; // $details[]="Не обновляется ".$v; // } //} if ($red_state) { $state='red'; $state_title='Красный'; } elseif ($yellow_state) { $state='yellow'; $state_title='Жёлтый'; } else { $state='green'; $state_title='Зелёный'; } $this->setProperty('stateDetails',implode(". ",$details)); if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("Уровень целостности системы изменился на ".$state_title."."); say(implode(". ",$details)); } else { say("Уровень целостности системы восстановился на ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; //if ((gg('sensorEntry.status')==0) && (gg('sensorGarage.status')==0)) { // $yellow_state=1; // $details[]="Ворота и гараж открыты"; //} elseif (gg('sensorEntry.status')==0) { // $yellow_state=1; // $details[]="Ворота открыты."; //} //if ((gg('ThisComputer.somebodyHome')==0) && (gg('sensorEntry.status')==0) && (gg('sensorGarage.status')==0)) { // $red_state=1; // $details[]="Дома никого нет, а ворота и гараж открыты"; //} if ($red_state) { $state='red'; $state_title='Красный'; } elseif ($yellow_state) { $state='yellow'; $state_title='Жёлтый'; } else { $state='green'; $state_title='Зелёный'; } $this->setProperty('stateDetails',implode(". ",$details)); if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("Уровень безопасности изменился на ".$state_title."."); say(implode(". ",$details)); } else { say("Уровень безопасности восстановился на ".$state_title); } $this->callMethod('stateChanged'); }
Свойства класса:
Методы класса:
//$params['t'] $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("H:i",time())); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=30*60; clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.Temperature',$this->getProperty("temp")); }
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
//Время работы этого сайта (с 12.07.2013). Да, можно проще, но мне этот самописный скрипт дорог как память :) $current_date = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $old_date = mktime(0, 0, 0, 7, 12, 2013); $total = ($current_date - $old_date); $seconds_in_a_year = 3600 * 24 * 365; $years = floor($total / $seconds_in_a_year); $rest = $total % $seconds_in_a_year; $seconds_in_a_month = 3600 * 24 * 30; $months = floor($rest / $seconds_in_a_month); $rest = $rest % $seconds_in_a_month; $seconds_in_a_day = 3600 * 24; $days = floor($rest / $seconds_in_a_day); $rest = $rest % $seconds_in_a_day; $otv="Сайт существует: <font color=\"lightgreen\"> $months мес. $days дн.</font>"; sg('ThisComputer.SiteUptime',$otv); //обновим прогноз callMethod("YandexNVKZ.update"); //проверим IP-адреса //runScript("CheckIP"); //пока отключил, нагрузка ненужная
$h=(int)date('G',time()); $m=date('i',time()); sg("ThisComputer.timeNow",$h . ":" . $m); //ежечасное оповещение if (($h>=8) && (gg('ClockChime.hourremind')==1)) { if ($m=="00") { say(timeNow()." ровно"); } } //будильник $objects=getObjectsByClass("AlarmClock"); foreach($objects as $obj) { // переберем все будильники в системе if ((getGlobal($obj['TITLE'].".AlarmOn") == 1) && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника } } //ночной режим if (($h=="23") && ($m=="30") && (gg("NightMode.active")==0)) { callMethod('NightMode.activate'); } //дневной режим (если не был включен ранее по будильнику или движению) if (($h=="9") && ($m=="00") && (gg("NightMode.active")==1)) { callMethod('NightMode.deactivate'); } if (timeIs(getGlobal('YandexNVKZ.Sunrise'))) { say('Уже восходит солнце'); callMethod('DarknessMode.deactivate'); } //Тут можно сделать зажигание света со сдвигом от времени восхода/заката /*if (timeIs(date('H:i', strtotime(getGlobal('YandexNVKZ.Sunrise'))-24*60))) { say('Скоро уличное освещение погаснет'); } if (timeIs(date('H:i', strtotime(getGlobal('YandexNVKZ.Sunset'))+22*60))) { say('Скоро на улице фонари загорятся'); }*/ if (timeIs(getGlobal('YandexNVKZ.Sunset'))) { say('Время заката солнца'); callMethod('DarknessMode.activate'); } //сенсоры сервака $bytes = disk_free_space("/"); $bytesusb = disk_free_space("/mnt/usbhdd_share"); $bytesusball = disk_total_space("/mnt/usbhdd_share"); $types = array( 'B', 'KB', 'MB', 'GB', 'TB' ); for( $i = 0; $bytes >= 1024 && $i < ( count( $types ) -1 ); $bytes /= 1024, $i++ ); for( $j = 0; $bytesusb >= 1024 && $j < ( count( $types ) -1 ); $bytesusb /= 1024, $j++ ); for( $ja = 0; $bytesusball >= 1024 && $ja < ( count( $types ) -1 ); $bytesusball /= 1024, $ja++ ); $freespace=('Свободное место: <font color="lightgreen">' . round( $bytes, 2 ) . " " . $types[$i] . '.</font><br>На UsbHDD: <font color="lightgreen">' . round( $bytesusb, 2 ) . " " . $types[$j] . '</font> из <font color="lightgreen"> ' . round( $bytesusball, 2 ) . " " . $types[$ja] . '.</font>'); sg('ThisComputer.freespaceHome',$freespace); $cputemp = ('Температура процессора: <font color="yellow">' . round(exec('/opt/vc/bin/vcgencmd measure_temp | cut -c 6-9')) . '°C </font>'); sg('ThisComputer.CPUtemp',$cputemp); $data = shell_exec('uptime'); $uptime = explode(' up ', $data); $uptime = explode(',', $uptime[1]); $upt = ('Время работы сервера: <font color="lightgreen">' . trim($uptime[0]) . '</font>'); sg('ThisComputer.uptime',$upt); //Подписываем на события таймера методы проверок //всех заитересованных объектов //при этом код проверки инкапсулирован в самом объекте // Режим Охрана callMethod("SecurityArmedMode.check"); // Режим Никого нет дома callMethod("NobodyHomeMode.check"); //реакции на людей $objects=getObjectsByClass("Users"); foreach($objects as $obj) { callMethod($obj['TITLE'].".check"); }
Методы класса:
Объекты класса:
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']); } }
Свойства класса:
Методы класса:
$tmpname = $this->getProperty('fullName'); if (isset($params['OLD_VALUE']) && $params['OLD_VALUE']==$params['NEW_VALUE']) return; if ($this->getProperty('isMoving')) { say($tmpname . " начал движение."); } else { $location=$this->getProperty('seenAt'); if (!$location) { $location=$this->getProperty('Coordinates'); } say($tmpname . " остановился (".$location.")"); } //say("Moving state changed from ".$params['OLD_VALUE']." to ".$params['NEW_VALUE']);
//проверка ухода на работу if ((timeIs($this->getProperty('TimeToGoWork'))) && (isWeekDay()) && ($this->getProperty('atHome')==1)) { $tmpname = $this->getProperty('fullName'); say($tmpname.' пора идти на работу'); }
if ($this->getProperty('atHome')==0) { $this->setProperty("atHome",1); $tmpname = $this->getProperty('fullName'); $tmpphrase = getRandomLine('comehome'); say($tmpname.' '.$tmpphrase); }
if ($this->getProperty('atHome')==1) { $this->setProperty("atHome",0); $tmpname = $this->getProperty('fullName'); $tmpphrase = getRandomLine('outhome'); say($tmpname.' '.$tmpphrase); }
Объекты класса:
if (gg("Music.isPlay")) { callMethod("Music.Stop"); say("Раз хозяина нету дома, я музыку выключаю"); } if (gg("girlanda.status")) { sg("girlanda.status",0); //и гирлянды тоже }
setTimeOut("doklad","callMethod('доклад.action');",0.5*60); //callMethod("доклад.action");
Свойства класса:
Методы класса:
Объекты класса:
callMethod("NightMode.deactivate");
$command=$params['command']; say("Очень приятно познакомиться " . $command.$subject . ", меня зовут Алиса.");
callMethod("YandexNVKZ.say3days");
callMethod("SecurityArmedMode.activate");
say("На улице " . gg("YandexNVKZ.Temp") . "°");
$command=$params['command']; runScript("AddEvernote",$command.$subject); say("Я запомнила.");
callMethod("NightMode.activate");
callMethod("Music.PlayFavorite");
callMethod("Music.PlayRelaxMusic"); say("Наслаждайтесь релаксом",-1);
setGlobal('minMsgLevel',1); say("Наслаждайтесь, а я пока помолчу"); callMethod("Music.PlaySexMusic");
callMethod("Music.Prev");
callMethod("Music.Next");
$objects=getObjectsByClass("Users"); $ownersinhome=""; foreach($objects as $obj) { if (getGlobal($obj['TITLE'].".atHome") == 1){ $ownersinhome=$ownersinhome.getGlobal($obj['TITLE'].".fullName")." "; } } if ($ownersinhome=="") { say("Дома сейчас - никого"); } else say("Дома сейчас - ".$ownersinhome);
callMethod("Music.Play");
callMethod("Music.Stop");
say(getRandomLine('blagodarnost'));
say(getRandomLine('privet'));
callMethod('YandexNVKZ.sayDnes');
$command=$params['command']; say($command);
$tmpmessage = ""; if (gg("securityMode.isForReading")==1) { $tmpmessage .= "Внимание! Датчики охраны срабатывали " . declension(gg('securityMode.count'), 'раз раза раз') . ", обязательно примите меры! "; callmethod("securityMode.checkRead"); } if (gg("evernote.isForReading")==1) { $tmpmessage .= "Вы себе отправляли " . declension(gg('evernote.count'), 'заметку заметки заметок') . " в Evernote, не забудьте прочитать. "; callmethod("evernote.checkRead"); } if (gg("ftpPomojka.isForReading")==1) { $tmpmessage .= "К FTP-архиву подключались " . declension(gg('ftpPomojka.count'), 'раз раза раз') . ". "; callmethod("ftpPomojka.checkRead"); } if ($tmpmessage != "") { $tmpmessage .= "Это всё."; } if ($tmpmessage == "") { $tmpmessage = "Все системы функционируют нормально, происшествий не было."; } say($tmpmessage);
say('Включаю радио'); // здесь код включающий интернет радио
$command=$params['command']; say($command);
saylong('Я - командный модуль домашней автоматизации, меня зовут Алиса. Я вам советую заглянуть в раздел справки, чтобы узнать больше о моих умениях.');
say('Точное время '.timeNow());
setGlobal('minMsgLevel',0); say('Хорошо. Бесшумный режим отключен');
setGlobal('minMsgLevel',1); say('Бесшумный режим включен');
saylong(gg('ThisComputer.tmpPhrase'));
setGlobal('minMsgLevel',0); callMethod("Music.Stop"); say("Интимная атмосфера отключена");
Свойства класса:
Методы класса:
if ((float)$this->getProperty("windAverage")>=8) { if (!$this->getProperty("isWindy")) { say("Похоже поднялся ветер...",1); } $this->setProperty('isWindy ',1); clearTimeOut("windOver"); } else { if ($this->getProperty("isWindy")) { clearTimeOut("windOver"); setTimeOut("windOver",'$this->setProperty("isWindy",0);say("Ветер стих...",1);',5*60); } }
if ((float)$this->getProperty("rainfallRate")>=0) { $this->setProperty("latestRain",time()); clearTimeOut("rainOver"); if (!$this->getProperty("isRain")) { say("Похоже пошёл дождь...",1); } $this->setProperty("isRain",1); } else { if ($this->getProperty("isRain")) { clearTimeOut("rainOver"); setTimeOut("rainOver",'say("Дождь закончился...",1);',5*60); } $this->setProperty("isRain",0); }
$this->setProperty("updatedTimestamp",time()); $this->setProperty("Alive",1); $ot=$this->object_title; clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".Alive',0);",30*60);
Объекты класса:
, Россия
На форуме: Galakart
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving