Свойства класса:
Методы класса:
Объекты класса:
// это однократный будильник, выключем его sg("AlarmOne.AlarmOn",0); // все проснулись setGlobal("SleepAllMode.active",0); $add_word=getGlobal('AlarmOne.AlarmText'); if ($add_word<>"") {say($add_word,5); } if (gg("AlarmOne.AlarmSound")) { playSound('alarm_num7'); //playSound('alarm_num7'); }
if (isWeekEnd()){ // сегодня выходной день // все проснулись setGlobal("SleepAllMode.active",0); say('Пора вставать!'); // включим радио // callMethod("Radio.RadioPlay"); // запланируем выключить радио через 25 минут // SetTimeOut("AlarmWeekEnd_RadioStop",'callMethod("Radio.RadioStop");', 60*25); // запланируем напоминание о точном времени и доклад погоды // SetTimeOut("AlarmWeekEnd_timeNow1",'callMethod("сколько время.action");', 60*30); // SetTimeOut("AlarmWeekEnd_Pogoda", 'callMethod("погода на улице.action");', 60*35); // SetTimeOut("AlarmWeekEnd_timeNow2",'callMethod("сколько время.action");', 60*40); // SetTimeOut("AlarmWeekEnd_timeNow3",'callMethod("сколько время.action");', 60*50); // если на улице темно // if(timeBetween(gg("Yandex.SunSet"),gg("Yandex.SunRise"))){ // плавное включение Бра в спальне // runScript("nl_lowOn_SpalnyaBra"); // Запланируем выключить его через полчаса // SetTimeOut("AlarmWeekEnd_BraOff",'callMethod("NooLiteD_SpalnyBra.turnOff");', 30*60); // } } $add_word=getGlobal('AlarmOne.AlarmText'); if ($add_word<>"") {say($add_word,5); } if (gg("AlarmOne.AlarmSound")) { playSound('Куранты'); //playSound('alarm_num7'); }
if (isWeekDay()) { // сегодня рабочий день // все проснулись setGlobal("SleepAllMode.active",0); $add_word=getGlobal('AlarmWeekDay.AlarmText'); say(timeNow()); say($add_word); sleep(2); runScript("sayTodayAgenda"); }
Свойства класса:
Объекты класса:
Свойства класса:
Методы класса:
//$volume=round(65535*$params['VALUE']/100); //$this->setProperty('volumeLevel',$params['VALUE']); //safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); //say("Изменилась громкость до ".$params['VALUE']." процентов"); $t="sudo amixer cset numid=1 -- ".$this->GetProperty('volumeLevel')."%"; say("Изменилась громкость до ".$this->GetProperty('volumeLevel')." процентов"); exec($t);
Объекты класса:
$connection = ssh2_connect($this->GetProperty('IP_address'), 22); ssh2_auth_password($connection, $this->GetProperty('Ssh_login'), $this->GetProperty('Ssh_pass')); ssh2_exec($connection, 'shutdown -p now');
$status=$this->getProperty("status"); if ($status) { cm('FreeNas.WakedUp'); } else { cm('FreeNas.Shutdown'); }
$mac = $this->GetProperty('MacAddress'); magicPacket($mac); function magicPacket($mac,$addr='255.255.255.255',$socket_number=7) { //split up the mac address based upon the colons in the string $addr_byte = explode(':', $mac); $hw_addr = ''; for ($a=0; $a <6; $a++) $hw_addr .=chr(hexdec($addr_byte[$a])); //convert the hex to its decimal equivalent, encode as a character, and repeat 16 times $msg = str_repeat(chr(255),6); //FF in decimal is 255, which is then encoded as a char as with our mac address for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr; $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); //create our socket if ($s == false) { echo "Error creating socket!\n"; echo "Error code is '".socket_last_error($s)."'- " . socket_strerror(socket_last_error($s)); return false; } else { // setting a broadcast option to socket: //$opt_ret = socket_set_option($s, 1, 6, TRUE); $opt_ret = socket_set_option($s,SOL_SOCKET,SO_BROADCAST,true); if($opt_ret <0) { echo "setsockopt() failed, error: " . strerror($opt_ret) ."\n"; return false; } if(socket_sendto($s, $msg, strlen($msg), 0, $addr,$socket_number)) { socket_close($s); return true; } else { return false; } } }
$cmd = 'sudo reboot'; exec($cmd,$out);
$cmd = 'sudo sh /usr/sbin/full.backup.sh'; exec ($cmd,$out);
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); }
Свойства класса:
Методы класса:
/* $dhth1 = $this->getProperty('dhth1'); SG('HumSensor01.humidity', $dhth1); $dhtt1 = $this->getProperty('dhtt1'); SG('TempSensor01.Temperature', $dhtt1); */
Объекты класса:
Свойства класса:
Методы класса:
$this->setProperty('status',0);
$this->setProperty('status',1);
$url=('http://'.($this->getProperty("ip")).'/gpio?st='.($this->getProperty('status')).'&pin='.($this->getProperty('pin'))); $this->setProperty('url',$url); $status = ($this->getProperty('status')); if ($status) { //say('Включаю '.($this->getProperty("name")),gg('Sets.saylights')); }else{ //say('Выключаю '.($this->getProperty("name")),gg('Sets.saylights')); } $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $otvet = curl_exec($ch); //Проверка прохождения команды if (strcasecmp($otvet,'OK')){ //Команда не прошла, меняем статус на прошлый $statusold = ($this->getProperty('statusold')); $this->setProperty('chstatus',$statusold); say('Ошибка',gg('Sets.saylights')); }else //Команда прошла, запоминаем значение {$this->setProperty('statusold',($this->getProperty('status')));} $this->setProperty('updatedTimestamp',time() ); $this->setProperty('lastresult',$otvet);
Объекты класса:
Свойства класса:
Методы класса:
$url=('http://'.($this->getProperty("ip")).'/gpio?st='.($this->getProperty('ch1status')).'&pin='.($this->getProperty('ch1pin'))); $this->setProperty('url',$url); $status = ($this->getProperty('ch1status')); if ($status) { //say(($this->getProperty("name")).' включена',gg('Sets.saylights')); }else{ //say(($this->getProperty("name")).' выключена',gg('Sets.saylights')); } $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $otvet = curl_exec($ch); //Проверка прохождения команды if (strcasecmp($otvet,'OK')){ //Команда не прошла, меняем статус на прошлый $ch1statusold = ($this->getProperty('ch1statusold')); $this->setProperty('ch1status',$ch1statusold); say('Ошибка',gg('Sets.saylights')); }else //Команда прошла, запоминаем значение {$this->setProperty('ch1statusold',($this->getProperty('ch1status')));} $this->setProperty('updatedTimestamp',time() ); $this->setProperty('lastresult',$otvet);
Объекты класса:
Методы класса:
Объекты класса:
/*$IP_addres=$this->getProperty("IP_addres"); $cmd=$this->getProperty("cmdon"); $bits=$this->getProperty("bits"); $per=$this->getProperty("per"); */ $url = "http://10.168.113.201/irremote?cmd=123456789"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //$this->setProperty('status',1); //$otvet = curl_exec($ch);
Свойства класса:
Методы класса:
$status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOn'); } else { $this->callMethod('turnOff'); }
$IP_addres=$this->getProperty("IP_addres"); $cmd=$this->getProperty("cmdon"); $bits=$this->getProperty("bits"); $per=$this->getProperty("per"); $url = "http://".$IP_addres."/rcremote?cmd=".$cmd."&bits=".$bits."&per=".$per; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $otvet = curl_exec($ch); $this->setProperty('status',1);
$IP_addres=$this->getProperty("IP_addres"); $cmd=$this->getProperty("cmdoff"); $bits=$this->getProperty("bits"); $per=$this->getProperty("per"); $url = "http://".$IP_addres."/rcremote?cmd=".$cmd."&bits=".$bits."&per=".$per; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $otvet = curl_exec($ch); $this->setProperty('status',0);
Объекты класса:
Свойства класса:
Методы класса:
//$params["USER_OBJECT"]
//$params["USER_OBJECT"]
Свойства класса:
Методы класса:
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'); // запускаем скрипт "доброе утро" } }
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
$sayMetUSD = gg ("Sets.sayMetUSD"); if ($sayMetUSD) { say ("Читаю курсы валюты с ЦБ РФ",($sayMetUSD-2)); } $file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y")); if (!$file){ DebMes("CBR error"); return; } // USD $xml = $file->xpath("//Valute[@ID='R01235']"); $valute = strval($xml[0]->Value); $this->setProperty('USD', round(str_replace(",",".",$valute)*100)/100); // EURO $xml = $file->xpath("//Valute[@ID='R01239']"); $valute = strval($xml[0]->Value); $this->setProperty('EURO', round(str_replace(",",".",$valute)*100)/100); // CZK (10 крон превращаем в 1 крону) //$xml = $file->xpath("//Valute[@ID='R01760']"); //$valute = strval($xml[0]->Value); //$this->setProperty('CZK', round(str_replace(",",".",$valute)*10)/100); // GBR $xml = $file->xpath("//Valute[@ID='R01035']"); $valute = strval($xml[0]->Value); $this->setProperty('GBR', round(str_replace(",",".",$valute)*100)/100); $this->setProperty("uptime",date("d.m.Y - H:i:s",time())); $this->setProperty("updatedTimestamp",time());
Свойства класса:
Методы класса:
$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')." активирован.", Sets.sayModes) ; } else { say("Режим ".$this->getProperty('title')." выключен.", Sets.sayModes) ; }
Объекты класса:
setGlobal('minMsgLevel','0'); $this->setProperty("active",0); /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nightmode_deactivate.php'); /* end injection of {SDevices} */
setGlobal('minMsgLevel','2'); $this->setProperty("active",1); /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nightmode_activate.php'); /* end injection of {SDevices} */
$this->setProperty("active",1);
$this->setProperty("active",0);
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nobodyhomemode_activate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/nobodyhomemode_deactivate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/econommode_activate.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/econommode_deactivate.php'); /* end injection of {SDevices} */
Свойства класса:
Объекты класса:
include_once(DIR_MODULES.'app_radio/app_radio.class.php'); $app_radio=new app_radio(); if(is_array($params)) { if(isset($params['sta'])) $app_radio->change_station($params['sta'],$app_radio); if(isset($params['cmd'])) $app_radio->control($params['cmd']); if(isset($params['vol'])) $app_radio->set_volume($params['vol'],$app_radio); } else { if($params=='play' || $params=='stop') $app_radio->control($params); else if(strpos($params, "vol")===0) $app_radio->set_volume((int)substr($params,3),$app_radio); else if(strpos($params, "sta:")===0) $app_radio->change_station(substr($params,4),$app_radio); }
Свойства класса:
Методы класса:
$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);
Объекты класса:
Свойства класса:
Методы класса:
$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); }
$this->setProperty("status",1); $this->callMethod("sendCommand",array('command'=>'-on_ch'.$this->getProperty("channel")));
$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")));
Свойства класса:
Методы класса:
$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);
Свойства класса:
Методы класса:
// получить температуру $x = $this->getProperty('Temperature'); // не больше и не меньше if ($x<12) {$x=12;} elseif ($x>30) {$x=30;} // расчет величины цветовой шкалы $x = round( ($x-12)*42,5 ); $hcolor = '#'; // расчет r $y = $x-255; if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;} $y = dechex($y); if (strlen($y) == 1) {$y = '0'.$y;} $hcolor = $hcolor.$y; // расчет g $y = 255-$x; if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;} $y = dechex($y); if (strlen($y) == 1) {$y = '0'.$y;} $hcolor = $hcolor.$y; // расчет b $y = 765-$x; if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;} $y = dechex($y); if (strlen($y) == 1) {$y = '0'.$y;} $hcolor = $hcolor.$y; // установить свойство цвета температуры $this->setProperty('TempHEX', $hcolor); $this->setProperty('TempRound',round ($this->getProperty('Temperature')));
$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"; /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/Rooms_updateActivityStatus.php'); /* end injection of {SDevices} */
$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"); /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/Rooms_onActivity.php'); /* end injection of {SDevices} */
$this->setProperty('SomebodyHere',0);
Объекты класса:
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SDevices_statusUpdated.php');
require(DIR_MODULES.'devices/SDevices_logicAction.php');
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SDevices_setUpdatedText.php'); /* end injection of {SDevices} */
Методы класса:
require(DIR_MODULES.'devices/SButtons_pressed.php');
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SCameras_motionDetected.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SCameras_updatePreview.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SCameras_takeSnapshot.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SControllers_turnOn.php');
require(DIR_MODULES.'devices/SControllers_turnOff.php');
require(DIR_MODULES.'devices/SControllers_switch.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SDimmers_levelUpdated.php');
require(DIR_MODULES.'devices/SDimmers_turnOn.php');
require(DIR_MODULES.'devices/SDimmers_turnOff.php');
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_colorUpdated.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_setColor.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_turnOn.php'); /* end injection of {SDevices} */
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SRGB_turnOff.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SCounters_valueUpdated.php'); /* end injection of {SDevices} */
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SLeak_statusUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SOpenClose_statusUpdated.php');
Свойства класса:
Методы класса:
require(DIR_MODULES.'devices/SSensors_valueUpdated.php');
Свойства класса:
Методы класса:
/* begin injection of {SDevices} */ require(DIR_MODULES.'devices/SSmoke_statusUpdated.php'); /* end injection of {SDevices} */
Свойства класса:
Методы класса:
/*$params['t'] $params['PROPERTY'] -- текстовое имя изменяемого свойства $params['NEW_VALUE'] -- присваиваемое значение $params['OLD_VALUE'] -- предыдущее значение */ $old_value=$params['OLD_VALUE']; $new_value=round($params['NEW_VALUE'],1); $property=$params['PROPERTY']; $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($new_value)) { return; } if ($new_value>110) return; //$this->setProperty($property,$new_value); if ($new_value>$old_value) { $d=1; } elseif ($new_value<$old_value) { $d=-1; } else { $d=0; } $this->setProperty('direction',$d); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.'.$property,$new_value); }
Объекты класса:
Свойства класса:
Методы класса:
/*$params['t'] $params['PROPERTY'] -- текстовое имя изменяемого свойства $params['NEW_VALUE'] -- присваиваемое значение $params['OLD_VALUE'] -- предыдущее значение */ $old_value=$params['OLD_VALUE']; $new_value=round($params['NEW_VALUE'],1); $property=$params['PROPERTY']; $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($new_value)) { return; } if ($new_value>110) return; //$this->setProperty($property,$new_value); if ($new_value>$old_value) { $d=1; } elseif ($new_value<$old_value) { $d=-1; } else { $d=0; } $this->setProperty('direction',$d); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.'.$property,$new_value); } /*$params['t'] $params['PROPERTY'] -- текстовое имя изменяемого свойства $params['NEW_VALUE'] -- присваиваемое значение $params['OLD_VALUE'] -- предыдущее значение $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); say('PROPERTY - '.$params['PROPERTY'],1); say('NEW_VALUE - '.$params['NEW_VALUE'],1); say('OLD_VALUE - '.$params['OLD_VALUE'],1); if (!isset($params['NEW_VALUE'])) { return; } $old_temp=$params['OLD_VALUE']; $t=round($params['NEW_VALUE'],1); if ($t>110) return; $this->setProperty('temp',$t); if ($params['uptime']) { $this->setProperty('uptime',$params['uptime']); } if ($t>$old_temp) { $d=1; } elseif ($t<$old_temp) { $d=-1; } else { $d=0; } $this->setProperty('direction',$d); $linked_room=$this->getProperty("LinkedRoom"); if ($linked_room) { setGlobal($linked_room.'.Temperature',$t); } say($linked_room.'.Temperature -'.$t,1);*/
Объекты класса:
Свойства класса:
Объекты класса:
Методы класса:
Объекты класса:
echo "status received: ".$params['status'];
global $voicemode; $voicemode='off'; processCommand($params['message']);
Свойства класса:
Методы класса:
Объекты класса:
$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'); 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'); } /* begin injection of {SDevices} */ require(DIR_MODULES.'devices/system_checkstate.php'); /* end injection of {SDevices} */
$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; 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'); }
Свойства класса:
Методы класса:
Объекты класса:
// раскидываем дату и время если изменилось в Windows $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") ]); } // runScript("TimeNow"); // runScript("Anekdot"); // runScript("bashorg"); // дни рождения, проверять при условии разрешения в установках и в 9-00 if ((gg("Sets.checkBirthday")) && ($h == "09")) { runScript("birthday"); } /*if ($h == "06") { sg("RemoteSocet_3.status", 1); } if ($h == "19") { sg("RemoteSocet_3.status", 0); } */ // расскажем текущую погоду //runScript("SayCurrentWeather"); if (isOnline("Internet")) { // обновим курс валюты каждые 4 часа if (!($h % 4)) { callMethod("cbr.update"); } } else { //say("Проверить погоду и курсы валют пока не могу, так как нет доступа в интернет. Попробую сделать это через один час. ", 0); }
$h=(int)date('G',time()); $m=date('i',time()); setGlobal('testOnNewMinute.value', 'START'); //Записываем текущее время sg("ThisComputer.timeNow",date( "H:i", time())); // получим ЧАСЫ и МИНУТЫ отдельно $timeH=date("H", time()); $timeM=date("i", time()); sg("ThisComputer.timeH",$timeH); sg("ThisComputer.timeM",$timeM); // выделяем десятки и единицы часов и минут, если изменились, то присваиваем if (gg("ThisComputer.timeH1")!=$timeH[0]) {sg("ThisComputer.timeH1",$timeH[0]);} if (gg("ThisComputer.timeH2")!=$timeH[1]) {sg("ThisComputer.timeH2",$timeH[1]);} if (gg("ThisComputer.timeM1")!=$timeM[0]) {sg("ThisComputer.timeM1",$timeM[0]);} if (gg("ThisComputer.timeM2")!=$timeM[1]) {sg("ThisComputer.timeM2",$timeM[1]);} // готовим минимальный уровень проговаривания в соответствии с настройками для проговаривания времени $saytime = gg('Sets.saytime'); // сообщение о восходе и закате и установка режима темного времени суток if (timeIs(gg("City.SunRise"))) { if ($saytime) { say ("Восход солнца.",($saytime-2)); } callMethod('DarknessMode.deactivate'); } if (timeIs(gg("City.SunSet"))) { if ($saytime) { say ("Солнце уже заходит.",($saytime-2)); } callMethod('DarknessMode.activate'); } // установка ночного режима if (timeIs("23:30")) { callMethod("NightMode.activate"); } else if (timeIs("06:00")) { callMethod("NightMode.deactivate"); } // произносить или писать время каждый час, если НЕ ночной режим if ((!(gg("NightMode.active")))&&($m=="00")) { if ($saytime) { say((timeNow()." ровно"),($saytime-2)); } } // Флуктуации каждую минуту 1 - 0 - 1 - 0 ... if (gg("ThisComputer.fluctuations")) { sg("ThisComputer.fluctuations",0); } else { sg("ThisComputer.fluctuations",1); } // для разных задумок в дальнейшем, а также для тестирования может пригодиться if (gg("ThisComputer.fluctuations")) { sg("ThisComputer.StreamingCode1","."); } else { sg("ThisComputer.StreamingCode1",gg("ThisComputer.StreamingCode0")); } // переберем пользователей для проверки включенно ли слежение GPS $objects=getObjectsByClass("Users"); foreach($objects as $obj) { $user=$obj['TITLE']; // Если нужно следить за User через GPS по iCloud if (gg($user.'.monitor')) { $AppleDevNum=(gg($user.'.AppleDevNum')=='') ? 0 : gg($user.'.AppleDevNum'); switch (gg($user.'.atHome')) { case 0: // если не дома то через X минут if (!($m%2)) { findMyiPhone(gg($user.'.AppleID'), dsCrypt(gg($user.'.ApplePass'),true)); } break; case 1: // если дома то через Y минут if (!($m%3)) { findMyiPhone(gg($user.'.AppleID'), dsCrypt(gg($user.'.ApplePass'),true)); } break; } } } //будильники $objects=getObjectsByClass("AlarmClock"); foreach($objects as $obj) { // переберем все будильники в системе if (gg($obj['TITLE'].".AlarmOn") && timeIs(gg($obj['TITLE'].".AlarmTime"))) { //если будильник включен и время совпало callMethod($obj['TITLE'].".AlarmRun"); // выполним метод будильника } } // обновляем данные о компе runScript("SysInfo"); //callMethod("nowGlobal.set"); //runScript("timer_1s"); //runScript("timer_2s"); // читать новости if ((!(gg("NightMode.active")))&&($m=="10")) { //runScript("Read5News"); } //часы //бой часов разрешен if (gg('Sets.clockChimeEnabled')==1) { // куранты if (gg('Sets.clockChimeType')==1) { if ($m=="00") { //say(timeNow(),1); $hh=$h; if ($hh>12) {$hh=$hh-12;} if ($hh==0) {$hh=12;} playSound($hh.'h'); } //четверти if ($m=='15') {playSound('15min');} if ($m=='30') {playSound('30min');} if ($m=='45') {playSound('45min');} } //кукушка elseif (gg('Sets.clockChimeType')==2) {} //склянки else {} } // обновим прогноз погоды if ($m=='25' or $m=='55') { callMethod("City.forecast"); } setGlobal('testOnNewMinute.value', 'OK'); if (isOnline("Internet")) { sg('ThisComputer.Internet',1); } else { sg('ThisComputer.Internet',0); }
Свойства класса:
Методы класса:
// МЕТОД 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']); } }
Свойства класса:
Методы класса:
$to = $this->getProperty('EMail'); $from = gg('ThisComputer.Email'); $headers = "Content-type: text/plain; charset=utf-8 \r\n"; $headers .= "From: Алиса <$from>\r\n"; $subject = "Алиса пишет"; $message =$this->getProperty('EMailMessage'); $message.=" Алиса."; mail($to, $subject, $message, $headers);
if (getGlobal('DebugMode'.'.'.'active') == 1) { say('classes Users SmsSend'); } $this->setProperty("SMSSum",0);
$SMSMax=$this->getProperty("SMSMax"); $SMSsend=$this->getProperty("SMSsend"); $Name=$this->getProperty("fullName"); $apiid = $this->getProperty("SmsRuId"); $message = $this->getProperty("SMSMessage"); $text = mb_convert_encoding($message, 'utf-8', mb_detect_encoding($message)); if ($SMSMax == "") { $this->setProperty("SMSMax",10); } if ($SMSsend == "") { $this->setProperty("SMSsend",0); } if ($SMSsend == 0) { $SMSsend = 1; $this->setProperty("SMSsend",$SMSsend); }else{ $SMSsend = $SMSsend+1; $this->setProperty("SMSsend",$SMSsend); } if ($SMSsend <= $SMSMax) { if ($apiid != ""){ say('Пытаюсь отправить сообщение пользователю '.$Name, 0); $url='http://sms.ru/sms/send?api_id='.$apiid.'&to='.$this->getProperty("MobileTel").'&text='.$text; $OK = getURL($url,0); //say($url); //say($OK); } }else{ if ($apiid != ""){ say('Пользователю '.$Name.' уже было отправлено '.$SMSMax.' сообщений.' , 5); } }
//$params["LOCATION_OBJECT"], $params["LOCATION"]
//$params["LOCATION_OBJECT"], $params["LOCATION"]
Объекты класса:
Свойства класса:
Методы класса:
Объекты класса:
// <?php $data_file = 'http://api.wunderground.com/api/' . gg("City.KeyAPI") . '/forecast10day/astronomy/conditions/hourly/lang:RU/q/' . gg("City.Position") . '.xml'; $xml = simplexml_load_file($data_file); // раскладываем xml на массив if ($xml === false) { return; } // Обновляем показатели жизни объекта sg("City.updatedTimestamp", time()); sg("City.updatedTime", date("H:i - d.m.Y", time())); // актуальность sg("City.alive", 1); $alive_timeout = gg("City.aliveTimeOut"); clearTimeOut("City_alive"); setTimeOut("City_alive","sg('City.alive',0);",$alive_timeout); sg("City.name", $xml->current_observation->display_location->city); sg("City.XMLuptime", $xml->current_observation->local_epoch); // температура вчера в это же время // Запишем температуру вчерашнего дня для этого часа $tempYesterday = getHistoryValue("City.Temp", time()-24*60*60,true); sg("City.TempYesterday",getTempSign($tempYesterday)); $temp = $xml->current_observation->temp_c; if (date('G') == 13) { sg("City.Temp13h", $temp); } if (date('G') == 21) { sg("City.Temp21h", $temp); } $temp = getTempSign($temp); // Если значение температуры положительно, для наглядности добавляем "+" // сохраняем основные параметры текущей погоды sg("City.Temp", $temp); sg("ThisComputer.TempOutside", $temp); sg("City.Type", strtolower_utf8($xml->current_observation->weather)); sg("City.Pressure", intval($xml->current_observation->pressure_mb * 0.7500637554192)); sg("City.Humidity", str_replace('%', '', $xml->current_observation->relative_humidity)); sg("City.WindSpeed", intval($xml->current_observation->wind_kph / 3.6)); // Направление ветра $dir = $xml->current_observation->wind_dir; list($dir, $dirtext, $dirtextcut) = getWindDirection($dir); sg("City.WindDir", $dir); sg("City.WindDirText", $dirtextcut); sg("City.WindSpeed", intval($xml->current_observation->wind_kph / 3.6)); sg("City.Image", icon_url($xml->current_observation->icon,$xml->current_observation->icon_url)); sg("City.Visibility", $xml->current_observation->visibility_km); sg("City.Pressure_trend", $xml->current_observation->pressure_trend); sg("City.UV", $xml->current_observation->UV); sg("City.Precip", $xml->current_observation->precip_today_metric); /* // прогноз на 3 дня $w3days="Сегодня ночью будет "; $temp=$xml->day[0]->day_part[3]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.="°, "; $w3days.=$xml->day[0]->day_part[3]->weather_type; $w3days.=".\r\nЗавтра днём будет "; $temp=$xml->day[1]->day_part[1]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.="°, "; $w3days.=$xml->day[1]->day_part[1]->weather_type; $w3days.=". Послезавтра днём будет "; $temp=$xml->day[2]->day_part[1]->temperature_from; if ($temp>0) {$temp='+'.$temp;} $w3days.=$temp; $w3days.="°, "; $w3days.=$xml->day[2]->day_part[3]->weather_type; $w3days.="."; sg("City.forecast",$w3days); // Определяем время года $season = $xml->fact->season; switch ($season){ case 'winter': $season="зима"; break; case 'summer': $season="лето"; break; case 'autumn': $season="осень"; break; case 'spring': $season="весна"; break; } sg("City.season",$season); //время года */ // Запишем почасовой прогноз погоды на 36 часов // ограничимся периодами через 6 часов $hour_0 = $xml->hourly_forecast->forecast[0]->FCTTIME->hour; $hour_array = array( 1 => time_format($hour_0 + 6) , 2 => time_format($hour_0 + 12) , 3 => time_format($hour_0 + 18) ); $nHour = 1; foreach($xml->hourly_forecast->forecast as $hour) { $hour_current = $hour->{'FCTTIME'}->{'hour'}; if (in_array($hour_current, $hour_array) and ($nHour < 4)) { // записываем дeнь sg("City.mcH" . $nHour . "_Hour", $hour->{'FCTTIME'}->{'hour_padded'}); sg("City.mcH" . $nHour . "_Day", $hour->{'FCTTIME'}->{'mday_padded'}); sg("City.mcH" . $nHour . "_Month", $hour->{'FCTTIME'}->{'mon_padded'}); sg("City.mcH" . $nHour . "_Year", $hour->{'FCTTIME'}->{'year'}); sg("City.mcH" . $nHour . "_Monthname", strtolower_utf8($hour->{'FCTTIME'}->{'month_name'})); sg("City.mcH" . $nHour . "_Weekday", strtolower_utf8($hour->{'FCTTIME'}->{'weekday_name'})); sg("City.mcH" . $nHour . "_Weekday_Night", strtolower_utf8($hour->{'FCTTIME'}->{'weekday_name_night'})); sg("City.mcH" . $nHour . "_Weekday_Abbrev", strtolower_utf8($hour->{'FCTTIME'}->{'weekday_name_abbrev'})); // температура sg("City.mcH" . $nHour . "_Temp", getTempSign($hour->{'temp'}->{'metric'})); // облачность sg("City.mcH" . $nHour . "_Type", strtolower_utf8($hour->{'condition'})); sg("City.mcH" . $nHour . "_Sky", strtolower_utf8($hour->{'sky'})); // картинка sg("City.mcH" . $nHour . "_Image", icon_url($hour->{'icon'},$hour->{'icon_url'})); // ветер sg("City.mcH" . $nHour . "_WindDir", strtolower_utf8($hour->{'wdir'}->{'dir'})); sg("City.mcH" . $nHour . "_WindDegrees", $hour->{'wdir'}->{'degrees'}); sg("City.mcH" . $nHour . "_WindSpeed", intval($hour->{'wspd'}->{'metric'} / 3.6)); // влажность sg("City.mcH" . $nHour . "_Humidity", $hour->{'humidity'}); // UV индекс sg("City.mcH" . $nHour . "_UV", $hour->{'uvi'}); // осадки // вероятность Probability Of Precipitation sg("City.mcH" . $nHour . "_Pop", nul($hour->{'pop'})); // дождь sg("City.mcH" . $nHour . "_Rain", nul($hour->{'qpf'}->{'metric'})); // снег sg("City.mcH" . $nHour . "_Snow", nul($hour->{'snow'}->{'metric'})); // атмосферное давление sg("City.mcH" . $nHour . "_Pressure", intval($hour->{'mslp'}->{metric} * 0.7500637554192)); if ($hour_current < 3) { // ночь sg("City.mcH" . $nHour . "_Period", "ночь"); } elseif ($hour_current < 9) { // утро sg("City.mcH" . $nHour . "_Period", "утро"); } elseif ($hour_current < 15) { // день sg("City.mcH" . $nHour . "_Period", "день"); } elseif ($hour_current < 21) { // вечер sg("City.mcH" . $nHour . "_Period", "вечер"); } else { // ночь sg("City.mcH" . $nHour . "_Period", "ночь"); } //say($nHour.'-'.$hour_array[1].'-'.$hour_array[2].'-'.$hour_array[3].'-'. $hour_current.'-'.gg("City.mcH".$nHour."_Period")); $nHour++; } } // Запишем прогноз погоды на 10 дней $nDay = 0; foreach($xml->forecast->simpleforecast->forecastdays->forecastday as $day) { // записываем дeнь sg("City.mcD" . $nDay . "_Weekday_Short", strtolower_utf8($day->{'date'}->{'weekday_short'})); sg("City.mcD" . $nDay . "_Weekday", strtolower_utf8($day->{'date'}->{'weekday'})); sg("City.mcD" . $nDay . "_Monthname", strtolower_utf8($day->{'date'}->{'monthname'})); sg("City.mcD" . $nDay . "_Day", plus_null_left($day->{'date'}->{'day'})); sg("City.mcD" . $nDay . "_Month", plus_null_left($day->{'date'}->{'month'})); sg("City.mcD" . $nDay . "_Year", $day->{'date'}->{'year'}); sg("City.mcD" . $nDay . "_YDay", $day->{'date'}->{'yday'}); // температура sg("City.mcD" . $nDay . "_Temp_High", getTempSign($day->{'high'}->{'celsius'})); sg("City.mcD" . $nDay . "_Temp_Low", getTempSign($day->{'low'}->{'celsius'})); // картинка sg("City.mcD" . $nDay . "_Image", icon_url($day->{'icon'},$day->{'icon_url'})); // sg("City.mcD" . $nDay . "_Image_Sky", icon_url($day->{'skyicon'},$day->{'icon_url'})); // облачность sg("City.mcD" . $nDay . "_Type", strtolower_utf8($day->{'conditions'})); // ветер $dir = $day->{'maxwind'}->{'dir'}; list($dir, $dirtext, $dirtextcut) = getWindDirection($dir); sg("City.mcD" . $nDay . "_WindDir_Max", $dirtextcut); sg("City.mcD" . $nDay . "_WindDegrees_Max", $day->{'maxwind'}->{'degrees'}); sg("City.mcD" . $nDay . "_WindSpeed_Max", intval($day->{'maxwind'}->{'kph'} / 3.6)); $dir = $day->{'avewind'}->{'dir'}; list($dir, $dirtext, $dirtextcut) = getWindDirection($dir); sg("City.mcD" . $nDay . "_WindDir_Average", $dirtextcut); sg("City.mcD" . $nDay . "_WindDegrees_Average", $day->{'avewind'}->{'degrees'}); sg("City.mcD" . $nDay . "_WindSpeed_Average", intval($day->{'avewind'}->{'kph'} / 3.6)); // влажность sg("City.mcD" . $nDay . "_Humidity_Average", nul($day->{'avehumidity'})); sg("City.mcD" . $nDay . "_Humidity_Min", nul($day->{'minhumidity'})); sg("City.mcD" . $nDay . "_Humidity_Max", nul($day->{'maxhumidity'})); // осадки // вероятность Probability Of Precipitation sg("City.mcD" . $nDay . "_Pop", nul($day->{'pop'})); // дождь sg("City.mcD" . $nDay . "_Rain_AllDay", nul($day->{'qpf_allday'}->{'mm'})); sg("City.mcD" . $nDay . "_Rain_Day", nul($day->{'qpf_day'}->{'mm'})); sg("City.mcD" . $nDay . "_Rain_Night", nul($day->{'qpf_night'}->{'mm'})); // снег sg("City.mcD" . $nDay . "_Snow_AllDay", nul($day->{'snow_allday'}->{'sm'})); sg("City.mcD" . $nDay . "_Snow_Day", nul($day->{'snow_day'}->{'sm'})); sg("City.mcD" . $nDay . "_Snow_Night", nul($day->{'snow_night'}->{'sm'})); // атмосферное давление sg("City." . $nDay . "Pressure", intval($day->{pressure_mb} * 0.7500637554192)); $weekday = GetWeekDay(gg("City.mcD" . $nDay . "_Weekday")); $text = 'В '.$weekday.' ожидается '.gg("City.mcD" . $nDay . "_Type").'. '; $pop = gg("City.mcD" . $nDay . "_Pop"); $text .= $pop==0 ? 'Без осадков. ':'Вероятность осадков - '.$pop.'%. '; $text .= 'Температура ночью '.gg("City.mcD" . $nDay . "_Temp_Low").', днем '.gg("City.mcD" . $nDay . "_Temp_High"). tempcels(gg("City.mcD" . $nDay . "_Temp_High")).'. '; $text .= 'Ветер '.gg("City.mcD" . $nDay . "_WindDir_Average").' '.gg("City.mcD" . $nDay . "_WindSpeed_Average").' - '.gg("City.mcD" . $nDay . "_WindSpeed_Max").' м/с. '; $text .= 'Влажность воздуха '.gg("City.mcD" . $nDay . "_Humidity_Average").'%.'; sg("City.mcD" . $nDay . "_Text", $text); $nDay++; } // фаза луны восходы и закаты $percentIlluminated = $xml->moon_phase->percentIlluminated; $ageOfMoon = $xml->moon_phase->ageOfMoon; sg("City.MoonPhase", getMoonphase($percentIlluminated, $ageOfMoon)); sg("City.MoonSet", get_time($xml->moon_phase->moonset)); sg("City.MoonRise", get_time($xml->moon_phase->moonrise)); sg("City.SunSet", get_time($xml->sun_phase->sunset)); sg("City.SunRise", get_time($xml->sun_phase->sunrise)); // длинный текстовый прогноз погоды $metcast = "На улице " . gg("City.Type") . "."; // ветер $WindSpeed = (float)gg("City.WindSpeed"); $WindDirText = gg("City.WindDirText"); if ($WindSpeed == 0) { $metcast.= ' Безветренно.'; } elseif ($WindSpeed < 2) { $metcast.= ' Возможен тихий '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 3) { $metcast.= ' Возможен легкий '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 5) { $metcast.= ' Возможен слабый '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 8) { $metcast.= ' Умеренный '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 11) { $metcast.= ' Свежий '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 14) { $metcast.= ' Сильный '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 17) { $metcast.= ' Крепкий '.$WindDirText.' ветер.'; } elseif ($WindSpeed < 20) { $metcast.= ' Очень крепкий '.$WindDirText.' ветер. Без нужды из дома лучше не выходить.'; } elseif ($WindSpeed < 25) { $metcast.= ' На улице шторм. Выходить из дома не рекомендуется.'; } else { $metcast.= ' На улице ураган. Выходить из дома не рекомендуется.'; } $w = round(strip_tags(gg("City.Temp"))); $tempw = $w; if ($w < "0") { $tempw = abs($w); } if ($w > "0") { $templus = " плюс "; } if ($tempw >= 11 and $tempw <= 14) { $tempcels = " градусов"; } else { while ($tempw > 9) { $tempw = $tempw - 10; } if ($tempw == 0 or $tempw >= 5 and $tempw <= 9) { $tempcels = " градусов"; } if ($tempw == 1) { $tempcels = " градус"; } if ($tempw >= 2 and $tempw <= 4) { $tempcels = " градуса"; } } $metcast.= ' Температура ' . gg("City.Temp") . ' ' . $tempcels . '. '; $tm = (float)gg("City.Temp"); // Сравнение со вчерашним днем $tmY = round((float)getGlobal('City.tempYesterday')); $tDelta = abs($tm - $tmY); if ($tDelta==1){ $tGradus = 'градус'; }elseif($tDelta==2 || $tDelta==3 || $tDelta==4){ $tGradus = 'градуса'; }else{ $tGradus = 'градусов'; } if ($tm>$tmY){ $metcast.="Сегодня теплее, чем вчера на ".$tDelta." ".$tGradus."."; }elseif($tm<$tmY){ $metcast.="Сегодня холоднее, чем вчера на ".$tDelta." ".$tGradus."."; }elseif($tm==$tmY){ $metcast.="Температура сегодня такая же как вчера."; } if ($tm < - 40) { $metcast.= ' Мы морозов не боимся!'; } elseif ($tm < - 30) { $metcast.= ' Очень холодно, оденьтесь теплее.'; } elseif ($tm < - 20) { $metcast.= ' Самое время есть мороженое.'; } elseif ($tm < - 10) { $metcast.= ' Холодновато.'; } elseif ($tm < - 3) { $metcast.= ' Не особо холодно.'; } elseif ($tm < 3) { $metcast.= ' Значит, возможно, гололёд.'; } elseif ($tm < 10) { $metcast.= ' Тепловато.'; } elseif ($tm < 25) { $metcast.= ' Тепло.'; } elseif ($tm < 30) { $metcast.= ' Жарко.'; } elseif ($tm > 30) { $metcast.= ' Ташкент.'; } $pressure=(float)gg("City.Pressure"); if ($pressure<738) { $metcast.=' Атмосферное давление ниже нормы.'; } elseif ($pressure>768) { $metcast.=' Атмосферное давление выше нормы.'; } else { $metcast.=' Атмосферное давление в норме.'; } //$metcast.= ' Восход солнца сегодня в ' . gg("City.SunRise") . ','; //$metcast.= ' закат в ' . gg("City.SunSet") . '.'; sg("City.conditions", $metcast); // ******************************************************** // КОНЕЦ ОСНОВНОГО БЛОКА // Функция - получить фазу луны function getMoonphase($percent, $age) { if ($age < 14) { if ($percent < 5) { $phase = "новолуние"; } elseif ($percent < 45) { $phase = "растущий серп"; } elseif ($percent < 55) { $phase = "первая четверть"; } elseif ($percent < 95) { $phase = "растущий месяц"; } else { $phase = "полнолуние"; } } else { if ($percent > 95) { $phase = "полнолуние"; } elseif ($percent > 55) { $phase = "убывающая луна"; } elseif ($percent > 45) { $phase = "последняя четверть"; } elseif ($percent > 5) { $phase = "убывающий месяц"; } else { $phase = "новолуние"; } } return $phase; } function get_time($event) { $time = ""; $H = str_pad($event->hour, 2, '0', STR_PAD_LEFT); $M = str_pad($event->minute, 2, '0', STR_PAD_LEFT); $time = $H . ":" . $M; return $time; } // <?php // Функция - получить направления ветра в МАССИВ function getWindDirection($wind) { $wind = (string)$wind; $wind_direction = array( 'East' => '← в', 'ENE' => '↙ всв', 'ESE' => '↖ вюв', 'NE' => '↙ св', 'NNE' => '↙ ссв', 'NNW' => '↘ ссз', 'North' => '↓ с', 'NW' => '↘ сз', 'SE' => '↖ юв', 'South' => '↑ ю', 'SSE' => '↖ ююв', 'SSW' => '↗ ююз', 'SW' => '↗ юз', 'Variable' => 'переменный', 'West' => '→ з', 'WNW' => '↘ зсз', 'WSW' => '↗ зюз', 'В' => '← в', 'ВСВ' => '↙ всв', 'ВЮВ' => '↖ вюв', 'СВ' => '↙ св', 'ССВ' => '↙ ссв', 'ССЗ' => '↘ ссз', 'С' => '↓ с', 'СЗ' => '↘ сз', 'ЮВ' => '↖ юв', 'Ю' => '↑ ю', 'ЮЮВ' => '↖ ююв', 'ЮЮЗ' => '↗ ююз', 'ЮЗ' => '↗ юз', '' => 'переменный', 'З' => '→ з', 'ЗСЗ' => '↘ зсз', 'ЗЮЗ' => '↗ зюз' ); $wind_dirtxt = array( 'East' => 'восточный', 'ENE' => 'восточно-северо-восточный', 'ESE' => 'восточно-юго-восточный', 'NE' => 'северо-восточный', 'NNE' => 'северо-северо-восточный', 'NNW' => 'северо-северо-западный', 'North' => 'северный', 'NW' => 'северо-западный', 'SE' => 'юго-восточный', 'South' => 'южный', 'SSE' => 'юго-юго-восточный', 'SSW' => 'юго-юго-западный', 'SW' => 'юго-западный', 'Variable' => 'переменный', 'West' => 'западный', 'WNW' => 'западно-северо-западный', 'WSW' => 'западно-юго-западный', 'В' => 'восточный', 'ВСВ' => 'восточно-северо-восточный', 'ВЮВ' => 'восточно-юго-восточный', 'СВ' => 'северо-восточный', 'ССВ' => 'северо-северо-восточный', 'ССЗ' => 'северо-северо-западный', 'С' => 'северный', 'СЗ' => 'северо-западный', 'ЮВ' => 'юго-восточный', 'Ю' => 'южный', 'ЮЮВ' => 'юго-юго-восточный', 'ЮЮЗ' => 'юго-юго-западный', 'ЮЗ' => 'юго-западный', '' => 'переменный', 'З' => 'западный', 'ЗСЗ' => 'западно-северо-западный', 'ЗЮЗ' => 'западно-юго-западный' ); $wind_dirtxt_cut = array( 'East' => 'восточный', 'ENE' => 'северо-восточный', 'ESE' => 'юго-восточный', 'NE' => 'северо-восточный', 'NNE' => 'северо-восточный', 'NNW' => 'северо-западный', 'North' => 'северный', 'NW' => 'северо-западный', 'SE' => 'юго-восточный', 'South' => 'южный', 'SSE' => 'юго-восточный', 'SSW' => 'юго-западный', 'SW' => 'юго-западный', 'Variable' => 'переменный', 'West' => 'западный', 'WNW' => 'северо-западный', 'WSW' => 'юго-западный', 'В' => 'восточный', 'ВСВ' => 'северо-восточный', 'ВЮВ' => 'юго-восточный', 'СВ' => 'северо-восточный', 'ССВ' => 'северо-восточный', 'ССЗ' => 'северо-западный', 'С' => 'северный', 'СЗ' => 'северо-западный', 'ЮВ' => 'юго-восточный', 'Ю' => 'южный', 'ЮЮВ' => 'юго-восточный', 'ЮЮЗ' => 'юго-западный', 'ЮЗ' => 'юго-западный', '' => 'переменный', 'З' => 'западный', 'ЗСЗ' => 'северо-западный', 'ЗЮЗ' => 'юго-западный' ); return array( $wind_direction[$wind], $wind_dirtxt[$wind], $wind_dirtxt_cut[$wind] ); } // Функция - добавления "+" к положительной температуре function getTempSign($temp) { $temp = (int)$temp; return $temp > 0 ? '+' . $temp : $temp; } // привести к нижнему регистру function strtolower_utf8($text) { $text = mb_convert_case($text, MB_CASE_LOWER, "UTF-8"); return $text; } // донулить до 2 знаков function plus_null_left($text) { $text = str_pad($text, 2, '0', STR_PAD_LEFT); return $text; } //заполнить 0 пустые значения function nul($text) { return 0 + intval($text); } // в сутках 24 часа function time_format($text) { $text = (int)$text; return $text > 23 ? $text - 24 : $text; } function icon_url($image,$urlIcon) { if ($image == '') retrun; if (substr_count($urlIcon,'/nt_')==1) { $image ='nt_'.$image; } /** * Get weather icon * @param string $image weather icon name * @return string */ $fileName = $image . '.svg'; $urlIcon = "http://icons.wxug.com/i/c/".gg("City.IconSets")."/". $fileName; $filePath = ROOT.'cached' . DIRECTORY_SEPARATOR . 'wunderground' . DIRECTORY_SEPARATOR . 'image'; if (!is_dir($filePath)) { @mkdir(ROOT . 'cached', 0777); @mkdir(ROOT . 'cached' . DIRECTORY_SEPARATOR . 'wunderground', 0777); @mkdir($filePath, 0777); } if (!file_exists($filePath . DIRECTORY_SEPARATOR . $fileName)) { $contents = file_get_contents($urlIcon); if ($contents) { SaveFile($filePath . DIRECTORY_SEPARATOR . $fileName, $contents); } } $urlIcon = ROOTHTML . "cached/wunderground/image/" . $fileName; return $urlIcon; // $text = 'http://icons.wxug.com/i/c/'.gg("City.IconSets").'/'.$text.'.gif'; // $text = 'http://icons.wxug.com/i/c/'.gg("City.IconSets").'/'.$image.'.svg'; // return $text; } // Функция - получить локализованный день недели function getDayDate($date) { $date = strtotime($date); // $months = array('','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'); $days = array( 'ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ' ); // return $days[date('w', $date)].', '.(int)date('d',$date).' '.$months[date('n', $date)].' '.date('y',$date).' г.'; return $days[date('w', $date) ]; } function getWeatherText($code) { $code = (string)$code; $text = array( '0' => 'безоблачно', '1' => 'переменная облачность', '2' => 'облачно', '3' => 'пасмурно', '10' => 'туман', '21' => 'местами возможен дождь', '22' => 'местами возможен снег', '23' => 'местами возможен мокрый снег', '24' => 'местами возможна ледяная морось', '29' => 'возможна гроза', '38' => 'метель', '39' => 'пурга', '45' => 'туман', '49' => 'ледяной туман', '50' => 'местами легкая морось', '51' => 'легкая морось', '56' => 'ледяная морось', '57' => 'сильная ледяная морось', '60' => 'местами небольшой дождь', '61' => 'небольшой дождь', '62' => 'временами умеренный дождь', '63' => 'умеренный дождь', '64' => 'временами сильный дождь', '65' => 'ливень', '66' => 'небольшой ледяной дождь', '67' => 'умеренный или сильный ледяной дождь', '68' => 'небольшой мокрый снег', '69' => 'умеренный или сильный мокрый снег', '70' => 'местами небольшой снег', '71' => 'небольшой снег', '72' => 'местами умеренный снег', '73' => 'умеренный снег', '74' => 'местами сильный снегопад', '75' => 'сильный снегопад', '80' => 'небольшой ливень', '81' => 'умеренный или сильный ливень', '82' => 'потоп', '83' => 'небольшой мокрый снег', '84' => 'умеренный или сильный мокрый снег', '85' => 'небольшой снег с дождём', '86' => 'умеренный или сильный снег с дождём', '87' => 'небольшой дожьдь с градом', '88' => 'умеренный или сильный ливень с градом', '91' => 'местами небольшая гроза', '92' => 'умеренная или сильная гроза', '93' => 'местами слабый снег с грозой', '94' => 'умеренный или сильный снегопад с грозой' ); return array( $text[$code], $text[$code] ); } // Функция - склонить день недели function getWeekDay($date) { $days = array( 'понедельник' => 'понедельник', 'вторник' => 'вторник', 'среда' => 'среду', 'четверг' => 'четверг', 'пятница' => 'пятницу', 'суббота' => 'субботу', 'воскресенье' => 'воскресенье' ); return $days[$date]; } function tempcels($w){ $w = round(strip_tags($w)); $tempw = $w; if ($w < "0") { $tempw = abs($w); } if ($w > "0") { $templus = " плюс "; } if ($tempw >= 11 and $tempw <= 14) { $tempcels = " градусов"; } else { while ($tempw > 9) { $tempw = $tempw - 10; } if ($tempw == 0 or $tempw >= 5 and $tempw <= 9) { $tempcels = " градусов"; } if ($tempw == 1) { $tempcels = " градус"; } if ($tempw >= 2 and $tempw <= 4) { $tempcels = " градуса"; } } return $tempcels; }
// <?php $data_file = 'http://api.wunderground.com/api/' . gg("City.KeyAPI") . '/forecast10day/astronomy/conditions/hourly/lang:RU/q/' . gg("City.Position") . '.xml'; $xml = simplexml_load_file($data_file); // раскладываем xml на массив if ($xml === false) { return; } // Запишем прогноз погоды на 10 дней $nDay = 0; foreach($xml->forecast->simpleforecast->forecastdays->forecastday as $day) { // записываем дeнь sg("City.mcD" . $nDay . "_Weekday_Short", strtolower_utf8($day->{'date'}->{'weekday_short'})); sg("City.mcD" . $nDay . "_Weekday", strtolower_utf8($day->{'date'}->{'weekday'})); sg("City.mcD" . $nDay . "_Monthname", strtolower_utf8($day->{'date'}->{'monthname'})); sg("City.mcD" . $nDay . "_Day", plus_null_left($day->{'date'}->{'day'})); sg("City.mcD" . $nDay . "_Month", plus_null_left($day->{'date'}->{'month'})); sg("City.mcD" . $nDay . "_Year", $day->{'date'}->{'year'}); sg("City.mcD" . $nDay . "_YDay", $day->{'date'}->{'yday'}); // температура sg("City.mcD" . $nDay . "_Temp_High", getTempSign($day->{'high'}->{'celsius'})); sg("City.mcD" . $nDay . "_Temp_Low", getTempSign($day->{'low'}->{'celsius'})); // картинка sg("City.mcD" . $nDay . "_Image", icon_url($day->{'icon'},$day->{'icon_url'})); sg("City.mcD" . $nDay . "_Image_Sky", icon_url($day->{'skyicon'},$day->{'icon_url'})); // облачность sg("City.mcD" . $nDay . "_Type", strtolower_utf8($day->{'conditions'})); // ветер $dir = $day->{'maxwind'}->{'dir'}; list($dir, $dirtext, $dirtextcut) = getWindDirection($dir); sg("City.mcD" . $nDay . "_WindDir_Max", $dirtextcut); sg("City.mcD" . $nDay . "_WindDegrees_Max", $day->{'maxwind'}->{'degrees'}); sg("City.mcD" . $nDay . "_WindSpeed_Max", intval($day->{'maxwind'}->{'kph'} / 3.6)); $dir = $day->{'avewind'}->{'dir'}; list($dir, $dirtext, $dirtextcut) = getWindDirection($dir); sg("City.mcD" . $nDay . "_WindDir_Average", $dirtextcut); sg("City.mcD" . $nDay . "_WindDegrees_Average", $day->{'avewind'}->{'degrees'}); sg("City.mcD" . $nDay . "_WindSpeed_Average", intval($day->{'avewind'}->{'kph'} / 3.6)); // влажность sg("City.mcD" . $nDay . "_Humidity_Average", nul($day->{'avehumidity'})); sg("City.mcD" . $nDay . "_Humidity_Min", nul($day->{'minhumidity'})); sg("City.mcD" . $nDay . "_Humidity_Max", nul($day->{'maxhumidity'})); // осадки // вероятность Probability Of Precipitation sg("City.mcD" . $nDay . "_Pop", nul($day->{'pop'})); // дождь sg("City.mcD" . $nDay . "_Rain_AllDay", nul($day->{'qpf_allday'}->{'mm'})); sg("City.mcD" . $nDay . "_Rain_Day", nul($day->{'qpf_day'}->{'mm'})); sg("City.mcD" . $nDay . "_Rain_Night", nul($day->{'qpf_night'}->{'mm'})); // снег sg("City.mcD" . $nDay . "_Snow_AllDay", nul($day->{'snow_allday'}->{'sm'})); sg("City.mcD" . $nDay . "_Snow_Day", nul($day->{'snow_day'}->{'sm'})); sg("City.mcD" . $nDay . "_Snow_Night", nul($day->{'snow_night'}->{'sm'})); // атмосферное давление sg("City." . $nDay . "Pressure", intval($day->{pressure_mb} * 0.7500637554192)); $weekday = GetWeekDay(gg("City.mcD" . $nDay . "_Weekday")); $text = 'В '.$weekday.' ожидается '.gg("City.mcD" . $nDay . "_Type").'. '; $pop = gg("City.mcD" . $nDay . "_Pop"); $text .= $pop==0 ? 'Без осадков. ':'Вероятность осадков - '.$pop.'%. '; $text .= 'Температура ночью '.gg("City.mcD" . $nDay . "_Temp_Low").', днем '.gg("City.mcD" . $nDay . "_Temp_High"). tempcels(gg("City.mcD" . $nDay . "_Temp_High")).'. '; $text .= 'Ветер '.gg("City.mcD" . $nDay . "_WindDir_Average").' '.gg("City.mcD" . $nDay . "_WindSpeed_Average").' - '.gg("City.mcD" . $nDay . "_WindSpeed_Max").' м/с. '; $text .= 'Влажность воздуха '.gg("City.mcD" . $nDay . "_Humidity_Average").'%.'; sg("City.mcD" . $nDay . "_Text", $text); $nDay++; } // Запишем текстовый прогноз погоды на 10 дней и ночей $nDay = 0; /*foreach($xml->forecast->txt_forecast->forecastdays->forecastday as $day) { // день, ночь недели sg("City.mcD" . $nDay . "_Title", strtolower_utf8($day->{'title'})); // текст sg("City.mcD" . $nDay . "_Text", $day->{'fcttext_metric'}); // вероятность осадков Probability Of Precipitation sg("City.mcD" . $nDay . "_Pop", nul($day->{'pop'})); $nDay++; } */ // фаза луны восходы и закаты $percentIlluminated = $xml->moon_phase->percentIlluminated; $ageOfMoon = $xml->moon_phase->ageOfMoon; sg("City.MoonPhase", getMoonphase($percentIlluminated, $ageOfMoon)); sg("City.MoonSet", get_time($xml->moon_phase->moonset)); sg("City.MoonRise", get_time($xml->moon_phase->moonrise)); sg("City.SunSet", get_time($xml->sun_phase->sunset)); sg("City.SunRise", get_time($xml->sun_phase->sunrise)); // Обновляем показатели жизни объекта sg("City.updatedTimestamp", time()); sg("City.updatedTime", date("H:i - d.m.Y", time())); // длинный текстовый прогноз погоды $metcast = "На улице " . gg("City.Type") . "."; // ветер $WindSpeed = (float)gg("City.WindSpeed"); if ($WindSpeed == 0) { $metcast.= ' Безветренно.'; } elseif ($WindSpeed < 2) { $metcast.= ' Возможен тихий ветер.'; } elseif ($WindSpeed < 3) { $metcast.= ' Возможен легкий ветер.'; } elseif ($WindSpeed < 5) { $metcast.= ' Возможен слабый ветер.'; } elseif ($WindSpeed < 8) { $metcast.= ' Умеренный ветер.'; } elseif ($WindSpeed < 11) { $metcast.= ' Свежий ветер.'; } elseif ($WindSpeed < 14) { $metcast.= ' Сильный ветер.'; } elseif ($WindSpeed < 17) { $metcast.= ' Крепкий ветер.'; } elseif ($WindSpeed < 20) { $metcast.= ' Очень крепкий ветер. Без нужды из дома лучше не выходить.'; } elseif ($WindSpeed < 25) { $metcast.= ' На улице шторм. Выходить из дома не рекомендуется.'; } else { $metcast.= ' На улице ураган. Выходить из дома не рекомендуется.'; } $w = round(strip_tags(gg("City.Temp"))); $tempw = $w; if ($w < "0") { $tempw = abs($w); } if ($w > "0") { $templus = " плюс "; } if ($tempw >= 11 and $tempw <= 14) { $tempcels = " градусов"; } else { while ($tempw > 9) { $tempw = $tempw - 10; } if ($tempw == 0 or $tempw >= 5 and $tempw <= 9) { $tempcels = " градусов"; } if ($tempw == 1) { $tempcels = " градус"; } if ($tempw >= 2 and $tempw <= 4) { $tempcels = " градуса"; } } $metcast.= ' Температура ' . gg("City.Temp") . ' ' . $tempcels . '.'; $tm = (float)gg("City.Temp"); if ($tm < - 40) { $metcast.= ' Мы морозов не боимся!'; } elseif ($tm < - 30) { $metcast.= ' Очень холодно, оденьтесь теплее.'; } elseif ($tm < - 20) { $metcast.= ' Самое время есть мороженое.'; } elseif ($tm < - 10) { $metcast.= ' Холодновато.'; } elseif ($tm < - 3) { $metcast.= ' Не особо холодно.'; } elseif ($tm < 3) { $metcast.= ' Значит, возможно, гололёд.'; } elseif ($tm < 10) { $metcast.= ' Тепловато.'; } elseif ($tm < 25) { $metcast.= ' Тепло.'; } elseif ($tm < 30) { $metcast.= ' Жарко.'; } elseif ($tm > 30) { $metcast.= ' Ташкент.'; } $metcast.= ' Восход солнца сегодня в ' . gg("City.SunRise") . ','; $metcast.= ' закат в ' . gg("City.SunSet") . '.'; sg("City.conditions", $metcast); // ******************************************************** // КОНЕЦ ОСНОВНОГО БЛОКА // Функция - получить фазу луны function getMoonphase($percent, $age) { if ($age < 14) { if ($percent < 5) { $phase = "новолуние"; } elseif ($percent < 45) { $phase = "растущий серп"; } elseif ($percent < 55) { $phase = "первая четверть"; } elseif ($percent < 95) { $phase = "растущий месяц"; } else { $phase = "полнолуние"; } } else { if ($percent > 95) { $phase = "полнолуние"; } elseif ($percent > 55) { $phase = "убывающая луна"; } elseif ($percent > 45) { $phase = "последняя четверть"; } elseif ($percent > 5) { $phase = "убывающий месяц"; } else { $phase = "новолуние"; } } return $phase; } function get_time($event) { $time = ""; $H = str_pad($event->hour, 2, '0', STR_PAD_LEFT); $M = str_pad($event->minute, 2, '0', STR_PAD_LEFT); $time = $H . ":" . $M; return $time; } // <?php // Функция - получить направления ветра в МАССИВ function getWindDirection($wind) { $wind = (string)$wind; $wind_direction = array( 'East' => '← в', 'ENE' => '↙ всв', 'ESE' => '↖ вюв', 'NE' => '↙ св', 'NNE' => '↙ ссв', 'NNW' => '↘ ссз', 'North' => '↓ с', 'NW' => '↘ сз', 'SE' => '↖ юв', 'South' => '↑ ю', 'SSE' => '↖ ююв', 'SSW' => '↗ ююз', 'SW' => '↗ юз', 'Variable' => 'переменный', 'West' => '→ з', 'WNW' => '↘ зсз', 'WSW' => '↗ зюз', 'В' => '← в', 'ВСВ' => '↙ всв', 'ВЮВ' => '↖ вюв', 'СВ' => '↙ св', 'ССВ' => '↙ ссв', 'ССЗ' => '↘ ссз', 'С' => '↓ с', 'СЗ' => '↘ сз', 'ЮВ' => '↖ юв', 'Ю' => '↑ ю', 'ЮЮВ' => '↖ ююв', 'ЮЮЗ' => '↗ ююз', 'ЮЗ' => '↗ юз', '' => 'переменный', 'З' => '→ з', 'ЗСЗ' => '↘ зсз', 'ЗЮЗ' => '↗ зюз' ); $wind_dirtxt = array( 'East' => 'восточный', 'ENE' => 'восточно-северо-восточный', 'ESE' => 'восточно-юго-восточный', 'NE' => 'северо-восточный', 'NNE' => 'северо-северо-восточный', 'NNW' => 'северо-северо-западный', 'North' => 'северный', 'NW' => 'северо-западный', 'SE' => 'юго-восточный', 'South' => 'южный', 'SSE' => 'юго-юго-восточный', 'SSW' => 'юго-юго-западный', 'SW' => 'юго-западный', 'Variable' => 'переменный', 'West' => 'западный', 'WNW' => 'западно-северо-западный', 'WSW' => 'западно-юго-западный', 'В' => 'восточный', 'ВСВ' => 'восточно-северо-восточный', 'ВЮВ' => 'восточно-юго-восточный', 'СВ' => 'северо-восточный', 'ССВ' => 'северо-северо-восточный', 'ССЗ' => 'северо-северо-западный', 'С' => 'северный', 'СЗ' => 'северо-западный', 'ЮВ' => 'юго-восточный', 'Ю' => 'южный', 'ЮЮВ' => 'юго-юго-восточный', 'ЮЮЗ' => 'юго-юго-западный', 'ЮЗ' => 'юго-западный', '' => 'переменный', 'З' => 'западный', 'ЗСЗ' => 'западно-северо-западный', 'ЗЮЗ' => 'западно-юго-западный' ); $wind_dirtxt_cut = array( 'East' => 'восточный', 'ENE' => 'северо-восточный', 'ESE' => 'юго-восточный', 'NE' => 'северо-восточный', 'NNE' => 'северо-восточный', 'NNW' => 'северо-западный', 'North' => 'северный', 'NW' => 'северо-западный', 'SE' => 'юго-восточный', 'South' => 'южный', 'SSE' => 'юго-восточный', 'SSW' => 'юго-западный', 'SW' => 'юго-западный', 'Variable' => 'переменный', 'West' => 'западный', 'WNW' => 'северо-западный', 'WSW' => 'юго-западный', 'В' => 'восточный', 'ВСВ' => 'северо-восточный', 'ВЮВ' => 'юго-восточный', 'СВ' => 'северо-восточный', 'ССВ' => 'северо-восточный', 'ССЗ' => 'северо-западный', 'С' => 'северный', 'СЗ' => 'северо-западный', 'ЮВ' => 'юго-восточный', 'Ю' => 'южный', 'ЮЮВ' => 'юго-восточный', 'ЮЮЗ' => 'юго-западный', 'ЮЗ' => 'юго-западный', '' => 'переменный', 'З' => 'западный', 'ЗСЗ' => 'северо-западный', 'ЗЮЗ' => 'юго-западный' ); return array( $wind_direction[$wind], $wind_dirtxt[$wind], $wind_dirtxt_cut[$wind] ); } // Функция - добавления "+" к положительной температуре function getTempSign($temp) { $temp = (int)$temp; return $temp > 0 ? '+' . $temp : $temp; } // привести к нижнему регистру function strtolower_utf8($text) { $text = mb_convert_case($text, MB_CASE_LOWER, "UTF-8"); return $text; } // донулить до 2 знаков function plus_null_left($text) { $text = str_pad($text, 2, '0', STR_PAD_LEFT); return $text; } //заполнить 0 пустые значения function nul($text) { return 0 + intval($text); } // в сутках 24 часа function time_format($text) { $text = (int)$text; return $text > 24 ? $text - 24 : $text; } function icon_url($text,$iconurl) { if (substr_count($iconurl,'/nt_')==1) { $text ='nt_'.$text; } // $text = 'http://icons.wxug.com/i/c/'.gg("City.IconSets").'/'.$text.'.gif'; $text = 'http://icons.wxug.com/i/c/'.gg("City.IconSets").'/'.$text.'.svg'; return $text; } // Функция - склонить день недели function getWeekDay($date) { $days = array( 'понедельник' => 'понедельник', 'вторник' => 'вторник', 'среда' => 'среду', 'четверг' => 'четверг', 'пятница' => 'пятницу', 'суббота' => 'субботу', 'воскресенье' => 'воскресенье' ); return $days[$date]; } function getWeatherText($code) { $code = (string)$code; $text = array( '0' => 'безоблачно', '1' => 'переменная облачность', '2' => 'облачно', '3' => 'пасмурно', '10' => 'туман', '21' => 'местами возможен дождь', '22' => 'местами возможен снег', '23' => 'местами возможен мокрый снег', '24' => 'местами возможна ледяная морось', '29' => 'возможна гроза', '38' => 'метель', '39' => 'пурга', '45' => 'туман', '49' => 'ледяной туман', '50' => 'местами легкая морось', '51' => 'легкая морось', '56' => 'ледяная морось', '57' => 'сильная ледяная морось', '60' => 'местами небольшой дождь', '61' => 'небольшой дождь', '62' => 'временами умеренный дождь', '63' => 'умеренный дождь', '64' => 'временами сильный дождь', '65' => 'ливень', '66' => 'небольшой ледяной дождь', '67' => 'умеренный или сильный ледяной дождь', '68' => 'небольшой мокрый снег', '69' => 'умеренный или сильный мокрый снег', '70' => 'местами небольшой снег', '71' => 'небольшой снег', '72' => 'местами умеренный снег', '73' => 'умеренный снег', '74' => 'местами сильный снегопад', '75' => 'сильный снегопад', '80' => 'небольшой ливень', '81' => 'умеренный или сильный ливень', '82' => 'потоп', '83' => 'небольшой мокрый снег', '84' => 'умеренный или сильный мокрый снег', '85' => 'небольшой снег с дождём', '86' => 'умеренный или сильный снег с дождём', '87' => 'небольшой дожьдь с градом', '88' => 'умеренный или сильный ливень с градом', '91' => 'местами небольшая гроза', '92' => 'умеренная или сильная гроза', '93' => 'местами слабый снег с грозой', '94' => 'умеренный или сильный снегопад с грозой' ); return array( $text[$code], $text[$code] ); } function tempcels($w){ $w = round(strip_tags($w)); $tempw = $w; if ($w < "0") { $tempw = abs($w); } if ($w > "0") { $templus = " плюс "; } if ($tempw >= 11 and $tempw <= 14) { $tempcels = " градусов"; } else { while ($tempw > 9) { $tempw = $tempw - 10; } if ($tempw == 0 or $tempw >= 5 and $tempw <= 9) { $tempcels = " градусов"; } if ($tempw == 1) { $tempcels = " градус"; } if ($tempw >= 2 and $tempw <= 4) { $tempcels = " градуса"; } } return $tempcels; }
Свойства класса:
Объекты класса:
Методы класса:
$updateTime = gg("yt_settings.updateTime"); if($updateTime > 0){ $count = gg("yt_settings.countTime"); if($count >= $updateTime){ include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php"); $app_yatraffic=new app_yatraffic(); $app_yatraffic->get_traffic(gg("yt_settings.reg_id")); sg("yt_settings.countTime",1); } else { $count++; sg("yt_settings.countTime",$count); } }
include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php"); $app_yatraffic=new app_yatraffic(); $app_yatraffic->get_traffic(gg("yt_settings.reg_id"));
Объекты класса:
, Россия
На форуме: andgeorg
© 2024 - Site Built By SergeJey | Реквизиты: Курицын С. С. ИНН 762001394609 | Контакты | Публичный договор
SmartLiving