Backup inform
|
Информирует в логе о завершении работы резервного копирования
$state=$params['STATE'];
$desc=$params['DESCRIPTION'];
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$message = "Резервное копирование\nСтатус: <b>".$state."</b>";
if ($desc)
$message .= "\nОписание:".$desc;
$telegram_module->sendMessageToUser( user, $message);
|
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);
|
Radio
|
Запуск радио. Под этот сценарий нужно создать шаблон.
НЕ РАБОТАЕТ
|
Reboot_Or
|
Перезагрузка апельсина, например при превышении допустимой температуры
$filename = ROOT . '/database_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');
say('Бэкапим базу', 2);
DebMes($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
DebMes('Подготовка к перезагрузке');
say("Подготовка к перезагрузке", 2);
setTimeout("shutdownTimer","safe_exec('sudo shutdown -r now');", 25);
/*
mysqldump --user=db_terminal --password=db_terminal --no-create-db --add-drop-table --databases db_terminal > /var/www/database_backup/db.sql
*/
|
SendToNotifyEvents
|
$url = 'https://api.notify.events/notify/JR4Bqc_z3IcbSVX5zty9BEnwQh6RHHLS/87';
$text = isset($params['text']) ? $params['text'] : "Notification text not specified";
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query(array('text' => $text))
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === false) {
echo 'Error';
} else {
echo 'Done';
}
|
SendToNotifyEvents_copy
|
$url = 'https://api.notify.events/notify/JR4Bqc_z3IcbSVX5zty9BEnwQh6RHHLS/87';
$text = isset($params['text']) ? $params['text'] : "Notification text not specified";
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query(array('text' => $text))
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === false) {
echo 'Error';
} else {
echo 'Done';
}
|
T oran
|
Следит за температурой сервера в объекте компьютер.
if ('ThisComputer.pctemp' > 55) {
say('Температура сервера превысила норму', 2);
}
if ('ThisComputer.pctemp' < 26) {
say('Температура сервера ниже нормы', 2);
}
|
Temporange
|
Сценарий вызова температуры процессора апельсина (сервера)
$temp = exec('cat /sys/class/thermal/thermal_zone0/temp');
setGlobal('ThisComputer.Temp',$temp);
setGlobal('Sensor_temp05.value',$temp);
|
Vorota
|
Открывает и закрывает ворота. Сделано без функции Sleep.
say('Открываю врата', 2);
callMethod('Relay45.turnOn');
SetTimeOut("timer1","callMethodSafe('Relay45.Off');", 2);
SetTimeOut("callMethodSafe('Relay45.turnOn');say('Врата открыты', 2);", 47);
SetTimeOut("timer3","callMethodSafe('Relay45.Off');say('Закрываю врата', 2);", 49);
SetTimeOut("timer4","DebMes ('timer4');say('Врата закрыты', 2);", 89);
|
Будильник
|
{ say('доброе утро. Сейчас. '.timeNow(),2);
Sleep(2);
runScript('read weather', array());
Sleep(2);
say('ребята. вам. надо. выезжать. не забывайте. выключить. свет. и телевизор. хорошего дня', 2);}
|
Калитка оффлайн
|
Перезагружает камеру Калитка
{Say("Камера калитка выпала из сети",2);
brLinkCommand('Выключить RF1');
Sleep(10);
brLinkCommand('Выключить RF1');
Say("Камера перегружена",2);}
|
Конд спальня вкл по температуре
|
Включает и отключает кондиционер в спальне в зависимости от температуры ESP 4
if (timeIs('23:40')) {
if ('TESP4.value' >= 27) {
if ('Relay35.status ' == 0) {
eval('sg(\'Relay35.status \', 1);');
say('Кондиционер спальня включен', 2);
} else if ('Relay35.status ' == 1) {
say('Кондиционер спальня уже включен', 2);
}
} else if ('TESP4.value' <= 21) {
if ('Relay35.status ' == 0) {
say('Кондиционер спальня уже выключен', 2);
} else if ('Relay35.status ' == 1) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 2);
}
}
}
if (timeIs('01:40')) {
if ('TESP4.value' >= 27) {
if ('Relay35.status ' == 0) {
eval('sg(\'Relay35.status \', 1);');
say('Кондиционер спальня включен', 1);
} else if ('Relay35.status ' == 1) {
say('Кондиционер спальня уже включен', 1);
}
} else if ('TESP4.value' <= 21) {
if ('Relay35.status ' == 0) {
say('Кондиционер спальня уже выключен', 1);
} else if ('Relay35.status ' == 1) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 1);
}
}
}
if (timeIs('02:40')) {
if ('TESP4.value' >= 27) {
if ('Relay35.status ' == 0) {
eval('sg(\'Relay35.status \', 1);');
say('Кондиционер спальня включен', 1);
} else if ('Relay35.status ' == 1) {
say('Кондиционер спальня уже включен', 1);
}
} else if ('TESP4.value' <= 21) {
if ('Relay35.status ' == 0) {
say('Кондиционер спальня уже выключен', 1);
} else if ('Relay35.status ' == 1) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 1);
}
}
}
if (timeIs('03:40')) {
if ('TESP4.value' >= 27) {
if ('Relay35.status ' == 0) {
eval('sg(\'Relay35.status \', 1);');
say('Кондиционер спальня включен', 1);
} else if ('Relay35.status ' == 1) {
say('Кондиционер спальня уже включен', 1);
}
} else if ('TESP4.value' <= 21) {
if ('Relay35.status ' == 0) {
say('Кондиционер спальня уже выключен', 1);
} else if ('Relay35.status ' == 1) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 1);
}
}
}
if (timeIs('04:40')) {
if ('TESP4.value' >= 27) {
if ('Relay35.status ' == 0) {
eval('sg(\'Relay35.status \', 1);');
say('Кондиционер спальня включен', 1);
} else if ('Relay35.status ' == 1) {
say('Кондиционер спальня уже включен', 1);
}
} else if ('TESP4.value' <= 21) {
if ('Relay35.status ' == 0) {
say('Кондиционер спальня уже выключен', 1);
} else if ('Relay35.status ' == 1) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 1);
}
}
}
if (timeIs('05:40')) {
if ('TESP4.value' >= 27) {
if ('Relay35.status ' == 0) {
eval('sg(\'Relay35.status \', 1);');
say('Кондиционер спальня включен', 1);
} else if ('Relay35.status ' == 1) {
say('Кондиционер спальня уже включен', 1);
}
} else if ('TESP4.value' <= 21) {
if ('Relay35.status ' == 0) {
say('Кондиционер спальня уже выключен', 1);
} else if ('Relay35.status ' == 1) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 1);
}
}
}
if (timeIs('06:40')) {
eval('sg(\'Relay35.status \', 0);');
say('Кондиционер спальня выключен', 2);
}
|
Кондиционер спальня включ
|
Включает кондиционер в спальне
sg('Relay35.status', 1);
Say("Кондиционер спальня включен");
|
Кондиционер спальня выключ
|
Выключает кондиционер в спальне
sg('Relay35.status', 0);
Sleep(10);
sg('Relay35.status', 0);
Say("Кондиционер спальня выключен");
|
Насос 30 А полив по времени
|
if (timeIs('23:30')) {
if ('ow_day0.rain' < 1) {
say('Необходим полив газона', 2);
sg('Relay41.command_on', 1);
say('Насос полива включен', 2);
Sleep(30);
sg('Relay41.command_on', 1);
}
} else if ('ow_day0.rain' >= 1) {
say('Полив газона не нужен', 2);
sg('Relay41.command_off', 1);
say('Насос полива выключен по погоде', 2);
}
if (timeIs('06:31')) {
sg('Relay41.command_off', 1);
say('Насос полива выключен по времени', 2);
Sleep(30);
sg('Relay41.command_off', 1);
}
|
Насос гараж
|
Включает и отключает насос полива внешнего газона
if (timeIs('19:01')) {
sg('Relay34.status', 1);
say('Насос полива наружного газона включен', 2);
}
if (timeIs('20:11')) {
sg('Relay34.status', 0);
say('Насос полива наружного газона выключен', 2);
}
|
Погода сообщение перед поливом
|
Сообщает о наличии дождя перед поливом
if (timeIs('19:00')) {
if ('ow_day0.rain' >= 1) {
say('На улице был дождь, полив наружного газона не требуется', 2);
} else if('ow_day0.rain' < 1) {
say('На улице сухо, нужен полив', 2);
}
}
|
Полив при условии включения кнопки сценария вручную
|
if (timeIs('23:33')) {
if (getGlobal('Relay44.status')==1) {
say('Сценарий полива включен вручную', 2);
}
else {
sg('Relay41.command_off', 1);
say('Сценарий полива выключен вручную', 2);
}
}
if (timeIs('06:44')) {
sg(Relay44.status, 0);
say('Насос полива отключен по времени', 2);
}
|
присутствие
|
Создает эффект присутствия хозяев дома
{
Say("Эффект присутствия запущен",2);
brLinkCommand('Включить УЛИЦА');
Sleep(600);
brLinkCommand('Включить ЗАЛ');
Sleep(300);
brLinkCommand('Выключить УЛИЦА');
Sleep(910);
brLinkCommand('Включить Ванна');
Sleep(123);
brLinkCommand('Спальня вкл');
Say("Эффект присутствия работает",2);
Sleep(488);
brLinkCommand('Выключить Ванна');
Sleep(300);
brLinkCommand('Выключить ЗАЛ');
Sleep(320);
brLinkCommand('Включить Маша');
Sleep(300);
brLinkCommand('Спальня вкл');
Sleep(320);
brLinkCommand('Включить ЗАЛ');
Sleep(1200);
brLinkCommand('Включить Маша');
Sleep(3600);
brLinkCommand('Включить УЛИЦА');
Sleep(1200);
brLinkCommand('Выключить УЛИЦА');
Say("Эффект присутствия работает",2);
Sleep(610);
brLinkCommand('Включить Маша');
Sleep(600);
brLinkCommand('Включить Маша');
Sleep(600);
brLinkCommand('Включить Ванна');
Sleep(600);
brLinkCommand('Включить TV');
Sleep(255);
brLinkCommand('Выключить ЗАЛ');
Sleep(1200);
Say("Эффект присутствия работает",2);
brLinkCommand('Выключить Ванна');
Sleep(120);
brLinkCommand('Спальня вкл');
Sleep(600);
brLinkCommand('Спальня вкл');
Sleep(530);
brLinkCommand('Включить TV');
Say("Эффект присутствия отработал",2);
}
|
СМС для тревоги
|
Отправка смс для экстренных сообщений (категории 5 и выше). Код внизу. Использовать в каждом сценарии для сообщений о тревоге.
include_once(DIR_MODULES . 'sms_ru/sms_ru.class.php');
$notify = new sms_ru();
$notify->sendNotifyAll("Насос тревога");
$notify->sendNotifByName("Alisa","Насос тревога");
|