Свойства класса:
Методы класса:
Объекты класса:
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('Задача принята'); return; } global $voicemode; $voicemode='on'; say('Сейчас '.timeNow()); } 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('Задача принята'); return; } global $voicemode; $voicemode='on'; say($m[1]); } else { say('Неизвестная команда...'); }
Свойства класса:
Методы класса:
$this->setProperty("ProtectionMode",0); $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); //echo($ob->getProperty("Name")); //echo("<br>"); if (get_parent_class($ob).Name==get_parent_class($this).Name) { $ob->setProperty("ProtectionMode",0); $ob->setProperty("Alarm_Movement",0); } }
$this->setProperty("ProtectionMode",1); $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { $ob->setProperty("ProtectionMode",1); } }
$PrtMd=$this->getProperty("ProtectionMode"); echo($this->getProperty("Name")); if ($PrtMd==1) { // если объект находился под охраной $this->callmethod("ProtectionModeOFF"); // то снимаем с охраны echo("OFF"); } else { // если объект НЕ находился под охраной $this->callmethod("ProtectionModeON"); // то ставим под охрану echo("ON"); }
$PrtMd=$this->getProperty("NoBodyHome"); echo("<BR>"); if ($PrtMd==1) { // если объект находился под охраной $this->callmethod("NoBodyHomeOFF"); // то снимаем с охраны echo("OFF"); } else { // если объект НЕ находился под охраной $this->callmethod("NoBodyHomeON"); // то ставим под охрану echo("ON"); }
$this->setProperty("NoBodyHome",1); $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { $ob->setProperty("NoBodyHome",1); } }
$this->setProperty("NoBodyHome",0); $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { $ob->setProperty("NoBodyHome",0); } }
$this->setProperty("EconomMode",1); $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { $ob->setProperty("EconomMode",1); $ob->callMethod("CheckState"); } }
$this->setProperty("EconomMode",0); $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { $ob->setProperty("EconomMode",0); $ob->callMethod("CheckState"); } }
$EconomMd=$this->getProperty("EconomMode"); echo("<BR> Mode :".$EconomMd."<BR>"); echo("<BR>".$this->getProperty("Name")."<BR>"); if ($EconomMd==1) { // если объект находился в эконом режиме $this->callmethod("EconomModeOFF"); // то выключаем echo("OFF"); } else { // если объект НЕ находился в эконом режиме $this->callmethod("EconomModeON"); // то включаем echo("ON"); } $EconomMd=$this->getProperty("EconomMode"); //---------------- Устанавливаем такое же значение для всех дочерних объектов $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { if ($EconomMd==1) { // если родитель находился в эконом режиме $ob->callmethod("EconomModeON"); // то включаем и дочерний echo("OFF"); } else { // если объект НЕ находился в эконом режиме $ob->callmethod("EconomModeOFF"); // то выключаем дочерний echo("ON"); } } }
$T=$this->getProperty("Temperature"); $ST=$this->getProperty("SetTemperature"); if (($T=="") | ($ST=="")) { continue; } echo("<BR>".$this['TITLE']." t= ".$T.", Required : ".$ST." ."); if ( ($T+2) < $ST) { // Если температура ниже заданной более чем на два градуса - ищем комнатный обогреватель и включаем его echo(" Room ".$this->object_title." must be heated. "); $this->callMethod("HeatersON"); } if ( ($T+1) > $ST) { // Если температура выше заданной более чем на два градуса - ищем комнатный обогреватель и вЫключаем его echo("Room ".$this->object_title." must be cooled. "); $this->callMethod("HeatersOFF"); }
if ($this->getProperty("Alarm_Movement")==1 ) { echo("<BR>Тревога в ".$this->object_title); } else { echo("<BR>Отмена тревоги в ".$this->object_title); }
$AutoTemp=$this->getProperty("AutoTemp"); echo("<BR>AutoTemp".$AutoTemp."<BR>"); //---------------- Устанавливаем такое же значение для всех дочерних объектов $objects=getObjectsByClass("Rooms"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); if (get_parent_class($ob).Name==get_parent_class($this).Name) { if ($AutoTemp==1) { // если родитель находился в AutoTemp $ob->callmethod("AutoTempON"); // то включаем и дочерний //echo("ON"); } else { // если объект НЕ находился в AutoTemp $ob->callmethod("AutoTempOFF"); // то выключаем дочерний $ob->callMethod("HeatersOFF"); // и выключаем все связаные обогреватели //echo("OFF"); } } }
$this->SetProperty("AutoTemp","1");
$this->SetProperty("AutoTemp","0");
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('SomebodyHere',0); $temp=time()+$this->getProperty("Delay")*60; $this->setProperty('TimerToLightOff',$temp); $temp=$this->getProperty('TimerToLightOff'); echo("<BR>Time to Light OFF : ".$temp); $this->callMethod("CheckState");
$latestActivity=$this->getProperty('LatestActivity'); $this->setProperty('LatestActivity',time()); $this->setProperty('LatestActivityTime',date('H:i')); $this->setProperty('SomebodyHere',1); $this->setProperty("TimerToLightOff",time()+$this->getProperty("Delay")*60); // сбрасываем таймер выключения света $this->callMethod("CheckState"); //---------------------------------------------------------------------------------------
$heaters=getObjectsByClass("Heaters"); // перебираем все обогреватели foreach($heaters as $heater) { $heat=getObject($heater['TITLE']); if ( $this->object_title == $heat->getProperty("LinkObject")) { // Находим те которые закреплены за комнатой $heat->callmethod("RelayON"); // Запуск метода ON для обогревателя echo($heat->getProperty("LinkObject")." - ON<BR>"); } }
$heaters=getObjectsByClass("Heaters"); // перебираем все обогреватели foreach($heaters as $heater) { $heat=getObject($heater['TITLE']); if ( $this->object_title == $heat->getProperty("LinkObject")) { // Находим те которые закреплены за комнатой $heat->callmethod("RelayOFF"); // Запуск метода OFF для обогревателя echo($heat->getProperty("LinkObject")." - OFF<BR>"); } }
echo("<BR>CheckState ".$this->object_title); //------------------------------------------------------------------------------ // Проверка состояния обогревателей в комнате $heaters=getObjectsByClass("Heaters"); // перебираем все обогреватели foreach($heaters as $heater) { $heat=getObject($heater['TITLE']); $temp=0; if ( $this->object_title == $heat->getProperty("LinkObject")) { // Находим те которые закреплены за комнатой if ( $heat->getProperty("Relay") == 1 ) { $this->setProperty("Heating",1); $temp=1; break; // если хотя бы один обогреватель включен } // то считаем что комната отапливается } } if ($temp==0) { // если ни один обогреватель не включен $this->setProperty("Heating",0);} // то считаем что комната не обогревается echo("<BR>".$this->object_title." Heating=".$temp); //--------------------------------------------------------------------------------------- //------------------------------------------------------------------------------ // Проверка состояния датчиков движения в комнате $heaters=getObjectsByClass("MovementSensors"); // перебираем все датчики foreach($heaters as $heater) { $heat=getObject($heater['TITLE']); $temp=0; if ( $this->object_title == $heat->getProperty("LinkObject")) { // Находим те которые закреплены за комнатой if (( $heat->getProperty("MoveSensor") == 1 )&($heat->getProperty("Active")==1) ) // если датчик сработал и активен ) { // (потому как мог просто сработать уже давно и отвалится $this->setProperty("SomebodyHere",1); // если хотя бы один датчик включен $temp=1; // то считаем что в комнате кто-то есть break; } else { $this->setProperty("SomebodyHere",0); // если опросили все датчики и ни один не активен } // то, считаем что в комнате никого нет } } if ($temp==0) { // если ни один датчик не активен $this->setProperty("SomebodyHere",0); // то считаем что в комнате никого нет } //--------------------------------------------------------------------------------------- if ( $this->getProperty("SomebodyHere") == 1) { // если обнаружено движение if ($this->getProperty("Light") != 1 ) { // и свет не включен, то включаем свет echo("<BR>Кто-то в комнате. Включаем свет"); $this->callMethod("LightON"); } } //---------------------------------------------------------------------------------- // Проверка по режимам безопасности if ( $this->getProperty("ProtectionMode") == 1 ) { // если комната находится в режиме охраны if ( $this->getProperty("SomebodyHere") == 1) { // и в ней обнаружено движение, то запускаем ALARM echo("<BR>Нарушение безопасности. Движение в ".$this->object_title); $this->setProperty("Alarm_Movement",1); } else{ $this->setProperty("Alarm_Movement",0); } } //--------------------------------------------------------------------------------------- if ( $this->getProperty("NoBodyHome") == 1 ) { // если комната находится в режиме отсутствия людей if ( $this->getProperty("SomebodyHere") == 1) { // и в ней обнаружено движение, то запускаем } } //--------------------------------------------------------------------------------------- if ($this->getProperty("SomebodyHere")== 1) { $this->setProperty("TimerToLightOff",0); } //--------------------------------------------------------------------------------------- if (( $this->getProperty("EconomMode")== 1)&($this->getProperty("Light")==1)&($this->getProperty("SomebodyHere")== 0) ) { // если комната находится в режиме экономии энергии и включен свет if ($this->getProperty("TimerToLightOff")== 0) { //если не установлен таймер на выключение $this->setProperty("TimerToLightOff",time()+$this->getProperty("Delay")*60); } } //--------------------------------------------------------------------------------------- if (( $this->getProperty("EconomMode")== 1)&($this->getProperty("Light")==1)&($this->getProperty("SomebodyHere")== 0) ) { // если комната находится в режиме экономии энергии и включен свет // if ($this->getProperty("TimerToLightOff")!= 0) { //если установлен таймер на выключение // echo("<BR>".$this->getProperty("TimerToLightOff")." Нет движения в эконом режиме. Свет гасим"); //то свет не гасим а ждем когда обнулится таймер echo("<BR>"." Нет движения в эконом режиме. Свет гасим"); //то свет не гасим а ждем когда обнулится таймер $temp=time()-$this->getProperty("TimerToLightOff"); if ($this->getProperty("TimerToLightOff")>0) { //который обновляет свойство TimerToLightOff через метод объекта oneNewminute if ($temp<0) echo(" через ".$temp." c."); if ($temp>0) { echo(" немедленно."); $this->callMethod("LightOFF"); } } else { echo("<BR>Включен эконом режим"); if ( $this->getProperty("SomebodyHere") == 1) { // и в ней обнаружено движение, то запускаем //echo("<BR>Кто-то в комнате. Включаем свет"); } } }
$this->setProperty('TimerToLightOff',0); $heaters=getObjectsByClass("Lights"); // перебираем все светильники foreach($heaters as $heater) { $heat=getObject($heater['TITLE']); if ( $this->object_title == $heat->getProperty("LinkObject")) { // Находим те которые закреплены за комнатой $heat->callmethod("RelayON"); // Запуск метода ON для обогревателя echo($heat->getProperty("LinkObject")." - ON<BR>"); } }
$lighters=getObjectsByClass("Lights"); // перебираем все светильники foreach($lighters as $lighter) { //echo($heat->object_title); $heat=getObject($lighter['TITLE']); if ( $this->object_title == $heat->getProperty("LinkObject")) { // Находим те которые закреплены за комнатой $heat->callmethod("RelayOFF"); // Запуск метода OFF для светильника echo("<BR>".$heat->getProperty("LinkObject")." - OFF<BR>"); } }
if ( $this->getProperty("Light")== 0 ) { $this->callMethod("LightON"); } else { $this->callMethod("LightOFF"); }
//$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); //$aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='0B'; $ob=$this; $IDdev=0;//hexdec("0x".$ob->getProperty("ID")); $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); $IDp="02"; $Param=$IDdev; echo("<BR>".$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"."<BR>"); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); //} //}
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('status',$params['status']); $this->setProperty('updatedTimestamp',time()); $this->setProperty("alive",1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=12*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
Свойства класса:
Методы класса:
$this->setProperty('status',$params['status']); $this->setProperty('updatedTimestamp',time()); $this->setProperty('alive',1); $ot=$this->object_title; $alive_timeout=(int)$this->getProperty("aliveTimeOut"); if (!$alive_timeout) { $alive_timeout=24*60*60; } clearTimeOut($ot."_alive"); setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); if ($params['status']) { $this->setProperty('motionDetected',1); clearTimeOut($this->object_title.'_detected'); setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30); $linked_room=$this->getProperty('LinkedRoom'); if ($linked_room!='') { callMethod($linked_room.'.onActivity'); } if (getGlobal('somebodyHome')!=1) { setGlobal('somebodyHome',1); } $last_register=registeredEventTime('inhouseMovement'); registerEvent('inhouseMovement',$this->name,2); if (!$last_register || ((time()-$last_register)>2*60*60)) { if (timeBetween('06:00', '12:00')) { runScript('morningGreeting'); } if (timeBetween('16:00', '01:00')) { runScript('eveningGreeting'); } } }
Свойства класса:
Методы класса:
$this->setProperty("status",1); sg($This + ".status",1);
$this->setProperty("status",0);
exit($State);
if ($params['VALUE']) { sg("LightBulb1.status","1"); say('Освещение в прихожей включено', 1); $this->setProperty('statusText','Включено'); } else { sg("LightBulb1.status","0"); say('Освещение в прихожей выключено', 1); $this->setProperty('statusText','Выключено'); }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('active',0);
$this->setProperty('active',1);
$this->setProperty("updated",time()); $this->setProperty("updatedTime",date('H:i')); if ($this->getProperty('status')) { say("Mode ".$this->getProperty('title')." activated."); } else { say("Mode ".$this->getProperty('title')." deactivated."); }
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty("status",0);
$this->setProperty("status",1);
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
Свойства класса:
Методы класса:
//$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $this->setProperty("Relay",1); $aa=substr_replace($this->getProperty("ID"), '0', -1); // Из адреса элемента формируем RF адрес модуля, последней цифрой ставя ноль $ID="E7E7E7".$aa; $aa=substr_replace($this->getProperty("ID"), '', -2); // В отправляемом пакете адрес элемента модуля передается младшим байтом вперед $ab=substr_replace($this->getProperty("ID"), '', 0,2); // получаем млю и стрш. байты $IDS=$ab.$aa; // формируем конечный адрес $CMD='02'."00"."00000000"."0100"."3131"; $this->setProperty("LastCommand",$CMD); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDS.$CMD); echo("<BR>".$ID.$IDS.$CMD);
//$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $this->setProperty("Relay",0); $aa=substr_replace($this->getProperty("ID"), '0', -1); // Из адреса элемента формируем RF адрес модуля, последней цифрой ставя ноль $ID="E7E7E7".$aa; $aa=substr_replace($this->getProperty("ID"), '', -2); // В отправляемом пакете адрес элемента модуля передается младшим байтом вперед $ab=substr_replace($this->getProperty("ID"), '', 0,2); // получаем млю и стрш. байты $IDS=$ab.$aa; // формируем конечный адрес $CMD='02'."00"."00000000"."0100"."3131"; $CMD='02'."00"."00000000"."0000"."3131"; $this->setProperty("LastCommand",$CMD); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDS.$CMD); echo($ID.$IDS.$CMD);
//$params['t'] echo("\n\r"); echo("SetStatus ".$s); $this->setProperty("updated",time()); $this->setProperty("updatedTime",date("Y-m-d H:i",time())); $this->setProperty("Active","1"); //----------------------------------------------------------- // запрос класса объекта ( в MD все является классом objects ) $SQL_R=SQLSelectOne("SELECT * FROM classes WHERE ID='".(int)$this->class_id."'"); $class=$SQL_R['TITLE']; echo($class); //-------------------------- If This TempSensor ( Если Это датчик температуры ) ------------------------------------------ if ($class=='TempSensors') if (isset($params['prm'])) { // данные с датчика температуры поступают в сыром виде, так как их выдает датчик DS18B20 // поэтому нужно разделить положительные и отрицательные значения if ($params['prm']<1100) { // положительная температура $t=$params['prm']/10; echo("Received temp =".$t." in ".$this->getProperty("LinkObject")."<BR>"); $this->setProperty('Temp',$t); $str=($this->getProperty("LinkObject")).".Temperature"; setGlobal($str,$t); } if ($params['prm']>2500) { // отрицательная температура $tmp=$params['prm']; $t = -(~$tmp + 2 + 65535)/10; echo("Received temp =".$t." in ".$this->getProperty("LinkObject")."<BR>"); $this->setProperty('Temp',$t); $str=($this->getProperty("LinkObject")).".Temperature"; setGlobal($str,$t); } } //-------------------------- If This Light ( Если Это лампочка ) ------------------------------------------ if ($class=='Lights'){ $s=$params['s']; if ((intval($s,16)&1)>0) { echo("Light ON"); $this->setProperty('Relay',"1"); $str=($this->getProperty("LinkObject")).".Light"; echo(" in ".$str."<BR>"); setGlobal($str,"1"); } else { echo("Light OFF"); $this->setProperty('Relay',"0"); $str=($this->getProperty("LinkObject")).".Light"; echo(" in ".$str."<BR>"); setGlobal($str,"0"); $str=($this->getProperty("LinkObject")).".TimerToLightOff"; echo("<BR> Clear timer ".$str); setGlobal($str,"0"); } } //-------------------------- If This Heater ( Если Это обогреватель ) ------------------------------------------ if ($class=="Heaters"){ $s=$params['s']; if ((intval($s,16)&1)>0) { echo($s." ".(intval($s,16)&1)." "."Heaters ON+"); $this->setProperty('Relay',"1"); $str=($this->getProperty("LinkObject")); echo(" in ".$str."<BR>"); } if ((intval($s,16)&1)==0) { echo($s." ".(intval($s,16)&1)." Heaters OFF-"); $this->setProperty('Relay',"0"); $str=($this->getProperty("LinkObject")); echo(" in ".$str."<BR>"); } } //-------------------------- If This MoveSensor ( Если Это датчик движения ) ------------------------------------------ if ($class=='MovementSensors') { $s=$params['s']; if ((intval($s,16)&1)>0) { $this->callMethod('MovementON'); } else { $this->callMethod('MovementOFF'); } } //------------------------------------------------------------------------------------------------------------------ $s=$params['s']; $old_status=$this->getProperty("status"); if (isset($params['s'])) { if ($old_status!=$s) { $this->setProperty('Status',str_pad(strval(decbin($s)),8,"0",STR_PAD_LEFT)); //--------------Побитовая проверка статуса устройства--------------------------------------------- // Младший бит - состояние реле. Можно как читать так и устанавливать. echo( intval($s,16)); //------Второй бит устройства. ----------------------------------------------------- if ((base_convert($s, "2", "10")&2)>0) { // } else{ // }; //----------------------------------------------------------- } } if ($params['uptime']) { $this->setProperty('uptime',$params['uptime']); }
echo($this->getProperty("Relay")); if ($this->getProperty("Relay")==0) { $this->callmethod("RelayON"); } else { $this->callmethod("RelayOFF"); }
echo("<BR>Adress request"); $ADDR=$params['prm']; $ID="E7E7E7".$ADDR; $IDS="00"; $CMD="00".'08'."00"."00000000"."0100"."3131"; safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDS.$CMD); $this->setProperty("LastCommand",$CMD);
$aa=substr_replace($this->getProperty("ID"), '0', -1); // Из адреса элемента формируем RF адрес модуля, последней цифрой ставя ноль $ID="E7E7E7".$aa; $aa=substr_replace($this->getProperty("ID"), '', -2); // В отправляемом пакете адрес элемента модуля передается младшим байтом вперед $ab=substr_replace($this->getProperty("ID"), '', 0,2); // получаем млю и стрш. байты $IDS=$ab.$aa; safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDS.'03'."00"."00000000"."0000"."3131"); safe_exec('"echo>>C:/_majordomo/apps/arduino_gw/arduino_gw.log "'.date("H:i",time())." : ".$ID.$IDS.'03'."00"."00000000"."0000"."3131"); $aa=""; $ID=""; $IDS="";
// Метод выполняет действия по отработке события на датчике движения, // кроме установки меток о доступности устройства и времени последней активности*, // это позволяет запускать метод принудительно из других мест. // * эти свойства устанавливаются в методе класса при получении реального сигнала от датчика echo("Activity!"); $this->setProperty('MoveSensor',"1"); // Устанавливаем значение свойства самого датчика движения $str=$this->getProperty("LinkObject").".onActivity"; // формируем имя метода связанного объекта callMethod($str); // Запускаем метод связанного объекта
// Метод выполняет действия по отработке события на датчике движения, // кроме установки меток о доступности устройства и времени последней активности*, // это позволяет запускать метод принудительно из других мест. // * эти свойства устанавливаются в методе класса при получении реального сигнала от датчика echo("No active"); $this->setProperty('MoveSensor',"0"); // Устанавливаем значение свойства самого датчика движения $str=$this->getProperty("LinkObject").".onIdle"; // формируем имя метода связанного объекта callMethod($str); // Запускаем метод связанного объекта
// Если есть связанный объект, то запускаем метод этого // объекта для обновления своего состояния if ( $this->getProperty("LinkObject") != "" ) { echo("Parent object = ".$this->getProperty("LinkObject")."<BR>"); $str=($this->getProperty("LinkObject")).".CheckState"; echo("<br>".$str); callmethod($str); }
$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='06'; $objects=getObjectsByClass("RF_Device"); echo("<br>"); //foreach($objects as $obj) { //$ob=getObject($obj['TITLE']); $ob=$this; $IDdev=hexdec("0x".$ob->getProperty("ID")); //$ADDR=hexdec("0x".$ADDR); $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); $name=$ob->object_title; echo("<BR>".$name." "); for ($aa=0;$aa<18;$aa++) { $IDp=sprintf("%02X",$aa); $Param=sprintf("%02X",ord($name{$aa})).'00'; if ($Param=="0000"){ break; } //echo(dechex(ord($name{$aa}))." "); echo("<BR>".$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); usleep(300000); } } //safe_exec('"echo>>C:/_majordomo/apps/arduino_gw/arduino_gw.log "'.date("H:i",time())." : ".$ID.$IDS."00".'03'."00"."00000000"."0000"."3131"); $aa=""; $ID=""; $IDS="";
$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='0B'; //$objects=getObjectsByClass("TextMessages"); //echo("<br>"); //foreach($objects as $obj) //{ $ob=$this; //$ob=getObject($obj['TITLE']); //$IDtext=$ob->getProperty("ID"); // $IDdev=hexdec("0x"."0001"); $IDdev=hexdec("0x".$ob->getProperty("ID")); $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); $IDp="02"; $Param=$IDdev; echo("<BR>".$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"."<BR>"); // E7E7E7E0E162000B02000000003131 //safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '."E7E7E7E0E102000B010000000061003131"); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); //} //}
Объекты класса:
echo("<BR>Start"); if (isset($params['prm'])){ $prm=$params['prm']; } $s=$params['s']; $prm=$params['prm']; $idd=$params['id']; $idp=$params['idp']; echo("<BR>"."ID=".$idd." Status=".$s); //----------------------------------------------------------------- $objects=getObjectsByClass("RF_Device"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); $ID=$ob->getProperty("ID"); echo($obj['TITLE']." Class -".get_class($ob)." ID= ".$ID." Status= ".$s); if ($ID==$idd){ echo(" Поступила команда <BR>"); $ob->callmethod("SetStatus",array("s"=>hexdec($s),"prm"=>hexdec($prm),"idp"=>hexdec($idp),"prm"=>hexdec($prm))); //if (isset($params['prm'])){ //$ob->callmethod("SetStatus",array("prm"=>hexdec($prm))); //} } echo("<BR>"); } //-----------------------------------------------------------------
echo("<BR>Adress request"); $ADDR=$params['prm']; echo($ADDR); $CMD=$params['s']; //------------------------------------------------------------------------------------------------------------------- // Обработка запроса от RF-модуля на выделение нового адреса. // Адрес определяется как очередной из уже существующих. Адрес ControlCentre - зарезервирован и в выборе не участвует //------------------------------------------------------------------------------------------------------------------- if ($CMD==9) { echo("Incoming address request"); // ---------------------- Формирование нового номера модуля --------------------------------------------------------- // Для определения очередного номера делаем запрос в базу объектов с фильтром по PROPERTY_ID объекта - 86 (поле с номером модуля) $result = mysql_query("SELECT * FROM `pvalues` WHERE `PROPERTY_ID`=86"); if (!$result) { echo mysql_error(); } if (!$result) { $message = 'Неверный запрос: ' . mysql_error() . "\n"; //$message .= 'Запрос целиком: ' . $query; die($message); } //------------------------------------------------------------------------------------------------------------------ $NEW_ModuleID=0; while ($row = mysql_fetch_object($result)) { echo ("ID:".$row->ID); echo (" OBJECT:".$row->OBJECT_ID); echo (" PROPERTY_ID:".$row->PROPERTY_ID); echo (" VALUE:".$row->VALUE); echo ("<BR>"); // ------------------------ если наткнулись на объект ControlCenter (т.е. на себя ) то пропускаем (Обычно у него номер идет не по-порядку) ------------- if ( $row->VALUE == $this->getProperty("ID")) { echo("It's Control center - continue...<BR>"); continue; } //------------------------- здесь находим самый большой(последний) номер -------------------------------------------------- if ($row->VALUE>$NEW_ModuleID) { $NEW_ModuleID=$row->VALUE; //-------------------------------------------------------------------------------------------------------------- } } mysql_free_result($result); // Удаление объекта с результатом запроса. //---------------------------- здесь создаем новый номер кратный 0x10 ------------------------------------------------ echo "MAX_ModuleID:".$NEW_ModuleID."<BR>"; //----------- В базе хранятся номера модулей в HEX виде, но этот вид не помечен ни "0х" ни "\х". Поэтому следующий блок приводит номер к НЕХ виду //----------- и вычисляет следующий по порядку номер для модуля кратный 0х10 $NEW_ModuleID=hexdec("0x".$NEW_ModuleID); //echo "NEW_ModuleID(HEX):". sprintf("%04X",$NEW_ModuleID)."<BR>"; $NEW_ModuleID=floor($NEW_ModuleID/0x10)*0x10+0x10; // ------- Если новый адрес совпадает с адресом СontrolCenter то берем следующий адрес ----------------------------- $aa=substr_replace($this->getProperty("ID"), '0', -1); // Из адреса элемента формируем RF адрес модуля, последней цифрой ставя ноль if ( $NEW_ModuleID == $aa ) { $NEW_ModuleID=hexdec("0x".$NEW_ModuleID); $NEW_ModuleID=floor($NEW_ModuleID/0x10)*0x10+0x10; } // ------------------------------------------------------------------------------------------------------------------ //echo "NEW_ModuleID(HEX):". sprintf("%04X",$NEW_ModuleID)."<BR>"; //echo sprintf("%02X%02X",$NEW_ModuleID&0x00FF,$NEW_ModuleID>>8); //----------------- Отсылаем новый номер устройству ---------------------------------------------------------------- $ID="E7E7E7".$ADDR; echo("<BR>".$ADDR); //echo("<BR>".sprintf("%02X%02X",$ADDR&0x00FF,$ADDR>>8)); $ADDR=hexdec("0x".$ADDR); $IDS=sprintf("%02X%02X",$ADDR&0x00FF,$ADDR>>8); // $CMD='08'."00"."00000000".sprintf("%02X%02X",$NEW_ModuleID&0x00FF,$NEW_ModuleID>>8)."3131"; // сложная конструкция с побитовыми операциями - это смена местами старшего и младшего байта, для передачи safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDS.$CMD); echo("<BR>".'"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDS.$CMD); } if ($CMD==7) { echo("Incoming address confirmation"); $NEW_ModuleID=$ADDR; // ---------------------- Создаем новый RF объект в базе ------------------------------------------------------------ $TITLE="New RF device"; $CLASS_ID=29; $DESCRIPTION="New RF device ModuleID: ".sprintf("%04s",$NEW_ModuleID); // в описание сразу добавляем номер модуля для удобства $LOCATION_ID=4; $query_o = "INSERT INTO `objects` (`TITLE`, `CLASS_ID`, `DESCRIPTION`,`LOCATION_ID`) VALUE (\"$TITLE\", \"$CLASS_ID\", \"$DESCRIPTION\", \"$LOCATION_ID\")"; echo("<BR>"."Create new object".$query_o."<BR>"); mysql_query ($query_o) or die (mysql_error()); //-------- Сохраняем ИД нового объекта для дальнейшего создания записи со свойствами для этого объекта ----------- $NEW_OBJECT_ID=mysql_insert_id(); echo("<BR>Last inserted record has id ".$NEW_OBJECT_ID." <BR>"); // ---------------------- Присваиваем номер модулю ----------------------------------------------------------------- $PROPERTY_ID=86; // 86 - свойство с номером модуля $OBJECT_ID=$NEW_OBJECT_ID; // ИД только что созданого объекта $VALUE=sprintf("%04s",$NEW_ModuleID); // номер модуля echo "NEW_ModuleID(HEX):".$VALUE."<BR>"; $query_pv = "INSERT INTO `pvalues` (`PROPERTY_ID`, `OBJECT_ID`, `VALUE`) VALUE (\"$PROPERTY_ID\", \"$OBJECT_ID\",\"$VALUE\")"; echo("<BR>".$query_pv); mysql_query ($query_pv) or die (mysql_error()); $this->setProperty("LastCommand",$CMD); // сохраняем полседнюю команду, Типа мини-лог. } echo("Exit DHCP");
$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='06'; $objects=getObjectsByClass("RF_Device"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); //$ob=$this; if ($ob->object_title!=$this->object_title){ $ob->callmethod("SetNames"); } // $IDdev=hexdec("0x".$ob->getProperty("ID")); // $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); // $name=$ob->object_title; echo("<BR>".$name." "); /* for ($aa=0;$aa<16;$aa++) { $IDp=sprintf("%02X",$aa); $Param=sprintf("%02X",ord($name{$aa})).'00'; if ($Param=="0000"){ break; } // safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); } */ //usleep(1000000); } //safe_exec('"echo>>C:/_majordomo/apps/arduino_gw/arduino_gw.log "'.date("H:i",time())." : ".$ID.$IDS."00".'03'."00"."00000000"."0000"."3131"); $aa=""; $ID=""; $IDS="";
$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='0A'; $objects=getObjectsByClass("TextMessages"); echo("<br>"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); $IDtext=$ob->getProperty("Text"); $IDdev=hexdec("0x".$ob->getProperty("ID")); $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); echo("<BR>".$IDtext." "); for ($aa=0;$aa<16;$aa++) { $IDp=sprintf("%02X",$aa); $Param=sprintf("%02X",ord($IDtext{$aa})).'00'; if ($Param=="0000"){ break; } echo("<BR>".$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"."<BR>"); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); } }
$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='0B'; $objects=getObjectsByClass("TextMessages"); echo("<br>"); //foreach($objects as $obj) //{ //$ob=getObject($obj['TITLE']); //$IDtext=$ob->getProperty("ID"); $IDdev=hexdec("0x"."0001"); $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); //echo("<BR>".$IDtext." "); echo("<BR>".$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"."<BR>"); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '."E7E7E7E0E102000B010000000061003131"); // safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD."00"."00000000".$Param."3131"); //} //}
Объекты класса:
Объекты класса:
Объекты класса:
Объекты класса:
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title='Red'; } elseif ($yellow_state) { $state='yellow'; $state_title='Yellow'; } else { $state='green'; $state_title='Green'; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("System state changed to ".$state_title."."); say(implode(". ",$details)); } else { say("System state restored to ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; $cycles=array('states'=>'states cycle','main'=>'main cycle','execs'=>'exec cycle','scheduler'=>'scheduler cycle'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>5*60) { $red_state=1; $details[]=$v." stopped."; } } $cycles=array('ping'=>'ping cycle','webvars'=>'webvars cycle','watchfolders'=>'watch folders cycle','rss'=>'RSS cycle'); foreach($cycles as $k=>$v) { $tm=getGlobal('ThisComputer.cycle_'.$k.'Run'); if (time()-$tm>10*60) { $yellow_state=1; $details[]=$v." stopped."; } } if ($red_state) { $state='red'; $state_title='Red'; } elseif ($yellow_state) { $state='yellow'; $state_title='Yellow'; } else { $state='green'; $state_title='Green'; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("System state changed to ".$state_title."."); say(implode(". ",$details)); } else { say("System state restored to ".$state_title); } $this->callMethod('stateChanged'); }
$details=array(); $red_state=0; $yellow_state=0; if ($red_state) { $state='red'; $state_title='Red'; } elseif ($yellow_state) { $state='yellow'; $state_title='Yellow'; } else { $state='green'; $state_title='Green'; } $new_details=implode(". ",$details); if ($this->getProperty("stateDetails")!=$new_details) { $this->setProperty('stateDetails',$new_details); } if ($this->getProperty('stateColor')!=$state) { $this->setProperty('stateColor',$state); $this->setProperty('stateTitle',$state_title); if ($state!='green') { say("System state changed to ".$state_title."."); say(implode(". ",$details)); } else { say("System state restored to ".$state_title); } $this->callMethod('stateChanged'); }
Свойства класса:
Методы класса:
$aa=(round(intval($this->getProperty("ID"))/10, 0)*10); $aa=str_pad($aa, 4, "0", STR_PAD_LEFT); echo("<BR>".$aa); $IDS="E0E1";//intval($this->getProperty("ID")); $ID=("E7E7E7".$IDS);//$aa; $CMD='0A'; //$objects=getObjectsByClass("TextMessages"); echo("<br>"); //foreach($objects as $obj) //{ $ob=$this; //$ob=getObject($obj['TITLE']); $IDtext=$ob->getProperty("ID"); $IDdev=hexdec("0x".$ob->getProperty("ID")); $IDdev=sprintf("%02X%02X",$IDdev&0x00FF,$IDdev>>8); echo("<BR>".$IDtext." "); for ($aa=0;$aa<16;$aa++) { $IDp=sprintf("%02X",$aa); $Param=sprintf("%02X",ord($name{$aa})).'00'; if ($Param=="0000"){ // break; } echo("<BR>".$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"."<BR>"); safe_exec('"C:/_majordomo/apps/arduino_gw/arduino_gw.exe" '.$ID.$IDdev.$CMD.$IDp."00000000".$Param."3131"); } //}
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
//------------------------------------------------------------------------------------ // Конвертирует количество секунд в читабельное время : 5w 4d 6h 58m 50s function time_elapsed_A($secs){ $bit = array( 'y' => $secs / 31556926 % 12, 'w' => $secs / 604800 % 52, 'd' => $secs / 86400 % 7, 'h' => $secs / 3600 % 24, 'm' => $secs / 60 % 60, 's' => $secs % 60 ); foreach($bit as $k => $v) if($v > 0) $ret[] = $v . $k ; else $ret[] = "" ; return join(" ", $ret); } //------------------------------------------------------------------------------------- $h=(int)date('G',time()); $m=date('i',time()); if (isWeekDay()) { } //------------------ Опрос всех датчиков температуры -------------------------------------------------- $nowtime = time(); // Текущее время $objects=getObjectsByClass("TempSensors"); // Выбираем все датчики температуры echo("<BR>----------------------------------"); echo("<BR> Датчики температуры"); echo("<BR>----------------------------------"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); $updated=$ob->getProperty("updated"); // Получаем время последнего успешного опроса $temp=$ob->getProperty("RequestPeriod"); // Получаем период опроса из свойств датчика if ( $temp == "" ) { // Если период не установлен принимаем за 10 мин $temp=10; } $interval= ($nowtime-$updated)/60; // вычисляем время прошедшее с последнего успешного опроса в минутах ( /60 ) echo("<br>".$ob->object_title." Elapsed time: ".$interval." => ".$temp); if ( $interval > $temp ){ echo(" отправка запроса..."); $ob->callmethod("TempRequest"); // Если время истекло, посылаем запрос на датчик } else { echo(" ждем ..."); } } //------------------------------------------------------------------------------- // Проверка доступности датчиков по времени последнего контакта Свойство LastConnect. $nowtime = time(); $devices=getObjectsByClass("RF_Device"); // перебираем все удаленные устройства //------------------------------------------------------------------------------------------------------------------------ echo("<BR>----------------------------------"); echo("<BR> Проверка доступности модулей"); echo("<BR>----------------------------------"); foreach($devices as $dev) { $device=getObject($dev['TITLE']); $updated=$device->getProperty("updated"); $AliveTimeOut=$device->getProperty("AliveTimeOut"); echo("<BR>Device: ".$dev['TITLE']." Time: ".date('Y-m-d h:s', $updated)); echo "time_elapsed: ".time_elapsed_A($nowtime-$updated)."\n"; //---------------------------------------------- if ($AliveTimeOut == "" ) { // если время допустимой неактивности не указано $AliveTimeOut=60*15 ; // 15 min // берем 15 минут } //---------------------------------------------- if ( $nowtime-$updated > $AliveTimeOut ){ // помечаем датчик активным/неактивным $device->setProperty("Active",0); // в зависимости от прошедшего времени с последнего отклика echo("NoActive 0"); //---------------------------------------------- // запрос имени класса объекта $SQL_R=SQLSelectOne("SELECT * FROM classes WHERE ID='".(int)$device->class_id."'"); $class=$SQL_R['TITLE']; //---------------------------------------------- echo("<br>->".$class."<-<br>"); if ($class=="MovementSensors") { // $device->callMethod("MovementOFF"); // Для датчика движения сбрасываем состояние в неактивное } //---------------------------------------------- } else { $device->setProperty("Active",1); echo("Active 1"); } //---------------------------------------------- } //------------------------------------------------------------------------------------------------------------------------ // Поддержание температурного режима. // Выбираем все комнаты и проверяем температуру в каждой echo("<BR>----------------------------------"); echo("<BR> Проверка комнат"); $objects=getObjectsByClass("Rooms"); foreach($objects as $obj) { $ob=getObject($obj['TITLE']); echo("<BR><BR>---- ".$obj['TITLE']." -------<BR>"); echo ("Терморегуляция "); if ( $ob->getProperty("AutoTemp")==1 ) { echo ("включена."); $T=$ob->getProperty("Temperature"); $ST=$ob->getProperty("SetTemperature"); if (($T=="") | ($ST=="")) { // continue; } echo("<BR>".$obj['TITLE']." t= ".$T.", Required : ".$ST." ."); if ( ($T) < ($ST-2) ) { // Если температура ниже заданной более чем на два градуса - ищем комнатный обогреватель и включаем его echo(" Room ".$ob->object_title." must be heated. "); $ob->callMethod("HeatersON"); } if ( ($T) > ($ST) ) { // Если температура выше заданной ищем комнатный обогреватель и вЫключаем его echo("Room ".$ob->object_title." must be cooled. "); $ob->callMethod("HeatersOFF"); } $ob->callMethod("CheckState"); // опрос состояния и систем комнаты } else { echo ("выключена.<br>"); } $ob->callMethod("CheckState"); // опрос состояния и систем комнаты } //--------------------------------------------------------------------------------------------------------- // Отработка режима энергосбережения $devices=getObjectsByClass("Rooms"); // перебираем объекты типа ROOM //------------------------------------------------------------------------------------------------------------------------ foreach($devices as $dev) { $device=getObject($dev['TITLE']); $updated=$device->getProperty("LatestActivity"); // вычисляем период времени до последней активности в комнате if ( ($device->getProperty("EconomMode")==1 ) & ( $nowtime-$updated > 15 ) ) { // > 15 минут и включен эконом режим // ищем связанный с комнатой выключатель света и гасим свет //$device-> callMethod(""); } } //--------------------------------------------------------------------------------------------------------- // Голосовые сообщения // if (($h>=8)) { // Объявление каждого нового часа if ($m=="00") { say(timeNow()); } } if (($h==9)) { // Утренне приветствие if ($m=="00") { runScript("morningGreeting"); } } if (($h==13)) { // обеденное приветствие if ($m=="00") { runScript("LunchTime"); } } if (($h==17)) { // Обявление об окончании рабочего дня if ($m=="25") { say(timeNow()); runScript("WorkTimeOut"); } } //--------------------------------------------------------------------------------------------------------------
Методы класса:
Объекты класса:
if ($params['serial']=='' && $params['devname']!='') { $params['serial']=$params['devname']; } $device=SQLSelectOne("SELECT * FROM usbdevices WHERE SERIAL LIKE '".$params['serial']."'"); if (!$device['ID']) { // new device connected //say("Подключено новое устройство",1); $device=array(); $device['SERIAL']=$params['serial']; $device['TITLE']='устройство '.$params['devname']; $device['FIRST_FOUND']=date('Y-m-d H:i:s'); $device['LAST_FOUND']=date('Y-m-d H:i:s'); $device['LOG'].=$device['FIRST_FOUND'].' подключено (впервые)'."\n"; $device['ID']=SQLInsert('usbdevices',$device); } else { // device already in our database //say("Подключено ".$device['TITLE'],1); if ($device['USER_ID']) { $user=SQLSelectOne("SELECT * FROM users WHERE ID='".$device['USER_ID']."'"); if ($user['ID']) { //$user['NAME']; // теперь мы знаем имя пользователя, связанного с этим устройством } } $device['LAST_FOUND']=date('Y-m-d H:i:s'); $device['LOG']=$device['LAST_FOUND'].' подключено'."\n".$device['LOG']; SQLUpdate('usbdevices',$device); if ($device['SCRIPT_ID']!='') { runScript($device['SCRIPT_ID'],$params); } elseif ($device['SCRIPT']!='') { eval($device['SCRIPT']); } }
Свойства класса:
Методы класса:
$this->setProperty("Start","0");
$this->setProperty("Start","1");
Объекты класса:
$w=round(strip_tags(gg("TempSensor2.Temp"))); //Переводим погоду в переменную if($w < "0"){ // Задаем условие - если погода минусовая то: $w=abs($w); // Выводим в плюс say(' На улице ' .$w.' градусов мороза' ); } else { say(' На улице ' .$w.' градусов тепла' ); }
Свойства класса:
Объекты класса:
, Ukraine
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving