okrugl
|
$usd=gg('ThisComputer.dollarrur1');
$dusd =round($usd, 2);
setGlobal('ThisComputer.dollarrur', $dusd);
$eur=gg('ThisComputer.eurorur1');
$deur =round($eur, 2);
setGlobal('ThisComputer.eurorur', $deur);
|
rassvet
|
clearTimeout(aquatimez);
clearTimeout(aquatimez2);
clearTimeout(aquatimez3);
clearTimeout(aquatimez4);
$br1=gg("Dimmer01.level");
if ($br1>=0 && $br1<=80){
$br1=$br1+1;
sg('Dimmer01.level', $br1);
SetTimeOut("aquatime",'runScript("rassvet");', 10);
}
if ($br1>=80 && $br1<100){
$br1=$br1+1;
sg('Dimmer01.level', $br1);
SetTimeOut("aquatime2",'runScript("rassvet");', 30);
}
if ($br1>90){
callMethod('Relay08.turnOn');
//runScript('rassvet2');
}
|
rassvet2
|
$br2=gg("Dimmer02.levelWork");
if ($br2>=0 && $br2<=245){
$br2=$br2+2;
setGlobal('Dimmer02.levelWork', $br2);
SetTimeOut("aquatime3",'runScript("rassvet2");', 20);
if ($br2>=230){
callMethod('Relay08.turnOn');
}
}
|
Reboot
|
say("Подготовка к перезагрузке",2);
say("Сервер будет перезагружен через 15 секунд",1);
say("Сохранение БД",1);
$filename = '/var/www/backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
setTimeout("shutdownTimer","safe_exec('sudo shutdown -r now');",15);
|
systemTimer
|
//CronLXnsk
if (getGlobal('Sensor_light02.value10') > 1000) {
setGlobal("Lxnsk.Enable",1);
} else {
setGlobal("Lxnsk.Enable",0);
}
//CronLXspb
if (getGlobal('Sensor_light01.value10') > 300) {
setGlobal("Lxspb.Enable",1);
} else {
setGlobal("Lxspb.Enable",0);
}
/*
if (timeIs("14:05")) {
setGlobal("Lxnsk.Enable",0);
}
if (timeIs("15:30")) {
setGlobal("Lxnsk.Enable",1);
}
//CronLXspb
if (timeIs("01:00")) {
setGlobal("Lxspb.Enable",0);
}
if (timeIs("11:00")) {
setGlobal("Lxspb.Enable",1);
}
*/
|
ya
|
//Получаем данные от Яндекса, region= указывает на код региона
$getYandexPogoda = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region=65'));
$getYandexPogoda = json_decode(json_encode($getYandexPogoda), TRUE);
//Меняем некрасивые картинки на красивые, анимированные
$arrayIcon = [
'bkn_d.png' => 'cloudy-day-3.svg',
'bkn_n.png' => 'cloudy-night-3.svg',
'ovc.png' => 'cloudy.svg',
'ovc_-sn.png' => 'snowy-6.svg',
'ovc_sn.png' => 'snowy-7.svg',
'ovc_-ra.png' => 'rainy-4.svg',
'ovc_ra.png' => 'rainy-5.svg',
'ovc_ts_ra.png' => 'thunder.svg',
'skc_d.png' => 'day.svg',
'skc_n.png' => 'night.svg',
'fg_d.png' => 'cloudy.svg',
'bl.png' => 'snowy-6.svg',
'bkn_-ra_d.png' => 'rainy-2.svg',
'bkn_-ra_n.png' => 'cloudy-night-3.svg',
'bkn_-sn_d.png' => 'snowy-2.svg',
'bkn_-sn_n.png' => 'cloudy-night-3.svg',
'bkn_-sn_d.png' => 'snowy-2.svg',
'bkn_-sn_n.png' => 'cloudy-night-3.svg',
'bkn_ra_d.png' => 'rainy-1.svg',
'bkn_ra_n.png' => 'rainy-1.svg',
'bkn_sn_d.png' => 'snowy-1.svg',
'bkn_sn_n.png' => 'snowy-1.svg',
'ovc_ra_sn.png' => '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';
|
zakat
|
clearTimeout(aquatime);
clearTimeout(aquatime2);
clearTimeout(aquatime3);
callMethod('Relay08.turnOff');
//setGlobal('Dimmer02.levelWork', 0);
$brz1=gg("Dimmer01.levelWork");
if ($brz1>50 && $brz1<=270){
$brz1=$brz1-10;
setGlobal('Dimmer01.levelWork', $brz1);
SetTimeOut("aquatimez",'runScript("zakat");', 10);
if ($brz1<250){
callMethod('Relay08.turnOff');
}
}
if ($brz1>20 && $brz1<=50){
$brz1=$brz1-3;
setGlobal('Dimmer01.levelWork', $brz1);
SetTimeOut("aquatimez2",'runScript("zakat");', 10);
}
if ($brz1>0 && $brz1<=20){
$brz1=$brz1-1;
setGlobal('Dimmer01.levelWork', $brz1);
SetTimeOut("aquatimez3",'runScript("zakat");', 10);
}
|
zakat2
|
$brz2=gg("Dimmer02.levelWork");
if ($brz2>0 && $brz2<=270){
$brz2=$brz2-1;
setGlobal('Dimmer02.levelWork', $brz2);
SetTimeOut("aquatimez4",'runScript("zakat2");', 5);
}
|
статус фитонск
|
if (getGlobal('Sensor_light02.value10') > 1000) {
sg('Sensor_light02.value',1100);
//callMethod('Relay04.turnOn');
} else {
sg('Sensor_light02.value',0);
//callMethod('Relay04.turnOff');
}
//if (getGlobal('Sensor_light02.value10') > 1000) {
//sg('Sensor_light02.value',1100);
//callMethod('Relay04.turnOn');
//}
//if (getGlobal('Sensor_light02.value10') < 1000) {
//sg('Sensor_light02.value',0);
//callMethod('Relay04.turnOff');
//}
|
Статус фотомама
|
if (getGlobal('Sensor_light01.value10') > 1000) {
sg('Sensor_light01.value',1100);
}
if (getGlobal('Sensor_light01.value10') < 1000) {
sg('Sensor_light01.value',0);
}
|
easyRF
|
$device_id=$params['did'];
$destination_id=$params['dest'];
$packet_id=$params['pid'];
$command_id=$params['c'];
$data=$params['d'];
if ($device_id==0) {
if ($command_id==10) {
//temp
setGlobal('ws.tempInside',round($data/100));
} elseif ($command_id==12) {
//motion
callMethod('intSensor.statusChanged',array('status'=>1));
clearTimeOut($id.'_move');
setTimeOut($id.'_move',"callMethod('intSensor.statusChanged',array('status'=>0));",20);
}
}
|
RCSwitch
|
$id=$params['rcswitch'];
if ($id=='12345') {
//sensor 1
}
|
статус espmama
|
if (getGlobal('Sensor_state01.alive') == 0) {
say('Е. С. П. мамы недоступно',5);
}
|
Статус аква мама он
|
if (getGlobal('Relay09.status') == 1) {
say('Свет мама включен',2);
}
|
Статус аква мама офф
|
if (getGlobal('Relay09.status') == 0) {
say('Свет мама выключен',2);
}
|
статус кулеров аквы 45
|
if (getGlobal('Relay03.status2') == 1) {
$sc='<div class="light-on-blue">
<img src="/cms/scenes/styles/switch/i_air_cleaner.png" />
</div>';
sg('Relay03.status',$sc);
} else {
sg('Relay03.status',0);
}
|
статус кулеров аквы120
|
if (getGlobal('Relay02.status2') == 1) {
$sc='<div class="light-on-blue">
<img src="/cms/scenes/styles/switch/i_air_cleaner.png" />
</div>';
sg('Relay02.status',$sc);
} else {
sg('Relay02.status',0);
}
|
статус нагрева аквы
|
if (getGlobal('Relay07.status2') == 1) {
$sc='<div class="light-on">
<img src="/cms/scenes/styles/switch/i_kotel_on.png" />
</div>';
sg('Relay07.status',$sc);
} else {
sg('Relay07.status',0);
}
|
статус света аквы 120
|
if (getGlobal('Relay04.status2') == 1) {
$sc='<div class="light-on-red">
<img src="/cms/scenes/styles/switch/i_light_on.png" />
</div>';
//sg('Relay04.value','{"brightness":"59","value":"55"}');
sg('Relay04.status',$sc);
} else {
//sg('Relay04.value','{"value":"0"}');
sg('Relay04.status',0);
}
|
статус света аквы 45
|
if (getGlobal('Relay05.status2') == 1) {
$sc='<div class="light-on-red">
<img src="/cms/scenes/styles/switch/i_light_on.png" />
</div>';
sg('Relay05.status',$sc);
} else {
sg('Relay05.status',0);
}
|
УДО вмт
|
if (getGlobal('Relay06.vmt') == 0) {
setGlobal('Relay06.vmt', '1');
sleep(2);
callMethod('Relay06.turnOff');
getURL('http://192.168.0.48/gpio?st=0&pin=3&flash=1', 0);
say("Удобрения поданы",2);
setGlobal('Relay06.vmt', '1');
}
|
Watching movie
|
say(LANG_GENERAL_SETTING_UP_LIGHTS,2);
// to-do
|
Аква мама закат
|
clearTimeout(aquatimermm);
clearTimeout(aquatimer2mm);
$brz1=gg("Dimmer03.levelWork");
if ($brz1>50 && $brz1<=270){
$brz1=$brz1-5;
setGlobal('Dimmer03.levelWork', $brz1);
SetTimeOut("aquatimezmm",'runScript("Аква мама закат");', 15);
}
if ($brz1>3 && $brz1<=50){
$brz1=$brz1-3;
setGlobal('Dimmer03.levelWork', $brz1);
SetTimeOut("aquatimez2mm",'runScript("Аква мама закат");', 15);
}
if ($brz1>0 && $brz1<=5){
$brz1=$brz1-1;
setGlobal('Dimmer03.levelWork', $brz1);
callMethod('Relay12.turnOff');
callMethod('Dimmer03.turnOff');
SetTimeOut("aquatimez3mm",'runScript("Аква мама закат");', 10);
}
|
Аква мама рассвет
|
clearTimeout(aquatimezmm);
clearTimeout(aquatimez2mm);
clearTimeout(aquatimez3mm);
$br1=gg("Dimmer03.levelWork");
if ($br1>=0 && $br1<=70){
$br1=$br1+1;
sg('Dimmer03.levelWork', $br1);
SetTimeOut("aquatimermm",'runScript("Аква мама рассвет");', 15);
}
if ($br1>=70 && $br1<185){
$br1=$br1+5;
sg('Dimmer03.levelWork', $br1);
SetTimeOut("aquatimer2mm",'runScript("Аква мама рассвет");', 15);
}
if ($br1>182){
callMethod('Relay12.turnOn');
}
|
выкл мама 20
|
callMethod('Relay12.turnOff');
setGlobal('Relay12.status', 0);
say('Свет мама выключен крипт выкл',2);
sleep(5);
callMethod('Relay12.turnOff');
|
test
|
setGlobal('Relay09.status', 0);
say('Свет мама включен',2);
sleep(5);
setGlobal('Relay09.status', 0);
|
test2
|
$sun_info = date_sun_info(strtotime("2021-09-21"), 55.148, 82.5512);
foreach ($sun_info as $key => $val) {
echo "$key: " . date("H:i:s", $val) . "\n";
}
|
test3
|
$lat=gg('ThisComputer.latitude'); // широта
$long=gg('ThisComputer.longitude'); // долгота
$sun_info = date_sun_info(time(), $lat, $long);
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
sg('ThisComputer.SunRiseTime',date("H:i", $sunrise));
}
if ($key == 'sunset') {
$sunset = $val;
$day_length = $sunset - $sunrise;
sg('ThisComputer.day_length2',date("H:i", $day_length));
sg('ThisComputer.SunSetTime',date("H:i", $sunset));
}
if ($key == 'astronomical_twilight_end') {
$astronomical_twilight_end = $val;
sg('ThisComputer.astronomical_twilight_end',date("H:i", $astronomical_twilight_end));
}
if ($key == 'astronomical_twilight_begin') {
$astronomical_twilight_begin = $val;
sg('ThisComputer.astronomical_twilight_begin',date("H:i", $astronomical_twilight_begin));
}
if ($key == 'civil_twilight_begin') {
$civil_twilight_begin = $val;
sg('ThisComputer.civil_twilight_begin',date("H:i", $civil_twilight_begin));
}
if ($key == 'astronomical_twilight_end') {
$astronomical_twilight_end = $val;
sg('ThisComputer.astronomical_twilight_end',date("H:i", $astronomical_twilight_end));
}
if ($key == 'transit') {
$transit = $val;
sg('ThisComputer.transit',date("H:i", $transit));
}
}
$date = date_create(gg('ThisComputer.SunRiseTime'));
//date_modify($date, "-1 hour");
date_modify($date, "+60 minutes");
$date_new = date_format($date, "H:i");
setGlobal('ThisComputer.sunrizeminus', $date_new);
$date = date_create(gg('ThisComputer.SunSetTime'));
//date_modify($date, "-2 hour");
date_modify($date, "-90 minutes");
$date_new = date_format($date, "H:i");
setGlobal('ThisComputer.sunsetminus', $date_new);
|
TESTWOL
|
//Скажем через Ирбис с учётом ограничения в 100 символов
$phrase =gg('ThisComputer.yadevicesControl2');
say($phrase, 2);
function say_irbis($phrase)
{
if($phrase == '') return 0;
if(mb_strlen($phrase,'UTF-8')>100){ //если фраза > 100 букв, поделим на предложения
$phs = explode('.',$phrase);
foreach($phs as $ph){ //переберем предложения
if(mb_strlen($ph,'UTF-8')<100){
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>$ph));
}else{
$ph = mb_strimwidth($ph, 0,99, "..."); //не получилось( обрежем
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>$ph));
}
sleep(2);// на всякий случай
}
}else{ //скажем, как есть
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>$phrase));
}
return 1;
}
|
timeNow
|
say('Светодиодная потолочная люстра Citilux Лаконика CL725680G',2);
say('с яркой цветной RGB подсветкой всего плафона. ',2);
say('Светильник плоский, круглой формы. Основание металлическое, ',2);
say('плафон белый матовый из оптического полимера, с изящной хромированной окантовкой. ',2);
say('Мощность 68Вт, световой поток 5800Лм. Модель с пультом дистанционного управления. ',2);
say('Доступна плавная регулировка яркости от 100 до 10%. ',2);
|