5min
|
$t=(time());
$t=$t+10800;
$s=(u.$t);
{getURL('http://192.168.1.116/uartbrget?data='.$s, 0);}
usleep(500);
$t=gg('light.value');
$s=(l.$t);
{getURL('http://192.168.1.116/uartbrget?data='.$s, 0);} //прихожая управления лентой от освещенности улица
|
bat
|
$bat=gg('Oleg.BattLevel');
if ($bat<=15){sg("Oleg.BattIcon", 'fa-battery-empty');}
if ($bat>15 AND $bat<=45){sg("Oleg.BattIcon", 'fa-battery-quarter');}
if ($bat>45 AND $bat<=65){sg("Oleg.BattIcon", 'fa-battery-half');}
if ($bat>65 AND $bat<=95){sg("Oleg.BattIcon", 'fa-battery-three-quarters');}
if ($bat>95){sg("Oleg.BattIcon", 'fa-battery-full');}
$batZ=gg('Oleg.Charging');
if ($batZ==1){sg("Oleg.BattZ", 'fa-bolt');}
if ($batZ==0){sg("Oleg.BattZ", ' ');}
$bato=gg('Olga.BattLevel');
if ($bato<=15){sg("Olga.BattIcon", 'fa-battery-empty');}
if ($bato>15 AND $bato<= 45){sg("Olga.BattIcon", 'fa-battery-quarter');}
if ($bato>45 AND $bato<=65){sg("Olga.BattIcon", 'fa-battery-half');}
if ($bato>65 AND $bato<=95){sg("Olga.BattIcon", 'fa-battery-three-quarters');}
if ($bato>95){sg("Olga.BattIcon", 'fa-battery-full');}
$batZo=gg('Olga.Charging');
if ($batZo==1){sg("Olga.BattZ", 'fa-bolt');}
if ($batZo==0){sg("Olga.BattZ", ' ');}
$batt=gg('Tem.BattLevel');
if ($batt<=15){sg("Tem.BattIcon", 'fa-battery-empty');}
if ($batt>15 AND $batt<=45){sg("Tem.BattIcon", 'fa-battery-quarter');}
if ($batt>45 AND $batt<=65){sg("Tem.BattIcon", 'fa-battery-half');}
if ($batt>65 AND $batt<=95){sg("Tem.BattIcon", 'fa-battery-three-quarters');}
if ($batt>95){sg("Tem.BattIcon", 'fa-battery-full');}
$battZ=gg('Tem.Charging');
if ($battZ==1){sg("Tem.BattZ", 'fa-bolt');}
if ($battZ==0){sg("Tem.BattZ", ' ');}
|
do leta
|
$newDate = mktime(0, 0, 0, 6, 1, 2023); // до какой даты ч м с м д г
$seconds = $newDate - time();
if ($seconds >= 86400) {
$days = (int)($seconds / 86400);
}
sg('ThisComputer.leto', $days);
sg('ThisComputer.letod', GetNumberWord($days ,array('день','дня','дней')));
|
econom_switch
|
$mod=gg('Econom');
if ($mod){
sg('Econom',0);
}else{
sg('Econom',1);
}
|
Electroenerg
|
Показания счетчиков
$m=gg('ThisComputer.DateM');
$x=gg('Energia.value');
$y=gg('Energia.xxx');
$z=$x-$y;
$wd=isWeekDay();
if (($wd==1) && (timeBetween('17:00', '22:00'))) {
$T1=gg('Energia.T1');
$T1=$T1+$z; sg('Energia.T1',$T1);
if ($m==1) { $T1=gg('Energia.JanT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.JanT1',$T1); }
if ($m==2){ $T1=gg('Energia.FebT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.FebT1',$T1); }
if ($m==3){ $T1=gg('Energia.MarT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.MarT1',$T1); }
if ($m==4){ $T1=gg('Energia.AprT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.AprT1',$T1); }
if ($m==5){ $T1=gg('Energia.MayT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.MayT1',$T1); }
if ($m==6){ $T1=gg('Energia.JunT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.JunT1',$T1); }
if ($m==7){ $T1=gg('Energia.JulT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.JulT1',$T1); }
if ($m==8){ $T1=gg('Energia.AugT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.AugT1',$T1); }
if ($m==9) { $T1=gg('Energia.SepT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.SepT1',$T1); }
if ($m==10){ $T1=gg('Energia.OctT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.OctT1',$T1); }
if ($m==11){$T1=gg('Energia.NovT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.NovT1',$T1); }
if ($m==12){$T1=gg('Energia.DecT1');$z=$x-$y; $T1=$T1+$z; sg('Energia.DecT1',$T1);}
}
else {$T2=gg('Energia.T2'); $T2=$T2+$z; sg('Energia.T2',$T2);
if ($m==1){$Tx=gg('Energia.JanT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.JanT2',$Tx);}
if ($m==2){$Tx=gg('Energia.FebT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.FebT2',$Tx);}
if ($m==3){$Tx=gg('Energia.MarT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.MarT2',$Tx);}
if ($m==4){$Tx=gg('Energia.AprT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.AprT2',$Tx);}
if ($m==5){$Tx=gg('Energia.MayT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.MayT2',$Tx);}
if ($m==6){$Tx=gg('Energia.JunT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.JunT2',$Tx);}
if ($m==7){$Tx=gg('Energia.JulT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.JulT2',$Tx);}
if ($m==8){$Tx=gg('Energia.AugT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.AugT2',$Tx);}
if ($m==9){$Tx=gg('Energia.SepT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.SepT2',$Tx);}
if ($m==10){$Tx=gg('Energia.OctT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.OctT2',$Tx);}
if ($m==11){$Tx=gg('Energia.NovT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.NovT2',$Tx);}
if ($m==12){$Tx=gg('Energia.DecT2');$z=$x-$y; $Tx=$Tx+$z; sg('Energia.DecT2',$Tx);}
}
sg('Energia.xxx', $x);
|
Gismeteo
|
// код для рег выражений https://tools.icoder.uz/regex-tester.php
// сайт, регулярное выражение, свойство в МД, номер переменной (если одна то не указывается)
function SaveToProp ($myurl, $myreg, $mdprop, $num = 1)
{
$isMatched = preg_match($myreg, $myurl, $matches);
$res = str_replace("+", "" , $matches[$num]);
$res = str_replace(".sun", "" , $res);
$res = str_replace(".moon", "" , $res);
sg($mdprop, $res);
echo $res."</br>";
}
function SaveToPropAll ($myurl, $myreg, $mdprop, $num = 1)
{
$isMatched = preg_match_all($myreg, $myurl, $matches);
$res = $matches[1][$num];
sg($mdprop, $res);
echo $res."</br>";
}
// текущая погода
$str = file_get_contents("http://m.gismeteo.com/weather/11809/current/"); //текущая погода
SaveToProp ($str, '/<td class="weather__temp"><span>(.+?)<\/span>/', "GismeteoCurrent.Temperature");
SaveToProp ($str, '/<td class="weather__desc">(.+?)<\/td>/', "GismeteoCurrent.description");
SaveToProp ($str, '/Feels: (.+?)<\/p>/', "GismeteoCurrent.Feels");
SaveToProp ($str, '/Pressure: (.+?) mmHg<\/p>/', "GismeteoCurrent.Pressure");
SaveToProp ($str, '/Humidity: (.+?) %<\/p>/', "GismeteoCurrent.Humidity");
SaveToProp ($str, '/Geomagnetic сonditions: (.+?) points<\/p>/', "GismeteoCurrent.Geomagnetic");
SaveToProp ($str, '/Wind: (.+?) m\/s,/', "GismeteoCurrent.Wind");
SaveToProp ($str, '/ m\/s, (.+?)<\/p>/', "GismeteoCurrent.Wind_direction");
SaveToProp ($str, '/Sunrise: (.+?)<\/p>/', "GismeteoCurrent.Sunrise");
SaveToProp ($str, '/Sunset: (.+?)<\/p>/', "GismeteoCurrent.Sunset");
SaveToProp ($str, '/Day length: (.+?)<\/p>/', "GismeteoCurrent.Day_length");
SaveToProp ($str, '/Moon: (.+?) %,/', "GismeteoCurrent.Moon");
SaveToProp ($str, '/ %, (.+?)<\/p>/', "GismeteoCurrent.Moon_type");
SaveToProp ($str, '/<div class="title">(.+?), (.+?) (.+?), (.+?)<\/div>/', "GismeteoCurrent.date_day", 2);
SaveToProp ($str, '/<div class="title">(.+?), (.+?) (.+?), (.+?)<\/div>/', "GismeteoCurrent.date_month", 3);
SaveToProp ($str, '/<div class="title">(.+?), (.+?) (.+?), (.+?)<\/div>/', "GismeteoCurrent.date_time", 4);
SaveToProp ($str, '/<td class="weather__icon"><img alt="" src="\/static\/images\/icons\/wap2\/(.+?)\.png" \/><\/td>/', "GismeteoCurrent.Image");
// функция для параметров погоды детально
function Detail($myurl, $param0, $param1, $param2) {
SaveToPropAll ($myurl, '/<div class="title">(.+?)<\/div>/', $param0 . "." . $param1 . "TimesofDay", $param2 + 1);
SaveToPropAll ($myurl, '/<td class="weather__temp"><span>(.+?)<\/span>/', $param0.".".$param1."Temperature", $param2);
SaveToPropAll ($myurl, '/<td class="weather__desc">(.+?)<\/td>/', $param0.".".$param1."Description", $param2);
SaveToPropAll ($myurl, '/Feels: (.+?)<\/p>/', $param0.".".$param1."Feels", $param2);
SaveToPropAll ($myurl, '/Pressure: (.+?) mmHg<\/p>/', $param0.".".$param1."Pressure", $param2);
SaveToPropAll ($myurl, '/Humidity: (.+?) %<\/p>/', $param0.".".$param1."Humidity", $param2);
SaveToPropAll ($myurl, '/Geomagnetic сonditions: (.+?) points<\/p>/', $param0.".".$param1."Geomagnetic", $param2);
}
$str = file_get_contents("http://m.gismeteo.com/weather/11809/detailday/"); //погода подробно на текущий день
Detail ($str, "GismeteoDetailday", "Night", 0 );
Detail ($str, "GismeteoDetailday", "Morning", 1 );
Detail ($str, "GismeteoDetailday", "Day", 2 );
Detail ($str, "GismeteoDetailday", "Evening", 3 );
$str = file_get_contents("http://m.gismeteo.com/weather/11809/detailday/1/"); //погода подробно на завтра
Detail ($str, "GismeteoDetailday1", "Night", 0 );
Detail ($str, "GismeteoDetailday1", "Morning", 1 );
Detail ($str, "GismeteoDetailday1", "Day", 2 );
Detail ($str, "GismeteoDetailday1", "Evening", 3 );
$str = file_get_contents("http://m.gismeteo.com/weather/11809/detailday/2/"); //погода подробно на послезавтра
Detail ($str, "GismeteoDetailday2", "Night", 0 );
Detail ($str, "GismeteoDetailday2", "Morning", 1 );
Detail ($str, "GismeteoDetailday2", "Day", 2 );
Detail ($str, "GismeteoDetailday2", "Evening", 3 );
$str = file_get_contents("http://m.gismeteo.com/weather/11809/detailday/3/"); //погода подробно через 2 дня
Detail ($str, "GismeteoDetailday3", "Night", 0 );
Detail ($str, "GismeteoDetailday3", "Morning", 1 );
Detail ($str, "GismeteoDetailday3", "Day", 2 );
Detail ($str, "GismeteoDetailday3", "Evening", 3 );
|
OneMin
|
if (gg('EconomMode.active')==1){ //Проверка режима экономии
if (gg('Prihozhaya.SomebodyHere')==0){ //если нет активности в прихожей
if (gg('Relay04.status')==1){ // Если горит свет в прихожей
getURL ("http://192.168.1.113/gpio&st=0&pin=12",0); //выключаем свет в прихожей
say ('Не было движения в прихожей и я выключила свет');
} // Если горит свет в прихожей
if (gg('Led.value')==1){ // Если горит led лента в прихожей
getURL('http://192.168.1.116/uartbrget?data=r0', 0); //выключение лент ы
say ('Не было движения в прихожей и я выключила ленту');
} // Если горит свет в прихожей
} //если нет активности в прихожей
if (gg('Zal.SomebodyHere')==0){ //если нет активности в зале
if (gg('Relay10.status')==1){ // Если горит свет 1 в зале
getURL ("http://192.168.1.109/gpio&st=0&pin=12",0); //выключаем свет 1 в зале
say ('Не было движения в зале и я выключила свет');
} // Если горит свет 1 в зале
if (gg('Relay03.status')==1){ // Если горит свет 4 в зале
getURL ("http://192.168.1.109/gpio&st=0&pin=14",0); //выключаем свет 4 в зале
say ('Не было движения в зале и я выключила свет');
} // Если горит свет 4 в зале
if (gg('Relay25.status')==1){ // Если горит свет стол зал
getURL ("http://192.168.1.51/gpio&st=0&pin=12",0); //выключаем свет стол зал
say ('Не было движения в зале и я выключила свет');
} // Если горит свет стол зал
if (gg('Tv01.status')==1 && (timeBetween('03:00', '08:00'))){ // Если включен телевизор и время попадает в интервалЫ
getURL ("http://192.168.1.50/gpio&st=0&pin=13",0); //выключаем телик
say ('Не было движения в зале и я выключила телевизор');
} // Если включен телевизор
} //если нет активности в зале
if (gg('Vannaya.SomebodyHere')==0){ //если нет активности в ванной
if (gg('Relay06.status')==1){ // Если горит свет в ванной
getURL ("http://192.168.1.105/gpio&st=0&pin=16",0); //выключаем свет в ванной
say ('Не было движения в ванной и я выключила свет');
} // Если горит свет в ванной
} //если нет активности в ванной
if (gg('Kuhnya.SomebodyHere')==0){ //если нет активности кухня
if (gg('Relay08.status')==1){ // Если горит свет кухня
getURL ("http://192.168.1.107/gpio&st=0&pin=16",0); //выключаем свет кухня
say ('Не было движения на кухни я выключила свет');
} // Если горит свет кухня
if (gg('SwetKuRgb.status')==1){ // Если горит свет кухня led RGB
getURL ("http://192.168.1.107/gpio&st=0&pin=15",0); //выключаем свет кухня led
say ('Не было движения на кухни и я выключила свет');
} // Если горит свет кухня
if (gg('espRelay20.status')==1){ // Если горит свет кухня led_W
getURL ("http://192.168.1.117/gpio&st=0&pin=2",0); //выключаем свет кухня led
say ('Не было движения на кухни и я выключила свет led_W ');
} // Если горит свет кухня
} //если нет активности кухня
if (gg('Spalnya.SomebodyHere')==0){ //если нет активности в спальне
if (gg('Relay05.status')==1){ // Если горит свет в спальне
getURL ("http://192.168.1.104/gpio&st=0&pin=12",0); //выключаем свет в спальне
say ('Не было движения в спальне и я выключила свет');
} // Если горит свет в спальне
if (gg('Tv02.status')==1 && (timeBetween('01:00', '10:00'))) { // Если включен телевизор и время попадает в интервал
getURL ("http://192.168.1.106/gpio&st=0&pin=13",0); //выключаем телик
say ('Не было движения в спальне и я выключила телевизор');
} // Если включен телевизор*
} //если нет активности в спальне
if (gg('Balkon.SomebodyHere')==0){ //если нет активности балкон
if (gg('Relay02.status')==1){if (gg('Spalnya.SomebodyHere')==0){ // Если горит свет балкон
getURL ("http://192.168.1.103/gpio&st=0&pin=12",0); //выключаем свет балкон
say ('Не было движения балкон спальня и я выключила свет');
}} // Если горит свет балкон
if (gg('Relay09.status')==1 && (timeBetween('02:00', '06:00'))){if (gg('Komp.online')==0){ // Если комп включен и не в сети
getURL ("http://192.168.1.102/gpio&st=0&pin=13",0); //выключаем комп
say ('Не было движения балкон и комп не в сети выключила комп');
}} // комп
if (gg('Relay07.status')==1){ // Если горит свет балкон
getURL ("http://192.168.1.103/gpio&st=0&pin=16",0); //выключаем свет балкон
say ('Не было движения на балконе и я выключила свет');
} // Если горит свет балкон
if (gg('Relay11.status')==1){ // Если вкл мои приборы
getURL ("http://192.168.1.102/gpio&st=0&pin=12",0); //выключаем приборы
say ('Не было движения на балконе я выключила приборы');
} // Если вкл мои приборы
if (gg('Relay31.status')==1){ // Если вкл лампа
getURL ("http://192.168.1.102/gpio&st=0&pin=14",0); //выключаем лампу
say ('Небыло движения на балконе я выключила лампу');
} // Если вкл лампа
} //если нет активности балкон
} //проверка режима экономии
if (gg('NobodyHomeMode.active')==1)
{if (gg('Relay09.status')==1){ // Если Включен комп
if (gg('Oleg.online')==0){// Если Олег не дома
getURL ("http://192.168.1.102/gpio&st=0&pin=13",0); //выключаем компьютер
say ('Никого нет дома, я выключила компьютер');
} }
if (gg('NobodyHomeMode.z')==1){
rs('AllOff');
setGlobal('NobodyHomeMode.z',0); }} //если никого нет дома, выклюить все
if (gg('NobodyHomeMode.active')==0){if (gg('NobodyHomeMode.z')==0){setGlobal('NobodyHomeMode.z',1);}} //если никого нет дома, выклюить все
if (gg('light.value')<=100) { if (gg('DarknessMode.active')==0) {sg ('DarknessMode.active', 1);}} //темное время суток
if (gg('light.value')>=150) { if (gg('DarknessMode.active')==1) {sg ('DarknessMode.active', 0);}} //светлое время суток
|
pcparam
|
температура процессора
$temp0 = file_get_contents ("/sys/class/thermal/thermal_zone0/temp");
sg('pctemp',$temp0);
//CPU temp
$cpu_temp=shell_exec('cat /sys/class/thermal/thermal_zone0/temp') / 1000;
$cpu_temp=round($cpu_temp,1);
sg("CPU_temp",$cpu_temp);
//CPU usage
$cpu_usage=exec("top -bn 1 | awk '{print $9}' | tail -n +8 | awk '{s+=$1} END {print s}'");
sg("CPU_usage",$cpu_usage);
//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];
sg("System_uptime",$sys_uptime);
//Memory usage/total
$mem_total=exec("cat /proc/meminfo | grep MemTotal | awk '{print $2}'");
$mem_usage=$mem_total - exec("cat /proc/meminfo | grep MemFree | awk '{print $2}'");
$sys_memory=round($mem_usage * 100 / $mem_total, 1);
sg("System_memory",$sys_memory);
//Memory Card
$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);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('System_freespace',$temp);
//CPU 1 5 15
$cpu_load=shell_exec('cat /proc/loadavg');
$pos1 = strpos($cpu_load," ");
$pos2 = strpos($cpu_load," ",$pos1+1);
$pos3 = strpos($cpu_load," ",$pos2+1);
$cpu_load1 = substr($cpu_load,0,$pos1);
$cpu_load5 = substr($cpu_load,$pos1+1,$pos2-$pos1-1);
$cpu_load15 = substr($cpu_load,$pos2+1,$pos3-$pos2-1);
sg("cpu_load1",$cpu_load1);
sg("cpu_load5",$cpu_load5);
sg("cpu_load15",$cpu_load15);
//mem info
$mem_info=shell_exec('cat /proc/meminfo');
$pos1 = strpos($mem_info,"MemTotal");
$pos2 = strpos($mem_info,"MemFree");
$pos3 = strpos($mem_info,"Cached");
$pos4 = strpos($mem_info,"SwapTotal");
$pos5 = strpos($mem_info,"SwapFree");
$mem_total = substr($mem_info,$pos1+11,13)*1;
$mem_free = substr($mem_info,$pos2+11,13)*1;
$mem_cached = substr($mem_info,$pos3+11,13)*1;
$mem_swap_total = substr($mem_info,$pos4+11,13)*1;
$mem_swap_free = substr($mem_info,$pos5+11,13)*1;
$mem_swap_used = $mem_swap_total - $mem_swap_free;
$mem_used = $mem_total - $mem_free - $mem_cached;
sg("mem_total",$mem_total);
sg("mem_free",$mem_free);
sg("mem_cached",$mem_cached);
sg("mem_swap_total",$mem_swap_total);
sg("mem_swap_free",$mem_swap_free);
sg("mem_swap_used",$mem_swap_used);
sg("mem_used",$mem_used);
$sd_info=shell_exec('df /');
$pos0 = strpos($sd_info,"dev");
$pos1 = strpos($sd_info," ",$pos0+5);
$pos2 = strpos($sd_info," ",$pos1+3);
$pos3 = strpos($sd_info," ",$pos2+3);
$pos4 = strpos($sd_info," ",$pos3+4);
$sd_total = substr($sd_info,$pos1,$pos2-$pos1)*1;
$sd_used = substr($sd_info,$pos2,$pos3-$pos2)*1;
$sd_free = substr($sd_info,$pos3,$pos4-$pos3)*1;
sg("sd_total",$sd_total);
sg("sd_used",$sd_used);
sg("sd_free",$sd_free);
|
POGODA
|
$days=array('воскресенье','понедельник','вторник','среда','четверг','пятница','суббота');
$day_num_0=date("w");
$day_of_week_1=$days[$day_num_0];
sg('weather.nv_time_1',$day_of_week_0);
$day_num_1=$day_num_0 + 1;
if ($day_num_1>6){$day_num_1 = $day_num_1 - 7;}
$day_of_week_1=$days[$day_num_1];
sg('weather.nv_time_2',$day_of_week_1);
$day_num_2=$day_num_1 + 1;
if ($day_num_2>6){$day_num_2 = $day_num_2 - 7;}
$day_of_week_2=$days[$day_num_2];
sg('weather.nv_time_3',$day_of_week_2);
$day_num_3=$day_num_2 + 1;
if ($day_num_3>6){$day_num_3 = $day_num_3 - 7;}
$day_of_week_3=$days[$day_num_3];
sg('weather.nv_time_4',$day_of_week_3);
$day_num_4=$day_num_3 + 1;
if ($day_num_4>6){$day_num_4 = $day_num_4 - 7;}
$day_of_week_4=$days[$day_num_4];
sg('weather.nv_time_5',$day_of_week_4);
$day_num_5=$day_num_4 + 1;
if ($day_num_5>6){$day_num_5 = $day_num_5 - 7;}
$day_of_week_5=$days[$day_num_5];
sg('weather.nv_time_6',$day_of_week_5);
$day_num_6=$day_num_5 + 1;
if ($day_num_6>6){$day_num_6 = $day_num_6 - 7;}
$day_of_week_6=$days[$day_num_6];
sg('weather.nv_time_7',$day_of_week_6);
$day_num_7=$day_num_6 + 1;
if ($day_num_7>6){$day_num_1 = $day_num_7 - 7;}
$day_of_week_7=$days[$day_num_7];
sg('weather.nv_time_8',$day_of_week_7);
require_once '/var/www/lib/phpQuery/phpQuery.php';
//$city = 26017; // поменять на свой
$url= 'https://yandex.by/pogoda/smarhon?lat=54.481658&lon=26.4026';
$str = file_get_contents($url);
$str = str_replace('−', '-', $str);
$dom = phpQuery::newDocument($str);
// считываем данные на несколько дней вперед
foreach($dom->find(".forecast-briefly__day-link") as $key => $value){
// Преобразуем dom объект в объект phpQuery.
//Делаем сие действие с помощью метода pq(); который является аналогом ($) в jQuery.
$pq = pq($value);
//$pq = str_replace('−', '-', $pq);
// Находим в этом элементе элементы
$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.day".$i,$day[$i]["day"] );
sg("weather.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.icon".$i,$day[$i]["icon"] );
sg("weather.temp_day".$i,$day[$i]["temp_day"] );
sg("weather.temp_night".$i,$day[$i]["temp_night"] );
sg("weather.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.hour_time".$j,$hours[$i]["time"] );
sg("weather.hour_icon".$j,$hours[$i]["icon"] );
sg("weather.hour_temp".$j,$hours[$i]["temp"] );
$j+=1;
}
sg("weather.fact_temp",$fact["temp"] );
sg("weather.fact_icon",$fact["icon"] );
sg("weather.fact_feel",$fact["feel"] );
sg("weather.fact_wind",$fact["wind"] );
sg("weather.fact_wind_word",$fact["wind_word"] );
sg("weather.fact_wind_dir",$fact["wind_dir"] );
sg("weather.fact_hum",$fact["hum"] );
sg("weather.fact_hum_word",$fact["hum_word"] );
sg("weather.fact_press",$fact["press"] );
sg("weather.fact_press_word",$fact["press_word"] );
// заменить 10 на количество необходимых прогнозируемых дней
for ($i = 1; $i <= 10; $i++) {
// все глобальные свойства ниже создадутся автоматически, необходимо создать только weather
sg("weather.day".$i,$day[$i]["day"] );
sg("weather.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.icon".$i,$day[$i]["icon"] );
sg("weather.temp_day".$i,$day[$i]["temp_day"] );
sg("weather.temp_night".$i,$day[$i]["temp_night"] );
sg("weather.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.sunrise",$sunrise);
sg("weather.sunset",$sunset);
sg("weather.updated", date('l jS \of F Y h:i:s A'));
|
security
|
$mod=gg('securityMode');
if ($mod){
sg('securityMode',0);
}else{
sg('securityMode',1);
}
|
Yandex pogoga
|
//Получаем данные от Яндекса, region= указывает на код региона
$getYandexPogoda = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region=26017'));
$getYandexPogoda = json_decode(json_encode($getYandexPogoda), TRUE);
//Меняем некрасивые картинки на красивые, анимированные
$arrayIcon = [
'bkn_d.png' => '/var/www/templates/yandexweather/img/skin/animated/cloudy-day-3.svg',
'bkn_n.png' => '/var/www/templates/yandexweather/img/skin/animated/cloudy-night-3.svg',
'ovc.png' => '/var/www/templates/yandexweather/img/skin/animated/cloudy.svg',
'ovc_-sn.png' => '/var/www/templates/yandexweather/img/skin/animated/snowy-4.svg',
'ovc_sn.png' => '/var/www/templates/yandexweather/img/skin/animated/snowy-5.svg',
'ovc_-ra.png' => '/var/www/templates/yandexweather/img/skin/animated/rainy-4.svg',
'ovc_ra.png' => '/var/www/templates/yandexweather/img/skin/animated/rainy-5.svg',
'ovc_ts_ra.png' => '/var/www/templates/yandexweather/img/skin/animated/thunder.svg',
'skc_d.png' => '/var/www/templates/yandexweather/img/skin/animated/day.svg',
'skc_n.png' => '/var/www/templates/yandexweather/img/skin/animated/night.svg',
'fg_d.png' => '/var/www/templates/yandexweather/img/skin/animated/cloudy.svg',
'bl.png' => '/var/www/templates/yandexweather/img/skin/animated/snowy-6.svg',
'bkn_-ra_d.png' => '/var/www/templates/yandexweather/img/skin/animated/rainy-2.svg',
'bkn_-ra_n.png' => '/var/www/templates/yandexweather/img/skin/animated/cloudy-night-3.svg',
'bkn_-sn_d.png' => '/var/www/templates/yandexweather/img/skin/animated/snowy-2.svg',
'bkn_-sn_n.png' => '/var/www/templates/yandexweather/img/skin/animated/cloudy-night-3.svg',
'bkn_ra_d.png' => '/var/www/templates/yandexweather/img/skin/animated/rainy-1.svg',
'bkn_ra_n.png' => '/var/www/templates/yandexweather/img/skin/animated/rainy-1.svg',
'bkn_sn_d.png' => '/var/www/templates/yandexweather/img/skin/animated/snowy-1.svg',
'bkn_sn_n.png' => '/var/www/templates/yandexweather/img/skin/animated/snowy-1.svg',
'ovc_ra_sn.png' => '/var/www/templates/yandexweather/img/skin/animated/rainy-5.svg',
];
//Цикл для перебора данных
foreach($getYandexPogoda[weather][day][day_part] as $key => $array) {
//Самый первый массив - в нем данные о текущей погоде
if($key == 0) {
//Текущая температура
sg('System_YandexWeather.nowTemp', $array["temperature"]);
//Иконка
$searchIcon = explode('/', $getYandexPogoda["weather"]["day"]["day_part"][$key]["image-v3"]);
sg('System_YandexWeather.nowWeatherIcon', $arrayIcon[$searchIcon[8]]);
//Скорость ветра
sg('System_YandexWeather.nowWindSpeed', $array["wind_speed"]);
//Направление ветра
sg('System_YandexWeather.nowWindDirection', $array["wind_direction"]);
continue;
}
if(isset($getYandexPogoda["weather"]["day"]["day_part"][$key]["temperature"])) {
$searchTemp = $getYandexPogoda["weather"]["day"]["day_part"][$key]["temperature"];
} else {
$searchTemp = $getYandexPogoda["weather"]["day"]["day_part"][$key]["temperature_from"];
}
//Раскидываем данные по принципу temp_1, temp_2, temp_3, temp_4 это утро, день, вечер, ночь
sg('System_YandexWeather.name_'.$key, $getYandexPogoda["weather"]["day"]["day_part"][$key]["@attributes"]["type"]);
sg('System_YandexWeather.temp_'.$key, $searchTemp);
$searchIcon = explode('/', $getYandexPogoda["weather"]["day"]["day_part"][$key]["image-v3"]);
sg('System_YandexWeather.WeatherIcon_'.$key, $arrayIcon[$searchIcon[8]]);
}
//Время обновления
sg('System_YandexWeather.update', date('d.m.Y H:i', time()));
echo 'ok';
|
Показания
|
sg('ThisComputer.pokaz', 'СДАТЬ ПОКАЗАНИЯ');
|
ENERGY
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио ENERGY');
cm('RadioSetting.Control', array('sta:ENERGY'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
setGlobal("RadioSetting.RadioImg",'Energy.png');
|
Radio_Off
|
cm('RadioSetting.Control', array('stop'));
setGlobal("Radio.RadioLedOn",0);
say('Радио выключено');
|
Radio_On
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио');
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
Relax FM
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Relax FM');
cm('RadioSetting.Control', array('sta:Relax FM'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
setGlobal("RadioSetting.RadioImg",'Relax.png');
|
Volume_Minus
|
$vol = gg("ThisComputer.volumeMediaLevel");
if ($vol > 10){
cm('RadioSetting.Control',array('vol'=> $vol-10 ));
} else {
cm('RadioSetting.Control',array('vol'=> 0 ));
}
|
Volume_Plus
|
$vol = gg("ThisComputer.volumeMediaLevel");
if ($vol < 100){
cm('RadioSetting.Control' ,array('vol'=> $vol+10 ));
} else {
cm('RadioSetting.Control',array('vol'=> 100 ));
}
|
Авторадио
|
setGlobal("RadioSetting.RadioImg",'AvtoRadio.png');
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Авторадио');
cm('RadioSetting.Control', array('sta:Авторадио'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
Европпа+
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Европпа+');
cm('RadioSetting.Control', array('sta:Европпа+'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
setGlobal("RadioSetting.RadioImg",'Evropa.png');
|
Радио дача
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио дача');
cm('RadioSetting.Control', array('sta:Радио дача'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
setGlobal("RadioSetting.RadioImg",'Dacha_FM.png');
|
Русское радио
|
setGlobal("RadioSetting.RadioImg",'Russkoe_Radio.png');
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Русское радио');
cm('RadioSetting.Control', array('sta:Русское радио Минск'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
Супер Дискотэка
|
setGlobal("RadioSetting.RadioImg",'super90.png');
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Супер Дискотэка');
cm('RadioSetting.Control', array('sta:Супер Дискотэка'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
Шансон
|
setGlobal("RadioSetting.RadioImg",'Shanson.png');
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Шансон');
cm('RadioSetting.Control', array('sta:Шансон'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
Юмор FM
|
cm('RadioSetting.Control', array('stop'));
say('Включаю радио Юмор FM');
cm('RadioSetting.Control', array('sta:Юмор FM'));
cm('RadioSetting.Control', array('play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
cam
|
$n = $params['url'];
$m = $params['coun'];
$s = $params['vid'];
//$n = "https://youtu.be/JYBpu1OyP0c";
//$m = "5";
shell_exec("/var/www/cam/1 $n $m $s");
|
ClearVideo
|
sg('ThisComputer.StreamingCode',' ');
|
jxbcnf
|
SQLExec("DELETE phistory.* FROM phistory LEFT JOIN pvalues ON phistory.VALUE_ID = pvalues.id WHERE pvalues.id IS NULL");
|
pogoga
|
$url=$params['url'];
$w=$params['w'];
$h=$params['h'];
if ($url==""){
$url='https://smorgon.000webhostapp.com/2';
// $url='http://keha:Keha7119@82.209.229.111/popup/scenes/18.html';
}
if ($w==""){$w=200;}
if ($h==""){$h=900;}
$fc=file_get_contents('http://api.rest7.com/v1/html_to_image.php?url=https://smorgon.000webhostapp.com/2&format=jpg');
//$fc=file_get_contents('http://api.rest7.com/v1/html_to_image.php?url='. $url .'&format=jpg');
echo $fc;
$data = json_decode($fc);
if (@$data->success !== 1)
{
die('Failed');
}
$image = file_get_contents($data->file);
$save_to="/var/www/backup/scr.jpg"; // куда сохранять
//file_put_contents($save_to, $image);
SaveFile($save_to, $image);
$image = new Imagick($save_to);
$image->cropImage($h,$w, 0,0);
$image->writeImage($save_to.'1');
|
RestartCiklov
|
setGlobal('cycle_mainControl','restart');
|
timeNow
|
|
UNIX
|
$days=array('воскресенье','понедельник','вторник','среда','четверг','пятница','суббота');
$day_num_0=date("w");
$day_of_week_0=$days[$day_num_0];
sg('yw_mycity.nv_time_0',$day_of_week_0);
$day_num_1=$day_num_0 + 1;
$day_of_week_1=$days[$day_num_1];
sg('yw_mycity.nv_time_1',$day_of_week_1);
$date=gg('smarhon.forecast_2_date');
$day_num_2=strftime("%w", strtotime($date));
$day_of_week_2=$days[$day_num_0];
sg('yw_mycity.nv_time_2',$day_of_week_2);
$date3=gg('smarhon.forecast_3_date');
$day_num_3=strftime("%w", strtotime($date3));
$day_of_week_3=$days[$day_num_3];
sg('yw_mycity.nv_time_3',$day_of_week_3);
$date=gg('smarhon.forecast_4_date');
$day_num_4=strftime("%w", strtotime($date));
$day_of_week_4=$days[$day_num_0];
sg('yw_mycity.nv_time_4',$day_of_week_4);
$date=gg('smarhon.forecast_5_date');
$day_num_5=strftime("%w", strtotime($date));
$day_of_week_5=$days[$day_num_0];
sg('yw_mycity.nv_time_5',$day_of_week_5);
$date=gg('smarhon.forecast_6_date');
$day_num_6=strftime("%w", strtotime($date));
$day_of_week_6=$days[$day_num_0];
sg('yw_mycity.nv_time_6',$day_of_week_6);
$date=gg('smarhon.forecast_7_date');
$day_num_7=strftime("%w", strtotime($date));
$day_of_week_7=$days[$day_num_0];
sg('yw_mycity.nv_time_7',$day_of_week_7);
|
xxvid
|
//http://majordomo.smartliving.ru/forum/viewtopic.php?f=18&t=2097
//Показать видео на сцене home_hd
$sc='<p align="center">
<iframe src="http://192.168.1.33/GetData.cgi?CH=1" FRAMEBORDER=0 WIDTH="800" HEIGHT="600"></iframe>
</p>';
sg('ThisComputer.StreamingCode',$sc);
//Таймер чтобы убрать видео
setTimeOut("Scene_video_on_time","sg('ThisComputer.StreamingCode',' ');",15);
|
Грабер сайтов
|
// Первоисточник кода http://blogo-daru.ru/2016/11/27/dobavit-kontent-s-drugogo-sajta-k-sebe-na-sajt/
// с кодировкой возможны проблемы, поэтому если вдруг появятся каркозябры, попробуйте добавить следующую строчку кода
header('Content-Type: text/html; charset=windows-1251');
// сторонняя страница сайта, с которой будем брать контент.
$content = file_get_contents('http://calendar.yoip.ru/countdown/summer-2019.html');
// определяем начало необходимого фрагмента кода, до которого мы удалим весь контент
$pos = strpos($content, '<div id="года осталось:">');
// удаляем все до нужного фрагмента
$content = substr($content, $pos);
// находим конец необходимого фрагмента кода (начало ненужного уже кода)
$pos = strpos($content, '<div id="Лето 2019 начинается">');
// отрезаем нужное количество символов от конца фрагмента
$content = substr($content, 20, $pos);
//если в нужном контенте встречается не нужный кусок текста, то его вырезаем (Точнее тут происходит замена на "ничего") этот кусок кода можно повторять несколько раз, для удаления всего лишнего.
$content = str_replace('года осталось:','', $content);
// выводим необходимый контент.
//debmes($content);
// очищаем полученный код от лишних тэгов, перечисляем только те которые удалять не надо. https://php.ru/manual/function.strip-tags.html
$content = strip_tags($content, '<H2><p><a>');
// Заменяем куски кода на нужное нам (здесь после очистки из-за особенностей кода пришлось перед каждой большой точкой вначале строки вставить перенос строки ) https://php.ru/manual/function.str-ireplace.html
//На самом деле это можно делать и в коде выше, там где мы удаляем лишнее, но здесь мне показалось это удобнее и логичнее для формирования конечного вида плюс внесена регистро-независимость. Код так же можно дублировать по несколько раз.
$content = str_ireplace("•", "<br> •", $content);
//записываем в свойство
sg('out_ip.value_old',$content);
|
погода
|
function getinfoDataXml($city = 26017) {
$info = array();
$cache_file = $_SERVER['DOCUMENT_ROOT']."/cached/weather.txt";
$url='http://export.yandex.ru/bar/reginfo.xml?region='.$city.'.xml';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents($cache_file, $data);
$buf = file_get_contents($url);
if ($buf) file_put_contents($cache_file, $buf);
$xml = simplexml_load_file($cache_file);
$info['temp'] = $xml->weather->day->day_part[0]->temperature;
$info['image'] = $xml->weather->day->day_part[0]->image;
$info['image'] = str_replace("https://yastatic.net/weather/i/icons/blueye/24/", '/cms/scenes/new/icons/', $info['image']);
$info['image'] = str_replace("png", "svg", $info['image']);
$info['weather_type'] = $xml->weather->day->day_part[0]->weather_type;
$info['level']= $xml->traffic->region->level;
$info['icon']= $xml->traffic->region->icon;
$info['hint lang']= $xml->traffic->region->hint[0];
return $info;
}
$info = getinfoDataXml();
sg("weather.temp",$info['temp']);
sg("weather.image",$info['image']);
sg("weather.weather_type",$info['weather_type']);
sg("probki.level",$info['level']);
sg("probki.icon",$info['icon']);
sg("probki.hintlang",$info['hint lang']);
|
пример
|
/*создаём сценарий в разделе "Сценарии"
Badroom_vent_off
далее код:
if (gg('CO2SpBol.CO2') < 1000 && (timeBetween('23:00', '08:00'))?1:0) {
// если текущее время между 23 и 8 утра, то вытяжка выключается при co2 ниже 1000
sg('NoolightRelay01.status', 0);
}
if (gg('CO2SpBol.CO2') > 1150) {
// если co2 больше 1150, то вытяжка включается
sg('NoolightRelay01.status', 1);
}
далее нажимаем: Автоматический запуск сценария - Да
и появляется поле "Да (Связанный объект: CO2SpBol.CO2)"
собственно и всё
при изменении связанного значения автоматически запускается сценарий и идёт проверка по условию
для общего развития:
gg('CO2SpBol.CO2' - получение значения переменной CO2 из объекта CO2SpBol
sg('NoolightRelay01.status', 1); - включение реле NoolightRelay01
sg('NoolightRelay01.status', 0); - выключение реле NoolightRelay01
gg - GetGlobal
sg - SetGlobal
GetNumberWord($x,array('день','дня','дней'))
GetNumberWord($x,array('градус','градуса','градусов')) //склонение
|
функции
|
//Запишем все доступные функции в переменную
$arr=get_defined_functions();
// Отсортируем по алфавиту для читабельности
sort($arr['internal']);
sort($arr['user']);
$i=1;
echo ('<table><tr>');
foreach ($arr['user'] as $key => $name ) {
echo ('<td>'.$key.' --> '.$name.' </td>');
if (!($i%4)) {
echo ('</tr><tr>');
}
$i++;
}
if ($i%4) {echo ('</tr>');}
echo ('</table>');
|