MonitorSist
|
$color = "grey";
$g_line[0] = " ";
$g_line[1] = " _";
$g_line[2] = " _ _";
$g_line[3] = " _ _ _";
$g_line[4] = " _ _ _ _";
$g_line[5] = " _ _ _ _ _";
$g_line[6] = " _ _ _ _ _ _";
$g_line[7] = " _ _ _ _ _ _ _";
$g_line[8] = " _ _ _ _ _ _ _ _";
$g_line[9] = " _ _ _ _ _ _ _ _ _";
$g_line[10] = " _ _ _ _ _ _ _ _ _ _";
$g_line[11] = " _ _ _ _ _ _ _ _ _ _ _";
$g_line[12] = " _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[13] = " _ _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[14] = " _ _ _ _ _ _ _ _ _ _ _ _ _ _";
$g_line[15] = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _";
//----------------------- Название процессора ---------------------------------------------------------
$cpu_tip = exec("cat /proc/cpuinfo | grep Hardware | awk '{print $3}'");
sg('ThisComputer.CPUtip', $cpu_tip);
// -------------------- Температура процессора --------------------------------------------------------
$cpu_temp=shell_exec('cat /sys/class/thermal/thermal_zone0/temp') / 1000;
$cpu_temp=round($cpu_temp,0);
sg("ThisComputer.CPUtemp",$cpu_temp);
$maxtemp = 75;
$mintemp = 25;
$kf = ($maxtemp - $mintemp)/15; // 15 это делений на индикаторе
sg('ThisComputer.CPUtemp', $cpu_temp);
$t15 = round (($cpu_temp - $mintemp) / $kf); // чтобы шкала начиналась с $mintemp
if ($cpu_temp <= $mintemp) {
$t15 = 0; // и оганичим нижнее значение на 0
} elseif ($cpu_temp >= $maxtemp) {
$t15 = 15; // ограничим максимум на 15 делений
}
$t15_line = $g_line[$t15];
sg('ThisComputer.CPUtemp_-1', $t15_line);
// и цвет для неё
if (($cpu_temp >= 0) && ($cpu_temp < 45)) {
$color = 'lime';
} else if (($cpu_temp >= 45) && ($cpu_temp < 60)) {
$color = 'greenyellow';
} else if (($cpu_temp >= 60) && ($cpu_temp < 70)) {
$color = 'yellow';
} else if ($cpu_temp >= 70) {
$color = 'red';
} else {
$color = 'grey';
}
sg ('ThisComputer.CPUtemp_color', $color);
sg ('ThisComputer.CPUtemp_color_-1', $color);
// сдвинем значения с вылетом последнего
for ($i = 9; $i >= 0; $i--) {
$j = $i - 1;
sg ('ThisComputer.CPUtemp_'.$i, gg('ThisComputer.CPUtemp_'.$j));
sg ('ThisComputer.CPUtemp_color_'.$i, gg('ThisComputer.CPUtemp_color_'.$j));
}
//---------------------- Загрузка процессора -----------------------------------------------------
//$cpu_load=gg(ThisComputer.CPU_usage); //shell_exec('cat /proc/loadavg');
$cpu_load=(exec("top -bn 1 | awk '{print $9}' | tail -n +8 | awk '{s+=$1} END {print s}'"))/4;
$cpu_load=round($cpu_load,0);
setGlobal("ThisComputer.CPUload",$cpu_load);
$l15 = round ($cpu_load / 6.66); // чтобы из 15 значений 100/15 = 6,(6)
$l15_line = $g_line[$l15];
sg('ThisComputer.CPUload_-1', $l15_line);
// и цвет для неё
if (($cpu_load >= 0) && ($cpu_load < 30)) {
$color = 'lime';
} else if (($cpu_load >= 30) && ($cpu_load < 45)) {
$color = 'greenyellow';
} else if (($cpu_load >= 45) && ($cpu_load < 60)) {
$color = 'yellow';
} else if ($cpu_load >= 60) {
$color = 'red';
} else {
$color = 'grey';
}
sg ('ThisComputer.CPUload_color', $color);
sg ('ThisComputer.CPUload_color_-1', $color);
// сдвинем значения с вылетом последнего
for ($i = 9; $i >= 0; $i--) {
$j = $i - 1;
sg ('ThisComputer.CPUload_'.$i, gg('ThisComputer.CPUload_'.$j));
sg ('ThisComputer.CPUload_color_'.$i, gg('ThisComputer.CPUload_color_'.$j));
}
// -------------------- Использование ОЗУ -------------------------------------------------------------
$mem_total=exec("cat /proc/meminfo | grep MemTotal | awk '{print $2}'");
$mem_free=exec("cat /proc/meminfo | grep MemFree | awk '{print $2}'");
$mem_usage=$mem_total - $mem_free;
$sys_memory=round($mem_usage * 100 / $mem_total, 0);
$mem_free=round($mem_free/1024,0);
$mem_total=round($mem_total/1024,0);
$mem_usage=round($mem_usage/1024,0);
sg("ThisComputer.memory_free",$mem_free);
sg("ThisComputer.memory_total",$mem_total);
sg("ThisComputer.memory_usage",$mem_usage);
sg("ThisComputer.System_memory",$sys_memory);
//say('total: '.$mem_total/1024);
//say('usage: '.$mem_usage/1024);
//say('free: '.$mem_free/1024);
$color = ($sys_memory < 80) ? "lime" : "red";
sg ('ThisComputer.System_memory_color', $color);
// -------------------- Использование Флеш-карты -------------------------------------------------------------
$bytes = disk_free_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$disk_used = round($bytes / pow($base,$class)); // . ' ' . $si_prefix[$class];
$disk_used_percent = round($disk_used*100/64, 0);
setGlobal('ThisComputer.DISKused', $disk_used);
setGlobal('ThisComputer.DISKusedPersent', $disk_used_percent);
$color = ($disk_used < 80) ? "lime" : "red";
sg ('ThisComputer.DISKused_color', $color);
// -------------------- преобразование Uptime ----------------------------------------------------------
//System uptime
$sys_uptime=shell_exec("uptime");
$sys_uptime = explode(" up ", $sys_uptime);
$sys_uptime = explode(",", $sys_uptime[1]);
$sys_uptime = $sys_uptime[0]; // .", ".$sys_uptime[1];
setGlobal("ThisComputer.System_uptime",$sys_uptime);
/**
* Секунды в строку
* Эта функция возвращает кол-во секунд преобразованное в дни, часы, минуты, секунды
*
* @param integer $seconds всего время в секундах.
* @return string "1234567" возвращает "14 дн., 6 час., 56 мин., 7 сек.".
*/
function secondsToString($seconds) {
$result = '';
if ($seconds >= 86400) {
$days = floor($seconds / 86400);
$seconds = $seconds % 86400;
$result = $days.' д., ';
}
if ($seconds >= 3600) {
$hours = floor($seconds / 3600);
$seconds = $seconds % 3600;
$result .= $hours.' час., ';
}
if ($seconds >= 60) {
$minutes = floor($seconds / 60);
$seconds = $seconds % 60;
$result .= $minutes.' мин., ';
}
$result .= $seconds.' сек.';
return $result;
}
|
NameCallsD
|
say("Дмитрий, вам звонит" .$params["name"],1);
$vol = gg("ThisComputer.volumeLevel");{
cm('RadioSetting.Control', array('vol10'));
}
|
NameCallsS
|
say("Светлана, вам звонит" .$params["name"],1);
$vol = gg("ThisComputer.volumeLevel");{
cm('RadioSetting.Control', array('vol10'));
}
|
shutdown_windows7
|
$shutdown = shell_exec("/usr/bin/net rpc shutdown -t 3 -f -C shutdown -U dimax%buldozer -I 192.168.1.150");
|
SysInfo
|
//Загрузка процессора
$cpus='"Cpu(s)"';
$cpus2="'{print $2 + $4}'";
$cpuloads = exec('top -b -n1 | grep '.$cpus." | awk ".$cpus2);
sg('dimaxus.cpuload',$cpuloads);
//Температура проца
$cpu_temp=`cat /sys/class/thermal/thermal_zone0/temp` / 1000;
$cpu_temp=round($cpu_temp,1);
setGlobal("dimaxus.cputemp",$cpu_temp);
//Время запуска
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('dimaxus.Uptime',trim($uptime[0]));
//Загрузка памяти
$mem_total=exec("vmstat -s -S M | grep mem | grep total | awk '{print $1}'");
$mem_used=exec("vmstat -s -S M | grep mem | grep used | awk '{print $1}'");
$sys_memory=round($mem_used/$mem_total*100, 2);
//$sys_memory=round($mem_used/$mem_total*100, 2) ."%";
setGlobal("dimaxus.memoryload",$sys_memory);
//-------------------------
//Сколько места на флешке
$bytes = disk_free_space(".");
$tbytes = disk_total_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('dimaxus.hddFreeSpaceC',$temp);
$class = min((int)log($tbytes , $base) , count($si_prefix) - 1);
$temp = round($tbytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('dimaxus.hddTotalSpace',$temp);
$bytes = disk_free_space(".");
$tbytes = disk_total_space(".");
$bytes = $tbytes - $bytes;
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('dimaxus.hddSpaceUsed',$temp);
|
Vol+
|
$vol = gg("ThisComputer.volumeLevel");
setGlobal('ThisComputer.volumeLevel', $vol+10);
if ($vol < 100){
cm('RadioSetting.Control',array('vol'=> $vol+10 ));
} else {
cm('RadioSetting.Control',array('vol'=> 100 ));
}
|
alfa_radio
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Альфарадио',2);
setTimeOut('T_al',"cm('RadioSetting.Control', array('sta'=>'Альфарадио', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
autoradio
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Авторадио',2);
setTimeOut('T_ar',"cm('RadioSetting.Control', array('sta'=>'Авторадио', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
Energy FM
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Energy FM',2);
setTimeOut('T_en',"cm('RadioSetting.Control', array('sta'=>'Energy FM', 'cmd'=>'play', 'vol'=>50));",5);
setGlobal("RadioSetting.RadioLedOn",1);
|
humor_fm
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Юмор FM',2);
setTimeOut('T_hu',"cm('RadioSetting.Control', array('sta'=>'Юмор FM', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
melodii_veka
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Мелодии века',2);
setTimeOut('T_mv',"cm('RadioSetting.Control', array('sta'=>'Мелодии века', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
RadioOff
|
cm('RadioSetting.Control',array('cmd'=>'stop'));
setGlobal("RadioSetting.RadioLedOn",0);
say('Радио выключено',2);
|
RadioOn
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио',2);
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
radio_4you
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Радио для Тебя',2);
setTimeOut('T_4y',"cm('RadioSetting.Control', array('sta'=>'Radio 4you', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
radio_ba
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Радио Би-Эй',2);
setTimeOut('T_ba',"cm('RadioSetting.Control', array('sta'=>'Радио Би-Эй', 'cmd'=>'play', 'vol'=>50));",3);
setGlobal("RadioSetting.RadioLedOn",1);
|
radio_relax
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Радио Релакс',2);
setTimeOut('T_en',"cm('RadioSetting.Control', array('sta'=>'Радио Релакс', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
radio_roks
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Радио РОКС',2);
setTimeOut('T_en',"cm('RadioSetting.Control', array('sta'=>'Радио РОКС', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
radio_unistar
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Радио Юнистар',2);
setTimeOut('T_ru',"cm('RadioSetting.Control', array('sta'=>'Радио Юнистар', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
rus_radio
|
cm('RadioSetting.Control', array('stop'));
say('Включаю Русское радио',2);
setTimeOut('T_rr',"cm('RadioSetting.Control', array('sta'=>'Русское радио', 'cmd'=>'play', 'vol'=>50));",4);
setGlobal("RadioSetting.RadioLedOn",1);
|
Vol-
|
$vol = gg("ThisComputer.volumeLevel");
setGlobal('ThisComputer.volumeLevel', $vol-10);
if ($vol > 10){
cm('RadioSetting.Control',array('vol'=> $vol-10 ));
} else {
cm('RadioSetting.Control',array('vol'=> 0 ));
}
|
oprosBMP180_01
|
$value = file_get_contents("http://192.168.1.31/dmx/?pt=33&scl=32&i2c_dev=bmp180&i2c_par=2");
$arr = explode("/",$value);
$temp = substr($arr[0],strpos($arr[0],':')+1,strlen($arr[0])-strpos($arr[0],':'));
$press = substr($arr[1],strpos($arr[1],':')+1,strlen($arr[1])-strpos($arr[1],':'));
sg('CombiSensBMP180_01.valueTemp',$temp);
sg('CombiSensBMP180_01.valuePress',$press);
|
oprosBMP_01
|
//Должны быть указаны актуальные IP-адрес и пароль для доступа к устройству, а также порт датчика
$value = file_get_contents("http://192.168.1.30/dmx/?pt=32&scl=31&i2c_dev=bmx280&i2c_par=3");
$arr = explode("/",$value);
$temp = substr($arr[0],strpos($arr[0],':')+1,strlen($arr[0])-strpos($arr[0],':'));
$press = substr($arr[1],strpos($arr[1],':')+1,strlen($arr[1])-strpos($arr[1],':'));
$hum = substr($arr[2],strpos($arr[2],':')+1,strlen($arr[2])-strpos($arr[2],':'));
sg('CombiSensBMP280_01.valueTemp',$temp);
sg('CombiSensBMP280_01.valuePress',$press);
sg('Sensor_pressure01.value',$press);
sg('CombiSensBMP280_01.valueHum',$hum);
sg('Sensor_humidity03.value',$hum);
|
oprosHTU21D_01-02
|
if (ping("192.168.1.34")) {
$value = file_get_contents("http://192.168.1.34/dmx/?pt=34&scl=31&i2c_dev=htu21d");
sg('hum_tepliza1.value',$value);
$value1 = file_get_contents("http://192.168.1.34/dmx/?pt=34&scl=31&i2c_dev=htu21d&i2c_par=1");
sg('temp_tepliza1.value',$value1);}
else {
say("Извините, Опрос датчика температуры и влажности в Теплице 1 не удался. Мега не доступна.",1);}
if (ping("192.168.1.34")) {
$value2 = file_get_contents("http://192.168.1.34/dmx/?pt=35&scl=31&i2c_dev=htu21d");
sg('hum_tepliza2.value',$value2);
$value3 = file_get_contents("http://192.168.1.34/dmx/?pt=35&scl=31&i2c_dev=htu21d&i2c_par=1");
sg('temp_tepliza2.value',$value3);}
else {
say("Извините, Опрос датчика температуры и влажности в Теплице 2 не удался. Мега не доступна.",1);}
|
HumiditySoil_01_GetVal
|
if (ping("192.168.1.34")) {
$value = file_get_contents("http://192.168.1.34/dmx/?pt=36&cmd=get");
if ($value < 10) {
sg('hum_soilT1.value',0);
return "";}
if ($value > 1023) {
sg('hum_soilT1.value',100);
return "";}
$value = round(((1023-$value)/(1023-10)*100), 1);
sg('hum_soilT1.value',$value);}
else {
say("Извините, Опрос датчика почвы в Теплице 1 не удался. Мега не доступна.",1);}
|
HumiditySoil_02_GetVal
|
if (ping("192.168.1.34")) {
$value = file_get_contents("http://192.168.1.34/dmx/?pt=37&cmd=get");
if ($value < 420) {
sg('hum_soilT2.value',0);
return "";}
if ($value > 850) {
sg('hum_soilT2.value',100);
return "";}
$value = round(((850-$value)/(850-420)*100), 1);
sg('hum_soilT2.value',$value);}
else {
say("Извините, Опрос датчика почвы в Теплице 2 не удался. Мега не доступна.",1);}
|
need_water
|
//Проверяем доступность Меги
if(ping("192.168.1.34")) {
//Вычисляем среднее значение показаний датчика1 за сутки, если меньше 30%
if (getHistoryValue("humidSoil_01.humValue", strtotime("-1 day")) < 30) {
//say('Хозяева нужен полив Теплицы 1');
if (gg('humidSoil_01.need_watering') <> 1) {
sg('humidSoil_01.need_watering',1);
//Запишем время, когда возникла необходимость полива
sg('humidSoil_01.need_wateringTime',date('d-m H:i',time()));}
} else {
sg('humidSoil_02.need_watering',0);}
//Вычисляем среднее значение показаний датчика2 за сутки, если меньше 30%
if (getHistoryValue("humidSoil_02.humValue", strtotime("-1 day")) < 30) {
//say('Хозяева нужен полив Теплицы 2');
if (gg('humidSoil_02.need_watering') <> 1) {
sg('humidSoil_02.need_watering',1);
//Запишем время, когда возникла необходимость полива
sg('humidSoil_02.need_wateringTime',date('d-m H:i',time()));}
} else {
sg('humidSoil_02.need_watering',0);}
} else {
say('Mega теплиц не доступна, небходимость полива не проверена');
}
|
opros_humSensors_01
|
if(ping("192.168.1.34")) {
$value = file_get_contents("http://192.168.1.34/dmx/?pt=36&cmd=get");
if ($value < 10) {
sg('humidSoil_01.humValue',0);
return "";}
if ($value > 1023) {
sg('humidSoil_01.humValue',100);
return "";}
$value = round(((1023-$value)/(1023-10)*100), 1);
sg('humidSoil_01.humValue',$value);}
else {
say("Извините, Опрос датчика почвы в Теплице 1 не удался. Мега не доступна.",1);}
|
opros_humSensors_02
|
if(ping("192.168.1.34")) {
$value = file_get_contents("http://192.168.1.34/dmx/?pt=37&cmd=get");
if ($value < 420) {
sg('humidSoil_02.humValue',0);
return "";}
if ($value > 850) {
sg('humidSoil_02.humValue',100);
return "";}
$value = round(((850-$value)/(850-420)*100), 1);
sg('humidSoil_02.humValue',$value);}
else {
say("Извините, Опрос датчика почвы в Теплице 2 не удался. Мега не доступна.",1);}
|
opros_1-wire_bus_32
|
$array = array(
'temp_sanuzel_1st' => '1ae9d2040000',
'temp_boylernaj_1st' => 'b82ad3040000',
'temp_kitchen_1st' => '12d7d2040000',
'temp_zal_1st' => 'e281d3040000',
'temp_spalnij_1st' => 'a9f0d2040000',
'temp_veranda_1st' => '94bad3040000',
'temp_podval' => '5e14d3040000',
'temp_ulitca' => '696bd3040000',
);
$Val = file_get_contents("http://192.168.1.32/dmx/?pt=31&cmd=list");
if ($Val != "busy") {
$Val = explode(';',$Val);
foreach ($Val as $temp) {
$t = explode(':', $temp);
if (array_search($t[0], $array) !== FALSE) {
$Obj = array_search($t[0], $array);
if ($t[1] != "CRC-error") {
sg($Obj.'.value', $t[1]);
//say($Obj.'='.$t[1]);
} else {
sg($Obj.'.value', gg($Obj.'.value'));
}
}
}
} else {
//Повторный опрос через 2 секунды
setTimeOut('Bus_DS18B20_44_RepeatedRequest','runScriptSafe("opros_1-wire_bus_35");',2);
}
|
opros_1-wire_bus_35
|
/*
//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.1.35/dmx/?pt=30&cmd=list").';';
if ($Val != "busy")
{
// вот такой вид будет
//ff30b3c01701:28.12;ff64f4c01701:1.87;ffb3bb611802:16.12;ffefa7611802:15.68
//код термодатчика : температура
//
//дальше в каждую строчку $T1 проставляем коды всех термодатчиков
//выданных выше
preg_match('~ee9c67221602:(.*?);~',$Val,$T1);
preg_match('~ee8a84251601:(.*?);~',$Val,$T2);
preg_match('~ee0668221602:(.*?);~',$Val,$T3);
preg_match('~ee1154221602:(.*?);~',$Val,$T4);
preg_match('~ee8786251601:(.*?);~',$Val,$T5);
preg_match('~f921a3040000:(.*?);~',$Val,$T6);
preg_match('~ff961a511704:(.*?);~',$Val,$T7);
preg_match('~ffd947511704:(.*?);~',$Val,$T8);
preg_match('~ffe73d801605:(.*?);~',$Val,$T9);
//
//
//этот параметр "Sensor_temp06.value" берем
//в мажордомо в созданном объекте "Начало/SDevices/SSensors/sTempSensors"
//в свойстве
if ($T1 == "" || $T1 == "CRC-error") {
$T1 = gg('temp_podaciTP2st.value', $T1[1]);} else { $T1 = $T1[1]; }
if ($T2 == "" || $T2 == "CRC-error") {
$T2 = gg('temp_podaciBoyler.value', $T2[1]);} else { $T2 = $T2[1]; }
if ($T3 == "" || $T3 == "CRC-error") {
$T3 = gg('temp_obratkiBoyler.value', $T3[1]);} else { $T3 = $T3[1]; }
if ($T4 == "" || $T4 == "CRC-error") {
$T4 = gg('temp_obratkiTP2st.value', $T4[1]);} else { $T4 = $T4[1]; }
if ($T5 == "" || $T5 == "CRC-error") {
$T5 = gg('temp_podaciTP1st.value', $T5[1]);} else { $T5 = $T5[1]; }
if ($T6 == "" || $T6 == "CRC-error") {
$T6 = gg('TempGVS_08.value', $T6[1]);} else { $T6 = $T6[1]; }
if ($T7 == "" || $T7 == "CRC-error") {
$T7 = gg('temp_obratkiBat1st.value', $T7[1]);} else { $T7 = $T7[1]; }
if ($T8 == "" || $T8 == "CRC-error") {
$T8 = gg('temp_podacaBatarei1st.value', $T8[1]);} else { $T8 = $T8[1]; }
if ($T9 == "" || $T9 == "CRC-error") {
$T9 = gg('temp_obratkiTP1st.value', $T9[1]);} else { $T9 = $T9[1]; }
sg('temp_podaciTP2st.value', $T1);
sg('temp_podaciBoyler.value', $T2);
sg('temp_obratkiBoyler.value', $T3);
sg('temp_obratkiTP2st.value', $T4);
sg('temp_podaciTP1st.value', $T5);
sg('TempGVS_08.value', $T6);
sg('temp_obratkiBat1st.value', $T7);
sg('temp_podacaBatarei1st.value', $T8);
sg('temp_obratkiTP1st.value', $T9);
} else {
//Повторный опрос через 2 секунды
setTimeOut('Bus_DS18B20_44_RepeatedRequest','runScriptSafe("opros_1-wire_bus_35");',2);
}
// иногда шина бывает занята из за опроса и формирования темп
// поэтому необходимо отрабатывать парамтр занято
// иначе на графиках будут провалы
//этим способом вместо провала будет последнее значение
if ($T1 == "") {
$T1 = gg('temp_podaciTP2st.value');}
if ($T2 == "") {
$T2 = gg('temp_podaciBoyler.value');}
if ($T3 == "") {
$T3 = gg('temp_obratkiBoyler.value');}
if ($T4 == "") {
$T4 = gg('temp_obratkiTP2st.value');}
if ($T5 == "") {
$T5 = gg('temp_podaciTP1st.value');}
if ($T6 == "") {
$T6 = gg('TempGVS_08.value');}
if ($T7 == "") {
$T7 = gg('temp_obratkiBat1st.value');}
if ($T8 == "") {
$T8 = gg('temp_podacaBatarei1st.value');}
if ($T9 == "") {
$T9 = gg('temp_obratkiTP1st.value');}
//
//*термодатчиков может большее количество, дописываем по аналогии
*/
$array = array(
'temp_podaciTP2st' => 'ee9c67221602',
'temp_podaciBoyler' => 'ee8a84251601',
'temp_obratkiBoyler' => 'ee0668221602',
'temp_obratkiTP2st' => 'ee1154221602',
'temp_podaciTP1st' => 'ee8786251601',
'TempGVS_08' => 'f921a3040000',
'temp_obratkiBat1st' => 'ff961a511704',
'temp_podacaBatarei1st' => 'ffd947511704',
'temp_obratkiTP1st' => 'ffe73d801605'
);
$Val = file_get_contents("http://192.168.1.35/dmx/?pt=30&cmd=list");
if ($Val != "busy") {
$Val = explode(';',$Val);
foreach ($Val as $temp) {
$t = explode(':', $temp);
if (array_search($t[0], $array) !== FALSE) {
$Obj = array_search($t[0], $array);
if ($t[1] != "CRC-error") {
sg($Obj.'.value', $t[1]);
//say($Obj.'='.$t[1]);
} else {
sg($Obj.'.value', gg($Obj.'.value'));
}
}
}
} else {
//Повторный опрос через 2 секунды
setTimeOut('Bus_DS18B20_44_RepeatedRequest','runScriptSafe("opros_1-wire_bus_35");',2);
}
|
opros_temp_garaj
|
//Должны быть указаны актуальные IP-адрес и пароль для доступа к устройству, а также адрес датчика
if(ping("192.168.1.33")) {
$value = file_get_contents("http://192.168.1.33/dmx/?pt=30&cmd=get");
if ($value == "Error") {
setTimeOut('Povtor_oprosa9','runScript("opros_temp_garaj");',5);
return "";}
$arr = explode("/",$value);
$temp = substr($arr[0],strpos($arr[0],':')+1,strlen($arr[0])-strpos($arr[0],':'));
sg('temp_garaj.value',$temp);}
else {
say("Извините,опрос датчика температуры в гараже не удался. Мега 33 не доступна.",1);}
//say($value);
|
DateWday
|
/*
http://space-base.ru/library/?book=17
seconds секунды (0-59)
minutes минуты (0-59)
hours часы (0-23)
mday день месяца (1-31)
wday день недели (0-6), начиная с воскресенья
mon месяц (1-12)
year год
yday день года (0-365)
weekday название дня недели (например, Monday)
month название месяца (например, January)
0 количество секунд, прошедших с начала Эпохи Unix
*/
$date_mas = getdate();
$d = $date_mas['mday'];
if ($d < 10) { $d = '0' . $d;}
$m = $date_mas['mon'];
if ($m < 10) { $m = '0' . $m;}
$y = $date_mas['year'];
$hrs = $date_mas['hours'];
//if ($hrs < 10) { $hrs = '0' . $hrs;} // закоментили чтобы не ставить 0 перед одним символом
$min = $date_mas['minutes'];
if ($min < 10) { $min = '0' . $min;}
$sec = $date_mas['seconds'];
if ($sec < 10) { $sec = '0' . $sec;}
$wday = $date_mas['wday'];
$wDayRuLong=array('Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
$wDayRuMini=array('Вс','Пн','Вт','Ср','Чт','Пт','Сб');
$monRu=array(' ','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
$timeNow = $hrs . ':' . $min; // Время - 00:00
$dataNow = $d . '.' . $m . '.' . $y ; // Дата - 01.01.2019
$dataNowTXT = $d . ' ' . $monRu[$date_mas['mon']]. ' ' . $y; // Дата - 01 января 2019
$dayNowRuLong = $wDayRuLong[$wday]; // День недели - Понедельник
$dayNowRuMini = $wDayRuMini[$wday]; // День недели - Пн
//echo "$timeNow <br> $val <br> $dataNow <br> $dataNowTXT <br> $dayNowRuLong <br> $dayNowRuMini";
// Пишем полученные данные в нужные свойства объектов
// соответсвенно, предварительно создайте эти свойства
sg('ThisComputer.dateNow',$dataNow); // Дата - 01.01.2019
sg('ThisComputer.dataNowTXT',$dataNowTXT); // Дата - 01 января 2019
sg('ThisComputer.dayNowRuLong',$dayNowRuLong); // День недели - Понедельник
sg('ThisComputer.dayNowRuMini',$dayNowRuMini); // День недели - Пн
|
dimaxuscharg
|
$Batt1 = gg("dimaxus.BattLevel");
$Charg1 = gg("dimaxus.Charging");
if (($Batt1 < 10)&($Charg1 < 1)){
say("Дмитрий ваш телефон почти сдох",2);
}
//$Batt2 = gg("Svetik.BattLevel");
//$Charg2 = gg("Svetik.Charging");
//if (($Batt2 < 10)&($Charg2 < 1)){
// say("Светлана ваш телефон почти разряжен",1);
//}
|
pogoda_yandex_ozero
|
$city = 213334; // поменять на свой
$url= 'https://yandex.ru/pogoda/' . $city;
$str = file_get_contents($url);
$dom = phpQuery::newDocument($str);
// считываем данные на несколько дней вперед
foreach($dom->find(".forecast-briefly__day-link") as $key => $value){
// Преобразуем dom объект в объект phpQuery.
//Делаем сие действие с помощью метода pq(); который является аналогом ($) в jQuery.
$pq = pq($value);
// Находим в этом элементе элементы
$day[$key]["day"] = $pq->find(".forecast-briefly__name")->text();
$day[$key]["time"] = $pq->find(".forecast-briefly__date")->text();
$day[$key]["icon"] = $pq->find(".forecast-briefly__icon")->attr('src');
$day[$key]["temp_day"] = $pq->find(".forecast-briefly__temp_day .temp__value")->text();
$day[$key]["temp_night"] = $pq->find(".forecast-briefly__temp_night .temp__value")->text();
$day[$key]["condition"] = $pq->find(".forecast-briefly__condition")->text();
}
// заменить 10 на количество дней, за которые хотите иметь погоду
for ($i = 1; $i <= 10; $i++) {
// все глобальные свойства ниже создадутся автоматически, необходимо создать только weather
sg("weather_oz.day".$i,$day[$i]["day"] );
sg("weather_oz.time".$i,$day[$i]["time"] );
$day[$i]["icon"] = str_replace("//yastatic.net/weather/i/icons/funky/dark/", '/cms/scenes/new/icons/', $day[$i]["icon"]);
$day[$i]["icon"] = str_replace("png", "svg", $day[$i]["icon"]);
sg("weather_oz.icon".$i,$day[$i]["icon"] );
sg("weather_oz.temp_day".$i,$day[$i]["temp_day"] );
sg("weather_oz.temp_night".$i,$day[$i]["temp_night"] );
sg("weather_oz.condition".$i,$day[$i]["condition"] );
}
//считываем данные за текущий день
$pq=pq($dom->find(".fact") );
$fact["temp"] = $pq->find(".fact__temp-wrap .link .fact__temp .temp__value")->text();
$fact["icon"] = $pq->find(".fact__temp-wrap .link .icon")->attr('src');
$fact["feel"] = $pq->find(".fact__temp-wrap .link .link__feelings .term .term__value")->text();
$fact["wind"] = $pq->find(".fact__props .fact__wind-speed .term__value .wind-speed")->text();
$fact["wind_word"] = $pq->find(".fact__props .fact__wind-speed .term__value")->attr('aria-label');
$fact["wind_dir"] = $pq->find(".fact__props .fact__wind-speed .term__value .fact__unit .icon-abbr")->text();
$fact["hum"] = $pq->find(".fact__props .fact__humidity .term__value ")->text();
$fact["hum_word"] = $pq->find(".fact__props .fact__humidity .term__value ")->attr('aria-label');
$fact["press"] = $pq->find(".fact__props .fact__pressure .term__value")->text();
$fact["press_word"] = $pq->find(".fact__props .fact__pressure .term__value")->attr('aria-label');
$fact["icon"] = str_replace("//yastatic.net/weather/i/icons/funky/light/", '/cms/scenes/new/icons/', $fact["icon"]);
$fact["icon"] = str_replace("png", "svg", $fact["icon"]);
//соберем погоду по часам
$i=0; //счетчик
foreach($dom->find(".fact__hour") as $key => $value){
$pq = pq($value);
if (substr($pq->find(".fact__hour-elem .fact__hour-label")->text(),-3)==":00" ) { //если время заканчивается на целый час
// то сохраним в массив, иначе это было время восхода/заката и это включать в массив не будем
$hours[$i]["time"] = $pq->find(".fact__hour-elem .fact__hour-label")->text();
$hours[$i]["icon"]= $pq->find(".fact__hour-elem .icon")->attr('src');
$hours[$i]["temp"]= $pq->find(".fact__hour-elem .fact__hour-temp")->text();
$i=$i+1;//увеличим счетчик
}
}
$j=0;//счетчик
for ($i = 0; $i <= count($hours); $i+=6) { //выведем только кажый 6-ой час
$hours[$i]["icon"]= str_replace("//yastatic.net/weather/i/icons/funky/flat/", '/cms/scenes/new/icons/', $hours[$i]["icon"]);
$hours[$i]["icon"] = str_replace("png", "svg", $hours[$i]["icon"]);
sg("weather_oz.hour_time".$j,$hours[$i]["time"] );
sg("weather_oz.hour_icon".$j,$hours[$i]["icon"] );
sg("weather_oz.hour_temp".$j,$hours[$i]["temp"] );
$j+=1;
}
sg("weather_oz.fact_temp",$fact["temp"] );
sg("weather_oz.fact_icon",$fact["icon"] );
sg("weather_oz.fact_feel",$fact["feel"] );
sg("weather_oz.fact_wind",$fact["wind"] );
sg("weather_oz.fact_wind_word",$fact["wind_word"] );
sg("weather_oz.fact_wind_dir",$fact["wind_dir"] );
sg("weather_oz.fact_hum",$fact["hum"] );
sg("weather_oz.fact_hum_word",$fact["hum_word"] );
sg("weather_oz.fact_press",$fact["press"] );
sg("weather_oz.fact_press_word",$fact["press_word"] );
// заменить 10 на количество необходимых прогнозируемых дней
for ($i = 1; $i <= 10; $i++) {
// все глобальные свойства ниже создадутся автоматически, необходимо создать только weather
sg("weather_oz.day".$i,$day[$i]["day"] );
sg("weather_oz.time".$i,$day[$i]["time"] );
$day[$i]["icon"] = str_replace("//yastatic.net/weather/i/icons/funky/dark/", '/cms/scenes/new/icons/', $day[$i]["icon"]);
$day[$i]["icon"] = str_replace("png", "svg", $day[$i]["icon"]);
sg("weather_oz.icon".$i,$day[$i]["icon"] );
sg("weather_min.temp_day".$i,$day[$i]["temp_day"] );
sg("weather_oz.temp_night".$i,$day[$i]["temp_night"] );
sg("weather_oz.condition".$i,$day[$i]["condition"] );
}
//восход, закат
$sunrise=pq($dom->find(".sun-card__sunrise-sunset-info_value_rise-time") );
$sunrise=substr($sunrise->text() , -5); //нужны только последние 5 символов
$sunset =pq($dom->find(".sun-card__sunrise-sunset-info_value_set-time") );
$sunset=substr($sunset->text(), -5); //нужны только последние 5 символов
sg("weather_oz.sunrise",$sunrise);
sg("weather_oz.sunset",$sunset);
sg("weather_oz.updated", date('l jS \of F Y h:i:s A'));
|
Watching movie
|
say(LANG_GENERAL_SETTING_UP_LIGHTS,2);
// to-do
|