Свойства класса:
Методы класса:
if (gg("AlarmWeekDay.AlarmOn")) { setGlobal("AlarmMenu.AlarmMenuRun",Вкл); setGlobal("AlarmMenu.AlarmMenuLed",10); }elseif(gg("AlarmWeekEnd.AlarmOn")) { setGlobal("AlarmMenu.AlarmMenuRun",Вкл); setGlobal("AlarmMenu.AlarmMenuLed",10); }elseif(gg("AlarmOne.AlarmOn")) { setGlobal("AlarmMenu.AlarmMenuRun",Вкл); setGlobal("AlarmMenu.AlarmMenuLed",10); }else { setGlobal("AlarmMenu.AlarmMenuRun",Выкл); setGlobal("AlarmMenu.AlarmMenuLed",5); } if (gg("AlarmWeekDay.AlarmOn")) { setGlobal("AlarmMenu.AlarmMenu1Run",Вкл); }else { setGlobal("AlarmMenu.AlarmMenu1Run",Выкл); } if (gg("AlarmWeekEnd.AlarmOn")) { setGlobal("AlarmMenu.AlarmMenu2Run",Вкл); }else { setGlobal("AlarmMenu.AlarmMenu2Run",Выкл); } if (gg("AlarmOne.AlarmOn")) { setGlobal("AlarmMenu.AlarmMenu3Run",Вкл); }else { setGlobal("AlarmMenu.AlarmMenu3Run",Выкл); }
Объекты класса:
$stR=(gg("AlarmWeekDay.AlarmRing")); $urlU=gg("AlarmWeekEnd.URLR.URLR"); switch ($stR){ case 'Мелодия': $urlR=$urlU.'/requests/status.xml?command=in_play&input=file:///C:/_majordomo/htdocs/templates_alt/AlarmRing/alarm2.mp3'; break; case 'Сигнал': $urlR=$urlU.'/requests/status.xml?command=in_play&input=file:///C:/_majordomo/htdocs/templates_alt/AlarmRing/alarm7.mp3'; break; case 'Радио': $urlR=$urlU.'/requests/status.xml?command=in_play&input=http://212.56.209.70:8000/maestro'; break; } if (gg("AlarmWeekDay.ControlRing")) { getURL($urlR,0); }else { callMethod("AlarmWeekDay.AlarmRingStop"); } setGlobal('AlarmWeekDay.UrlAlarmRing',$urlR);
if (isWeekDay()){ // сегодня рабочий день say('сегодня рабочий день!'); // включим радио // exec("templates_alt\maestro.m3u"); // sg("Radio.RadioIsPlay",1); // запланируем выключить радио // AddScheduledJob("AlarmWeekDay_RadioStop",'sg("Radio.RadioIsPlay",0);', recognizeTime("в 6:55")); // запланируем напоминание о выходе из дома и доклад погоды // AddScheduledJob("AlarmWeekDay_timeNow",'callMethod("сколько время.action");', recognizeTime("в 7:10")); // AddScheduledJob("AlarmWeekDay_Pogoda", 'callMethod("погода при движении в зале.action");', recognizeTime("в 07:05")); // AddScheduledJob("AlarmWeekDay_timeNow",'callMethod("сколько время.action");', recognizeTime("в 7:20")); // AddScheduledJob("AlarmWeekDay_timeNow",'callMethod("сколько время.action");', recognizeTime("в 7:30")); // // все проснулись // setGlobal("SleepAllMode.active",0); }
getURL(gg('AlarmWeekDay.UrlAlarmRing'),0);
getURL(gg("AlarmWeekEnd.URLR").'/requests/status.xml?command=pl_stop',0);
$vol=gg("AlarmWeekDay.AlarmVolume"); $url=gg("AlarmWeekDay.URLR"); getURL($url.'/requests/status.xml?command=volume&val='.$vol,0);
if (gg("AlarmWeekDay.ControlRing")) { }else { callMethod("AlarmWeekDay.AlarmRingStop"); sg("AlarmWeekDay.ControlRing",0); }
getURL(gg("AlarmWeekEnd.URLR").'/requests/status.xml?command=pl_stop',0);
getURL(gg('AlarmOne.UrlAlarmRing'),0);
$stR=(gg("AlarmOne.AlarmRing")); $urlU=gg("AlarmWeekEnd.URLR"); switch ($stR){ case 'Мелодия': $urlR=$urlU.'/requests/status.xml?command=in_play&input=file:///C:/_majordomo/htdocs/templates_alt/AlarmRing/alarm2.mp3'; break; case 'Сигнал': $urlR=$urlU.'/requests/status.xml?command=in_play&input=file:///C:/_majordomo/htdocs/templates_alt/AlarmRing/alarm7.mp3'; break; case 'Радио': getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=177', 0); break; } if (gg("AlarmOne.ControlRing")) { getURL($urlR,0); }else { callMethod("AlarmOne.AlarmRingStop"); } setGlobal('AlarmOne.UrlAlarmRing',$urlR);
if (gg("AlarmOne.ControlRing")) { }else { callMethod("AlarmOne.AlarmRingStop"); sg("AlarmOne.ControlRing",0); }
$vol=gg("AlarmOne.AlarmVolume"); $url=gg("AlarmOne.URLR"); getURL($url.'/requests/status.xml?command=volume&val='.$vol,0);
// это однократный будильник, выключем его 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); } // это однократный будильник, выключем его //sg("AlarmOne.AlarmOn",0); //setGlobal("AlarmMenu.AlarmMenu3Run",Выкл); //setGlobal("AlarmMenu.AlarmMenuRun",Выкл); //setGlobal("AlarmMenu.AlarmMenuLed",5); //setGlobal("Radio.RadioIsPlay",1); //getURL(gg('Radio.UrlStancia'),0); //setGlobal("Radio.RadioPlayBeginTime",time()); //setGlobal("Radio.RadioMenuOn",Вкл); //setGlobal("Radio.RadioLedOn",10); //say("Включаю радио");
getURL(gg('AlarmWeekEnd.UrlAlarmRing'),0);
getURL(gg("AlarmWeekEnd.URLR").'/requests/status.xml?command=pl_stop',0);
if (gg("AlarmWeekEnd.ControlRing")) { }else { callMethod("AlarmWeekEnd.AlarmRingStop"); sg("AlarmWeekEnd.ControlRing",0); }
$vol=gg("AlarmWeekEnd.AlarmVolume"); $url=gg("AlarmWeekEnd.URLR"); getURL($url.'/requests/status.xml?command=volume&val='.$vol,0);
$stR=(gg("AlarmWeekEnd.AlarmRing")); $urlU=gg("AlarmWeekEnd.URLR"); switch ($stR){ case 'Мелодия': $urlR=$urlU.'/requests/status.xml?command=in_play&input=file:///C:/_majordomo/htdocs/templates_alt/AlarmRing/alarm2.mp3'; break; case 'Сигнал': $urlR=$urlU.'/requests/status.xml?command=in_play&input=file:///C:/_majordomo/htdocs/templates_alt/AlarmRing/alarm7.mp3'; break; case 'Радио': $urlR=$urlU.'/requests/status.xml?command=in_play&input=http://212.56.209.70:8000/maestro'; break; } if (gg("AlarmWeekEnd.ControlRing")) { getURL($urlR,0); }else { callMethod("AlarmWeekEnd.AlarmRingStop"); } setGlobal('AlarmWeekEnd.UrlAlarmRing',$urlR);
if (isWeekEnd()){ // сегодня выходной день say('сегодня выходной день!'); // включим радио getURL(gg('AlarmWeekEnd.UrlAlarmRing'),0); setGlobal("AlarmWeekEnd.AlarmPlayBeginTime ",time()); say("Включаю сигнал"); // запланируем напоминание о выходе из дома и доклад погоды SetTimeOut("AlarmWeekDay_timeNow",'callMethod("сколько время.action");', 60); // SetTimeOut("AlarmWeekDay_Pogoda", 'callMethod("погода на улице.action");', 60*15); SetTimeOut("AlarmWeekDay_timeNow",'callMethod("сколько время.action");', 120); // SetTimeOut("AlarmWeekDay_timeNow",'callMethod("сколько время.action");', 60*30); // все проснулись // setGlobal("SleepAllMode.active",0); // запланируем выключить радио через 5минут (60*5)=300 SetTimeOut("AlarmWeekEnd_AlarmRingStop",'callMethod("AlarmWeekEnd.AlarmRingStop");', 180); }
Свойства класса:
Методы класса:
$volume=round(65535*$params['VALUE']/100); $this->setProperty('volumeLevel',$params['VALUE']); safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); say("Изменилась громкость до ".$params['VALUE']." процентов");
Объекты класса:
say("Отключено питание");
$command=$params['command']; $short_command=''; $dt=recognizeTime($command,$short_command); if (preg_match('/скажи сколько время/is',$command)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята',2); return; } global $voicemode; $voicemode='on'; say('Сейчас '.timeNow(),2); } elseif (preg_match('/сколько время/is',$command)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята'); echo $short_command; return; } say('Сейчас '.timeNow()); } elseif (preg_match('/повтори (.+)/is',$command,$m) || preg_match('/скажи (.+)/is',$command,$m)) { if ($dt>0) { addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt); say('Задача принята',2); return; } global $voicemode; $voicemode='on'; say($m[1],2); } else { say('Неизвестная команда...',2); }
Свойства класса:
Методы класса:
//$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['h'])) { return; } $old_temp=$this->getProperty('humidity'); $t=round($params['h'],1); if ($t>100) return; $this->setProperty('humidity',$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.'.Humidity',$t); }
Объекты класса:
Свойства класса:
Методы класса:
if ($params['status']) { $this->setProperty('status',$params['status']); } $this->setProperty('updatedTimestamp',time()); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=12*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('status',$params['status']); // выставляем статус сенсора $this->setProperty('updatedTimestamp',time()); // выставляем время срабатывания сенсора $this->setProperty('alive',1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=24*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); if ($params['status']) { $this->setProperty('motionDetected',1); clearTimeOut($this->object_title.'_detected'); setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30); $linked_room=$this->getProperty('LinkedRoom'); if ($linked_room!='') { callMethod($linked_room.'.onActivity'); } if ($this->object_title=='sensorMovement3' || $this->object_title=='sensorMovementRemote1' || $this->object_title=='sensorMovementRemote2') { //|| $this->object_title=='sensorMovement5' return; // не реагируем на движение в спальне, по ip-сенсорам и по сенсору на втром этаже } ClearTimeOut("nobodyHome"); SetTimeOut("nobodyHome","callMethod('NobodyHomeMode.activate');", 1*60*60); // выполняем если целый час никого не было if (getGlobal('NobodyHomeMode.active')) { callMethod('NobodyHomeMode.deactivate'); } $last_register=registeredEventTime('inhouseMovement'); // проверяем когда в последний раз срабатывало событие "движение внутри дома" registerEvent('inhouseMovement',$this->name,2); // регистрируем событие "движение внутри дома" if (timeBetween('05:00', '12:00') && ((time()-$last_register)>2*60*60)) { runScript('Greeting'); // запускаем скрипт "доброе утро" } }
Объекты класса:
Объекты класса:
Свойства класса:
Методы класса:
$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);
Объекты класса:
setGlobal('minMsgLevel','2');
setGlobal('minMsgLevel','1');
Свойства класса:
Методы класса:
Объекты класса:
//say("Установим уровень громкости радио ".getGlobal("Radio.RadioVolume").""); $vol=gg("Radio.RadioVolume"); $url=gg("Radio.URL"); getURL($url.'/requests/status.xml?command=volume&val='.$vol,0);
if (getGlobal("Radio.RadioIsPlay")){ //say("Включаю радио"); setGlobal("Radio.RadioPlayBeginTime",time()); setGlobal("Radio.RadioMenuOn",Вкл); setGlobal("Radio.RadioLedOn",10); }else{ getURL(gg("Radio.URL").'/requests/status.xml?command=pl_stop',0); //say("Радио выключено"); setGlobal("Radio.RadioMenuOn",Выкл); setGlobal("Radio.RadioLedOn",5); }
$this->setProperty("RadioIsPlay",0); $this->callMethod("RadioSwitch");
//if(!getGlobal("NobodyHomeMode.active")){ $this->setProperty("RadioIsPlay",1); $this->callMethod("RadioSwitch"); //}else{ // say('Никого нет дома, радио не включаю'); //}
$stX=(gg("Radio.Stancia")); $url=gg("Radio.URL"); switch ($stX){ case 'Юмор FM': getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=175', 0); break; case 'Шансон': getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=181', 0); break; case 'Релакс': getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=177', 0); break; case 'Восток FM': getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=184', 0); break; case 'Весна FM': getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=183', 0); break; } getURL($urlS,0); setGlobal('Radio.UrlStancia',$urlS);
Свойства класса:
Методы класса:
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
$this->setProperty("status",0);
$this->setProperty("status",1);
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("status",0); //safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch'.$this->getProperty("channel")); $this->callMethod("sendCommand",array('command'=>'-off_ch'.$this->getProperty("channel")));
$this->setProperty("status",1); $this->callMethod("sendCommand",array('command'=>'-on_ch'.$this->getProperty("channel")));
$cmdline='"c:\Program Files\nooLite\nooLite.exe" -api '.$params['command']; $last_called=gg('NoolightCommandSend'); $min_delay=3; $now=time(); if (($now-$last_called)>$min_delay) { //safe_exec($cmdline); $last_callled=$now; sg('NoolightCommandSend',$last_called); DebMes("Noolite instant exec: ".$cmdline); system($cmdline); //exec($cmdline); } else { if ($last_callled<$now) { $last_callled=$now; } $last_called+=$min_delay; sg('NoolightCommandSend',$last_called); DebMes("Noolite scheduled job for ".date('H:i:s',$last_called)); AddScheduledJob("noolight".md5($cmdline),"safe_exec('".$cmdline."');",$last_called); }
Свойства класса:
Методы класса:
$code1=$this->getProperty('Code1'); $code2=$this->getProperty('Code2'); safe_exec("c:\_majordomo\apps\arduino_gw\arduino_gw.exe rcoff$code1:$code2;"); $this->setProperty("status",0);
$code1=$this->getProperty('Code1'); $code2=$this->getProperty('Code2'); safe_exec("c:\_majordomo\apps\arduino_gw\arduino_gw.exe rcon$code1:$code2;"); $this->setProperty("status",1);
Свойства класса:
Методы класса:
$rooms=getObjectsByClass("Rooms"); $total=count($rooms); for($i=0;$i<$total;$i++) { $rooms[$i]['room']=getGlobal($rooms[$i]['TITLE'].'.Title'); if (!$rooms[$i]['room']) { $rooms[$i]['room']=$rooms[$i]['TITLE']; } $rooms[$i]['active']=getGlobal($rooms[$i]['TITLE'].'.SomebodyHere'); $rooms[$i]['time']=getGlobal($rooms[$i]['TITLE'].'.LatestActivity'); $rooms[$i]['diff']=time()-$rooms[$i]['time']; } function cmp($a, $b) { if ($a['diff'] == $b['diff']) { return 0; } return ($a['diff'] < $b['diff']) ? -1 : 1; } usort($rooms,"cmp"); if (!$rooms[0]['active']) { $somebodyHomeText="Никого нет дома. Были в ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")"; } else { $res_rooms=array(); for($i=0;$i<$total;$i++) { if ($rooms[$i]['active']) { $res_rooms[]=$rooms[$i]['room']; } } $somebodyHomeText="Кто-то дома: ".implode(", ",$res_rooms); } setGlobal('somebodyHomeText',$somebodyHomeText); //echo "Updated";
$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; if ($this->getProperty("IdleDelay")) { $activity_timeout=(int)$this->getProperty("IdleDelay"); } else { $activity_timeout=10*60; } clearTimeOut($ot."_activity_timeout"); setTimeOut($ot."_activity_timeout","callMethod('".$ot.".onIdle');",$activity_timeout); $this->callMethod("updateActivityStatus");
Объекты класса:
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$details=array(); $t=$params['UPS.stateColor']; $red_state=0; $yellow_state=0; $grey_state=0; if ($t == "red") { $red_state=1; $details[]="Батарея ИБП разряжена"; } if ($t == "yellow") { $yellow_state=1; $details[]="Работа от аккумуляторов ИБП"; } if ($t == "grey") { $grey_state=1; $details[]="Нет связи с ИБП"; } if ($red_state) { $state='red'; $state_title='Красный'; } elseif ($yellow_state) { $state='yellow'; $state_title='Жёлтый'; } elseif ($grey_state) { $state='grey'; $state_title='Серый'; } else { $state='green'; $state_title='Зелёный'; } $this->setProperty('UPS.stateDetails',implode(". ",$details)); if ($this->getProperty('UPS.stateColor')!=$state) { $this->setProperty('UPS.stateColor',$state); $this->setProperty('UPS.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 (!isOnline('Internet')) { $yellow_state=1; $details[]=LANG_GENERAL_NO_INTERNET_ACCESS; } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); } else { say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; $cycles=array('states'=>'states','main'=>'main','execs'=>'exec','scheduler'=>'scheduler'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED."."; } } $cycles=array('ping'=>'ping','webvars'=>'webvars','watchfolders'=>'watch folders','rss'=>'RSS'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED."."; } } if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); } else { say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title=LANG_GENERAL_RED; } elseif ($yellow_state) { $state='yellow'; $state_title=LANG_GENERAL_YELLOW; } else { $state='green'; $state_title=LANG_GENERAL_GREEN; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title."."); say(implode(". ",$details)); } else { say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title); } $this->callMethod('stateChanged'); }
Свойства класса:
Методы класса:
//$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); $t=round($old_temp,2); if ($t>110) return; //$this->setProperty('temp',$t); $this->setProperty('tempRounded',$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); }
Объекты класса:
Свойства класса:
Методы класса:
/* START yaWeather module*/ $updateTime = gg('yw_setting.updateTime'); if($updateTime > 0){ $count = gg('yw_setting.countTime'); if($count >= $updateTime){ include_once(DIR_MODULES.'app_yaweather/app_yaweather.class.php'); $app_yaweather=new app_yaweather(); $app_yaweather->get_weather(gg('yw_setting.city_id')); sg('yw_setting.countTime',1); } else { $count++; sg('yw_setting.countTime',$count); } }/* END yaWeather*/
Объекты класса:
// раскидываем дату и время если изменилось $h=(int)date('G',time()); if (gg('ThisComputer.DateD')!=date("d", time())) { $day[0]="воскресенье"; $day[1]="понедельник"; $day[2]="вторник"; $day[3]="среда"; $day[4]="четверг"; $day[5]="пятница"; $day[6]="суббота"; $month[1]="января"; $monthAlt[1]="ЯНВАРЬ"; $month[2]="февраля"; $monthAlt[2]="ФЕВРАЛЬ"; $month[3]="марта"; $monthAlt[3]="МАРТ"; $month[4]="апреля"; $monthAlt[4]="АПРЕЛЬ"; $month[5]="мая"; $monthAlt[5]="МАЙ"; $month[6]="июня"; $monthAlt[6]="ИЮНЬ"; $month[7]="июля"; $monthAlt[7]="ИЮЛЬ"; $month[8]="августа"; $monthAlt[8]="АВГУСТ"; $month[9]="сентября"; $monthAlt[9]="СЕНТЯБРЬ"; $month[10]="октября"; $monthAlt[10]="ОКТЯБРЬ"; $month[11]="ноября"; $monthAlt[11]="НОЯБРЬ"; $month[12]="декабря"; $monthAlt[12]="ДЕКАБРЬ"; sg("ThisComputer.DateD",date( "d", time())); sg("ThisComputer.DateM",date( "m", time())); sg("ThisComputer.DateY",date( "Y", time())); sg("ThisComputer.Date",date( "d.m.Y", time())); sg("ThisComputer.Day",$day[date("w")]); sg("ThisComputer.Month",$month[date("n")]); sg("ThisComputer.MonthAlt",$monthAlt[date("n")]); }
$h=(int)date('G',time()); $m=date('i',time()); if (isWeekDay()) { } if (($h>=8) && getGlobal('clockChimeEnabled')) { if ($m=="00") { say(timeNow(),1); } } setGlobal('timeNow',date('H:i')); $homeStatus=date('H:i'); if (getGlobal('NobodyHomeMode.active')) { $homeStatus.=' Дома никого'; } else { $homeStatus.=' Дома кто-то есть'; } $homeStatus.=' '.getGlobal('Security.stateDetails'); $homeStatus.=' '.getGlobal('System.stateDetails'); $homeStatus.=' '.getGlobal('Communication.stateDetails'); setGlobal('HomeStatus',$homeStatus); if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')=="1") { setGlobal("isDark",0); callMethod('DarknessMode.deactivate'); } elseif (!timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')!="1") { setGlobal("isDark",1); callMethod('DarknessMode.activate'); } if (timeIs(getGlobal('SunRiseTime'))) { say('Всходит солнце'); } if (timeIs(getGlobal('SunSetTime'))) { say('Солнце заходит',2); } if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) { say("Похоже никого нет сегодня, можно сэкономить немного."); callMethod('EconomMode.activate'); } if (timeIs('20:00')) { callMethod('NightMode.activate'); } elseif (timeIs('08:00')) { callMethod('NightMode.deactivate'); } if (timeIs("03:00")) { runScript("systemMaintenance"); } if (gg('ThisComputer.AlarmStatus') && timeIs(gg('ThisComputer.AlarmTime'))) { runScript('MorningAlarm'); } //будильник $objects=getObjectsByClass("AlarmClock"); foreach($objects as $obj) { // переберем все будильники в системе if (getGlobal($obj['TITLE'].".AlarmOn") && timeIs(getGlobal($obj['TITLE'].".AlarmTime"))){ //если будильник включен и время совпало callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника } } //Радио //проверяем IP-адрес сервера и порт $sql="SELECT * FROM `terminals`"; $value=SQLSelectOne($sql); setGlobal('Radio.HOST',$value['HOST']); setGlobal('Radio.PORT',$value['PLAYER_PORT']); setGlobal('Radio.PLAYER_PASSWORD',$value['PLAYER_PASSWORD']); setGlobal('Radio.PLAYER_USERNAME',$value['PLAYER_USERNAME']); $url='http://'.$value['PLAYER_USERNAME'].':'.$value['PLAYER_PASSWORD'].'@'.$value['HOST'].":".$value['PLAYER_PORT']; setGlobal('Radio.URL',$url); //Сенсоры //CPU temp $cpu_temp=exec('cat /sys/devices/pci0000:00/0000:00:18.3/temp1_input') / 1000; $cpu_temp=round($cpu_temp,1); setGlobal("ThisComputer.CPUTemp",$cpu_temp); //CPU fan $cpu_temp=exec('cat /sys/devices/platform/it87.552/fan1_input'); $cpu_temp=round($cpu_temp,1); setGlobal("ThisComputer.CPUfan",$cpu_temp); //CPU load $cpu_usage=exec("top -bn 1 | awk '{print $9}' | tail -n +8 | awk '{s+=$1} END {print s}'"); setGlobal("ThisComputer.CPUload",$cpu_usage); //System uptime $sys_uptime=exec('uptime'); $sys_uptime = explode(' up ', $sys_uptime); $sys_uptime = explode(',', $sys_uptime[1]); $sys_uptime = trim($sys_uptime[0]); setGlobal("ThisComputer.System_uptime",$sys_uptime); //Memory usage/total $mem_total=exec("cat /proc/meminfo | grep MemTotal | awk '{print $2}'"); $mem_usage=$mem_total - exec("cat /proc/meminfo | grep MemFree | awk '{print $2}'"); $sys_memory=$mem_usage . "/" . $mem_total; setGlobal("ThisComputer.System_memory",$sys_memory); //HDD /dev/sda temp $hdd_temp=exec("hddtemp /dev/sda"); ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$hdd_temp,$arr); $hdd_temp = trim($arr[1]); $hdd_temp = str_replace('+','',$hdd_temp); setGlobal("ThisComputer.HDDtemp",$hdd_temp); //HDD free space $hdd_freespace=exec("df -h | grep /dev/sda3 | awk '{print $4}'"); setGlobal("ThisComputer.HDDfreespace",$hdd_freespace); //Скрипт проверки состояния ИБП. //Если вдруг upsmon не смог передать изменение состояния в MDM. unset($UPS_state); unset($UPS_state_raw); exec("upsc CPS@localhost",$UPS_state_raw); $count=count($UPS_state_raw); $i=0; while ($i<$count) { $rest = substr($UPS_state_raw[$i],0,strpos($UPS_state_raw[$i],":")); //имя параметра $value = substr($UPS_state_raw[$i],strpos($UPS_state_raw[$i],":")+2); //зачение параметра $UPS_state[$rest]=$value; $i++; } switch ($UPS_state["ups.status"]) { case "OL":callMethod("UPS.checkInputState",array("stateColor"=>"green"));break; case "OL TRIM":callMethod("UPS.checkInputState",array("stateColor"=>"green"));break; case "OB":callMethod("UPS.checkInputState",array("stateColor"=>"yellow"));break; case "LB":callMethod("UPS.checkInputState",array("stateColor"=>"red"));break; }; //Опрос скрипта отопления runScript('checkHeat'); //раз в минуту //Раз в полчаса //if ($m=="00" || $m=="30") { // runScript('checkZal'); // } //проверяем посылки if (gg("ThisComputer.PostOfficeCheckEveryHour") == "1" and $m=="01") { say("Проверяю посылки", 0); getURL('http://localhost/modules/app_postoffice/check_post.php',0); } else {if (isWeekDay()) { if (timeIs('9:00') || timeIs('12:00') || timeIs('14:00') || timeIs('16:00') || timeIs('19:00')) { say("Проверяю посылки", 0); getURL('http://localhost/modules/app_postoffice/check_post.php',0); }; } else if (isWeekEnd()) { if (timeIs('11:00') || timeIs('14:00') || timeIs('17:00')) { say("Проверяю посылки", 0); getURL('http://localhost/modules/app_postoffice/check_post.php',0); }; } } // получем ЧАСЫ и МИНУТЫ отдельно $timeH=date("H", time()); $timeM=date("i", time()); sg("ThisComputer.timeH",$timeH); sg("ThisComputer.timeM",$timeM);
Свойства класса:
Методы класса:
// МЕТОД view - подготовка кода для отображения $todo = $this->getProperty("todo"); // установим внутреннюю кодировку символов mb_internal_encoding("UTF-8"); $td = explode("|", $todo); $str_cod = '<div id="list"> <div class="new"> <input id="newtask" placeholder="New Item" type="text"> <button onClick="btnRunClicked();" class="fa fa-plus"></button> </div> <div class="list">'; for($i = 1; $i < sizeof($td); $i++) { // выделим и сохраним первый символ $check = mb_substr($td[$i], 0, 1); // обрежем строку, не будем отображать первый символ + или - $task = mb_substr($td[$i], 1); // начинаем формировать код hsl(196,'.(73-24*(($i-1)%2)).'%,50%) $str_cod = $str_cod.' <div class="item" id="taskbox_'.$i.'" style ="background: hsl('.(190+$i*6).',73%,50%);"> <span id="task_'.$i.'"'; // если певый символ "+" то значит задание "выполнено" if ($check == "+") { $str_cod = $str_cod.' class="checked"'; } $str_cod = $str_cod.'>'.$task.'</span>'; $str_cod = $str_cod.' <div class="rightblock"> <button id="check_'.$i.'" class="check fa fa-check" onClick="checkClicked('.$i.');"></button> <button id="delete_'.$i.'" class="delete fa fa-times" onClick="deleteClicked('.$i.');"></button> </div> </div>'; } $str_cod = $str_cod.' </div> </div>'; // записываем получившийся код $this->setProperty("StreamingCodeScene",$str_cod); $str_cod_css = "<style>".$this->getProperty("menuCSS")."</style>"; $str_cod_js = "<script type='text/javascript'>".$this->getProperty("JS")."</script>"; $str_cod = $str_cod_css.$str_cod_js.$str_cod; $this->setProperty("StreamingCodeMenu",$str_cod);
// МЕТОД check $todo = $this->getProperty("todo"); // установим внутреннюю кодировку символов mb_internal_encoding("UTF-8"); $td = explode("|", $todo); if (isset($params["task"])) { $ct = $params["task"]; for($i = 0; ($i < sizeof($td)); $i++) { // выделим и сохраним первый символ $check = mb_substr($td[$i], 0, 1); // обрежем строку, не будем отображать первый символ + или - $task = mb_substr($td[$i], 1); // если совпадает номер строки if ($i == $ct) { // инвентируем check $check = ($check == "+") ? "-" : "+"; $tcheck = ($check == "+") ? ""выполненно"" : ""не выполнено""; $sayTodo = gg("Sets.sayTodo"); if ($sayTodo) { say ("Todo задача: "".$task."" - отмечена как ".$tcheck,($sayTodo-2)); } } $td[$i] = $check.$task; } $todo = implode("|", $td); $this->setProperty("todo", $todo); } // выполним подготовку для отображения // callMethod("TodoList.view");
// МЕТОД delete $todo = $this->getProperty("todo"); $dt = $params["task"]; // получаем номер строки на удаление $td = explode("|", $todo); // Считываем всё в массив for($i = 0; $i < sizeof($td); $i++) { if($i == $dt) { $sayTodo = gg("Sets.sayTodo"); if ($sayTodo) { say ("Из листа todo удалена задача: "".mb_substr($td[$i], 1).""",($sayTodo-2)); } unset($td[$i]); } } $todo = implode("|", $td); $this->setProperty("todo", $todo); // выполним подготовку для отображения // callMethod("TodoList.view");
// МЕТОД new if (isset($params["task"])) { $todo = $this->getProperty("todo"); $mytask = "-".$params["task"]; // строка задачи $sayTodo = gg("Sets.sayTodo"); if ($sayTodo) { say ("В лист todo добавлена задача: "".$params["task"].""",($sayTodo-2)); } $todo = $todo."|".$mytask; // добавляем с разделителем $this->setProperty("todo", $todo); }
Методы класса:
Объекты класса:
// ****************************************************************** // * TO DO app - by Vovix - 30.11.2015 г. - v 3.1 * // ****************************************************************** // создадим класс и объекты addClass('ToDo'); addClassObject('ToDo','TodoList'); addClassProperty('ToDo','StreamingCodeMenu'); // HTML для меню addClassProperty('ToDo','StreamingCodeScene'); // HTML для сцен addClassProperty('ToDo','menuCSS'); // CSS для меню addClassProperty('ToDo','sceneCSS'); // CSS для сцены addClassProperty('ToDo','JS'); // общий код javascript addClassProperty('ToDo','todo'); // сам лист to do // $this->setProperty('todo', '- to do list by Vovix -'); $menuCSS=' @import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"); #item194 { /* здесь item194 - это номер ID пункта меню в котором он размещен */ padding: 0; } #list { position: relative; /* width: calc(100% + 40px); */ /* margin: 0 -20px 0 -20px; */ width: 100%; margin: 0; } #list .new { width: 100%; height: 50px; padding: 0; margin: 0; } #list .new #newtask { float: left; width: calc(100% - 76px); height: 50px; padding: 0; margin: 0; background: #333333; text-indent: 8px; } #list .new input { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; font-size: 14px; color: #FFF; text-align: justify; line-height: normal; outline: 0; border: 0; border-radius: 0px; text-shadow: none; } #list .new #newtask::-webkit-input-placeholder { color: rgba(255, 255, 255, 0.5); } #list .new button { cursor: pointer; float: right; width: 76px; height: 50px; padding: 0; outline: 0; border: 0; border-radius: 0px; margin: -9px 0 0 0; background: #111111; font-size: 24px; color: #FFF; } #list .list .item { clear: both; width: 100%; height: 38px; margin: 0; } #list .list .item span { cursor: default; float: left; width: calc(100% - 76px); height: 20px; padding: 9px 0 0 0; margin: 0; outline: 0; border: 0; background: transparent; text-indent: 8px; font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; font-size: 14px; color: #FFF; text-align: justify; text-shadow: none; } #list .list .item span.checked { opacity: .5; text-decoration: line-through; } #list .list .item .rightblock { float: right; width: 76px; height: 38px; padding: 0; margin: 0; } #list .list .item .rightblock button { cursor: pointer; float: left; width: 38px; height: 38px; padding: 0px; margin: 0; outline: 0; border: 0; border-radius: 0px; background: rgba(0,0,0,0.1); font-size: 20px; color: #FFF; } '; $this->setProperty('menuCSS', $menuCSS); $sceneCSS=' #list { position: relative; width: 100%; max-height: 528px; overflow: auto; margin: 0; } #list .new #newtask { float: left; width: calc(100% - 100px); height: 100px; padding: 0; margin: 0; outline: 0; border: 0; background: #333333; line-height: 50px; text-indent: 25px; } #list .new input { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; font-size: 28px; color: #FFF; text-align: justify; line-height: normal; outline: 0; border: 0; border-radius: 0px; text-shadow: 0px; } #list .new #newtask::-webkit-input-placeholder { color: rgba(255, 255, 255, 0.5); } #list .new button { cursor: pointer; float: right; width: 100px; height: 100px; padding: 0; margin: 0; outline: 0; border: 0; border-radius: 0px; background: #111111; font-size: 84px; color: #FFF; } #list .list .item { clear: both; width: 100%; height: 50px; margin: 0; padding: 5px 0 0 0; } #list .list .item span { cursor: default; float: left; width: calc(100% - 150px); height: 50px; padding: 0; margin: 0; outline: 0; border: 0; background: transparent; text-indent: 25px; font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; font-size: 28px; color: #FFF; text-align: justify; line-height: normal; } #list .list .item span.checked { opacity: .5; text-decoration: line-through; } #list .list .item .rightblock { float: right; padding: 0; margin: -2px 0 0 0; } #list .list .item button{ cursor: pointer; float: left; width: 50px; height: 50px; padding: 0; margin: 0; outline: 0; border: 0; box-shadow: 0 0 3px rgba(0,0,0,0.2); background: rgba(0,0,0,0.1); font-size: 32px; color: #FFF; } '; $this->setProperty('sceneCSS', $sceneCSS); $JS=' function btnRunClicked() { var newtask = $("#newtask").val(), ni = $("div.item").length + 1; $("#newtask").val(""); if (newtask) { var task1 = String(newtask); var codItem1 = \'<div class="item" id="taskbox_\' + ni + \'" style ="background: hsl(\' + (190+ni*6) + \',73%,50%);">\'; var codItem2 = \'<span id="task_\' + ni + \'">\' + task1 + \'</span>\'; var codItem3 = \'<div class="rightblock"><button id="check_\' + ni + \'" class="check fa fa-check ui-btn ui-shadow ui-corner-all" onClick="checkClicked(\' + ni +\');"></button>\'; var codItem4 = \'<button id="delete_\' + ni + \'" class="delete fa fa-times ui-btn ui-shadow ui-corner-all" onClick="deleteClicked(\' + ni + \');"></button></div></div>\'; $.get( "/objects/", { object:"TodoList", op:"m", m:"new", task:newtask } ); setTimeout(function() { $.get( "/objects/", { object:"TodoList", op:"m", m:"view" } ) }, 100); $(codItem1 + codItem2 + codItem3 + codItem4).appendTo("div.list"); return false; } } function checkClicked(ctask) { if (ctask) { $.get( "/objects/", { object:"TodoList", op:"m",m:"check", task:ctask } ); $("#task_"+ctask).toggleClass("checked"); setTimeout(function() { $.get( "/objects/", { object:"TodoList", op:"m", m:"view" } ) }, 100); return false; } } function deleteClicked(dtask) { if (dtask) { $.get( "/objects/", { object:"TodoList", op:"m", m:"delete", task:dtask } ); $("#taskbox_"+dtask).remove(); setTimeout(function() { $.get( "/objects/", { object:"TodoList", op:"m", m:"view" } ) }, 100); return false; } } '; $this->setProperty('JS', $JS); $view=' // МЕТОД view - подготовка кода для отображения $todo = $this->getProperty("todo"); // установим внутреннюю кодировку символов mb_internal_encoding("UTF-8"); $td = explode("|", $todo); $str_cod = \'<div id="list"> <div class="new"> <input id="newtask" placeholder="New Item" type="text"> <button onClick="btnRunClicked();" class="fa fa-plus"></button> </div> <div class="list">\'; for($i = 1; $i < sizeof($td); $i++) { // выделим и сохраним первый символ $check = mb_substr($td[$i], 0, 1); // обрежем строку, не будем отображать первый символ + или - $task = mb_substr($td[$i], 1); // начинаем формировать код hsl(196,\'.(73-24*(($i-1)%2)).\'%,50%) $str_cod = $str_cod.\' <div class="item" id="taskbox_\'.$i.\'" style ="background: hsl(\'.(190+$i*6).\',73%,50%);"> <span id="task_\'.$i.\'"\'; // если певый символ "+" то значит задание "выполнено" if ($check == "+") { $str_cod = $str_cod.\' class="checked"\'; } $str_cod = $str_cod.\'>\'.$task.\'</span>\'; $str_cod = $str_cod.\' <div class="rightblock"> <button id="check_\'.$i.\'" class="check fa fa-check" onClick="checkClicked(\'.$i.\');"></button> <button id="delete_\'.$i.\'" class="delete fa fa-times" onClick="deleteClicked(\'.$i.\');"></button> </div> </div>\'; } $str_cod = $str_cod.\' </div> </div>\'; // записываем получившийся код $this->setProperty("StreamingCodeScene",$str_cod); $str_cod_css = "<style>".$this->getProperty("menuCSS")."</style>"; $str_cod_js = "<script type=\'text/javascript\'>".$this->getProperty("JS")."</script>"; $str_cod = $str_cod_css.$str_cod_js.$str_cod; $this->setProperty("StreamingCodeMenu",$str_cod); '; addClassMethod('ToDo', 'view', $view); $check=' // МЕТОД check $todo = $this->getProperty("todo"); // установим внутреннюю кодировку символов mb_internal_encoding("UTF-8"); $td = explode("|", $todo); if (isset($params["task"])) { $ct = $params["task"]; for($i = 0; ($i < sizeof($td)); $i++) { // выделим и сохраним первый символ $check = mb_substr($td[$i], 0, 1); // обрежем строку, не будем отображать первый символ + или - $task = mb_substr($td[$i], 1); // если совпадает номер строки if ($i == $ct) { // инвентируем check $check = ($check == "+") ? "-" : "+"; $tcheck = ($check == "+") ? ""выполненно"" : ""не выполнено""; $sayTodo = gg("Sets.sayTodo"); if ($sayTodo) { say ("Todo задача: "".$task."" - отмечена как ".$tcheck,($sayTodo-2)); } } $td[$i] = $check.$task; } $todo = implode("|", $td); $this->setProperty("todo", $todo); } // выполним подготовку для отображения // callMethod("TodoList.view"); '; addClassMethod('ToDo', 'check', $check); $delete = ' // МЕТОД delete $todo = $this->getProperty("todo"); $dt = $params["task"]; // получаем номер строки на удаление $td = explode("|", $todo); // Считываем всё в массив for($i = 0; $i < sizeof($td); $i++) { if($i == $dt) { $sayTodo = gg("Sets.sayTodo"); if ($sayTodo) { say ("Из листа todo удалена задача: "".mb_substr($td[$i], 1).""",($sayTodo-2)); } unset($td[$i]); } } $todo = implode("|", $td); $this->setProperty("todo", $todo); // выполним подготовку для отображения // callMethod("TodoList.view"); '; addClassMethod('ToDo', 'delete', $delete); $new = ' // МЕТОД new if (isset($params["task"])) { $todo = $this->getProperty("todo"); $mytask = "-".$params["task"]; // строка задачи $sayTodo = gg("Sets.sayTodo"); if ($sayTodo) { say ("В лист todo добавлена задача: "".$params["task"].""",($sayTodo-2)); } $todo = $todo."|".$mytask; // добавляем с разделителем $this->setProperty("todo", $todo); } '; addClassMethod('ToDo', 'new', $new); callMethod("TodoList.view");
Методы класса:
Объекты класса:
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']); } }
Свойства класса:
Объекты класса:
Объекты класса:
, Россия
© 2025 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving