|
AbLogGSM
|
//$HumFact = time();
//file_get_contents("http://192.168.7.106/sec/?sms=Vlagnoct_menee_".$HumFact."%!&phone=+79533333664");
file_get_contents("http://192.168.7.106/sec/?call=!&phone=+79533333664");
//file_get_contents("http://192.168.7.106/sec/?sms=test_test_test!&phone=+79533333664");
//file_get_contents("http://192.168.7.106/sec/?call=1&phone=89533333664");
//http://192.168.0.14/sec/?call=1&phone=+79533333664
|
|
AbLogRS485_RAW
|
$res = file_get_contents("http://192.168.7.105/sec/?uart_tx=0103000C00014409");
usleep(100000);
$res = file_get_contents("http://192.168.7.105/sec/?uart_rx=1");
Debmes ("$res");
if ( $res != 'CRC Error' )
{
$data = explode("|", $res);
$voltage = number_format(hexdec($data[3].$data[4]) / 10, 1);
$val = "Текущее напряжение: ".$voltage."В";
}
else
$val = "Ошибка CRC";
Debmes ("$val");
|
|
alarmhuelamp
|
//runScript('alarmhuelamp', array('start'=> "1"));
$start = $params['start'];
if ($start == "1"){
Debmes("status = 1");
setTimeout('alarmlamp','runScript("alarmhuelamp");',5);
}
else if ($start == "0"){
Debmes("status = 0");
if (timeOutExists("alarmlamp")){clearTimeout('alarmlamp');}
sg('RGB5.status',0);
}
else {
if (gg('RGB5.status')){
Debmes("Lamp off");
sg('RGB5.status',0);
if (timeOutExists("alarmlamp")){clearTimeout('alarmlamp');}
setTimeout('alarmlamp','runScript("alarmhuelamp");',5);
}
else {
Debmes("Lamp on");
sg('RGB5.status',1);
if (timeOutExists("alarmlamp")){clearTimeout('alarmlamp');}
setTimeout('alarmlamp','runScript("alarmhuelamp");',5);
}
}
|
|
BackupModuleStart
|
$say = "Запущено создание резервной копии системы";
sayTo ($say, 1, main1);
include(DIR_MODULES . 'backup/backup.class.php');
$backup_module = new backup();
$backup_module->create_backup();
|
|
clear_sql
|
//SELECT * FROM `phistory` WHERE `ADDED` < '2021-05-26 00:00:00'
$date = date("Ymd", mktime(0, 0, 0, date('m'), date('d') - 3, date('Y')));
$datemas = str_split($date);
$newdate = $datemas[0] . $datemas[1] . $datemas[2] . $datemas[3] . "-" . $datemas[4] . $datemas[5] . "-" . $datemas[6] . $datemas[7] . " 00:00:00";
SQLExec("DELETE FROM `phistory` WHERE `ADDED` < '$newdate'");
debmes ($newdate);
|
|
Database_history
|
$varname = "Temp5.value";
$data = getHistoryMin($varname, -3*60*60);
Debmes ("dataMin = $data");
$data = getHistoryMax($varname, -3*60*60);
Debmes ("dataMax = $data");
$data = gethistorycount($varname,strtotime("-15 minute"));
Debmes ("dataCount = $data");
$start_time = strtotime("00:00");
$stop_time = strtotime("03:00");
$data = getHistoryAvg($varname, $start_time, $stop_time); //Возвращает среднее значений за период
Debmes ("dataAvg1 = $data");
$dataMas = getHistory($varname, $start_time, $stop_time); //Возвращает массив значений истории
$val = $dataMas[0][VALUE];
$valT = $dataMas[0][ADDED];
Debmes ("val = $val valT = $valT");
$start_time = strtotime("2020-09-18 00:00:00");
$stop_time = strtotime("2020-09-18 03:00:00");
$data = getHistoryValue($varname, $start_time, $stop_time);// Возвращает среднее значений за период
Debmes ("dataAvg2 = $data");
|
|
Database_history_min
|
$varname = "Temp5.value";
$start_time = strtotime("00:00");
$stop_time = strtotime("00:30");
$start_time = strtotime("2020-09-16 00:00:00");
//$stop_time = strtotime("2020-09-16 07:00:00");
$stop_time = ""; // если задано как ничего то по текущий момент
$data = getHistory($varname, $start_time, $stop_time); //Возвращает массив значений истории
$count = count($data);
$val = 100;
for ($i = 0; $i < $count; $i++){
if ($val > $data[$i][VALUE]) {
$val = $data[$i][VALUE];
$valT = $data[$i][ADDED];
}
// Debmes ("val = $val valT = $valT");
}
Debmes ("valMIN = $val valT = $valT");
|
|
Decode
|
//$message = "043F04400438043204350442"; //привет
//$message = "04320435044204350440?"; //ветер
$message = $params['message'];
$mas = str_split($message, 4);
$masCount = count($mas);
for ($i = 0; $i < $masCount; $i++){
$mesStr = $mesStr . "\u" . $mas[$i];
}
Debmes("mesStr = $mesStr");
function escape_win ($path) {
$path = strtoupper ($path);
return strtr($path, array("\U0430"=>"а", "\U0431"=>"б", "\U0432"=>"в",
"\U0433"=>"г", "\U0434"=>"д", "\U0435"=>"е", "\U0451"=>"ё", "\U0436"=>"ж", "\U0437"=>"з", "\U0438"=>"и",
"\U0439"=>"й", "\U043A"=>"к", "\U043B"=>"л", "\U043C"=>"м", "\U043D"=>"н", "\U043E"=>"о", "\U043F"=>"п",
"\U0440"=>"р", "\U0441"=>"с", "\U0442"=>"т", "\U0443"=>"у", "\U0444"=>"ф", "\U0445"=>"х", "\U0446"=>"ц",
"\U0447"=>"ч", "\U0448"=>"ш", "\U0449"=>"щ", "\U044A"=>"ъ", "\U044B"=>"ы", "\U044C"=>"ь", "\U044D"=>"э",
"\U044E"=>"ю", "\U044F"=>"я", "\U0410"=>"А", "\U0411"=>"Б", "\U0412"=>"В", "\U0413"=>"Г", "\U0414"=>"Д",
"\U0415"=>"Е", "\U0401"=>"Ё", "\U0416"=>"Ж", "\U0417"=>"З", "\U0418"=>"И", "\U0419"=>"Й", "\U041A"=>"К",
"\U041B"=>"Л", "\U041C"=>"М", "\U041D"=>"Н", "\U041E"=>"О", "\U041F"=>"П", "\U0420"=>"Р", "\U0421"=>"С",
"\U0422"=>"Т", "\U0423"=>"У", "\U0424"=>"Ф", "\U0425"=>"Х", "\U0426"=>"Ц", "\U0427"=>"Ч", "\U0428"=>"Ш",
"\U0429"=>"Щ", "\U042A"=>"Ъ", "\U042B"=>"Ы", "\U042C"=>"Ь", "\U042D"=>"Э", "\U042E"=>"Ю", "\U042F"=>"Я",
"\U003F"=>"?", "\U0021"=>"!", "\U002E"=>".", "\U0020"=>" "));
}
$fin = escape_win($mesStr);
Debmes("$fin");
say("Новое смс: $fin",1);
|
|
getrandom line test
|
$x = "Точно!";
sayReply(getRandomLine('DONE')." Это отлично работает. ".$x,1);
|
|
Holiday_update
|
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar->calendar_getholidays();
|
|
Keenetic_module_test
|
$sta = gg ('Andrey.isHome');
Debmes ("Keenetic_module_test. Andrey.isHome = $sta");
|
|
kinopoisk
|
$film=$params['film'];
$film = "Зеленая миля";
say('Запрашиваю у kinopoisk информацию о '.$film);
$url="http://api.kinopoisk.cf/searchFilms?keyword=" . $film;
$data = json_decode(file_get_contents($url), true);
$pagesCount = $data["pagesCount"];
if ($pagesCount > 0) {
$keyword = $data["keyword"]; // что искали
$id = $data["searchFilms"][0]["id"]; // ид на кинопоиске
$nameRU = $data["searchFilms"][0]["nameRU"]; // название в рус
$nameEN = $data["searchFilms"][0]["nameEN"]; //англ название
$description = $data["searchFilms"][0]["description"];
$year = $data["searchFilms"][0]["year"];
$genre = $data["searchFilms"][0]["genre"]; //жанр
$rating = explode(" ", $data["searchFilms"][0]["rating"]); //рейтинг
$img = "http://st.kp.yandex.net/images/film/".$id.".jpg";
//Рассказываем о фильме
$mes = 'Найден фильм "'.$nameRU.'" '.$year.' года. ';
if ($nameEN != '') {
$mes .= 'Оригинальное название ' . $nameEN . '. ';
}
$mes .= $description . '.';
if (is_array($rating) && isset($rating[1])) {
$mes .= ' Рейтинг фильма ' . $rating[0] . '.';
}
say($mes);
//скачиваем картинку
/*
$url=$img;
$jpg="./cached/film/".$id.".jpg";
$dest_file = @fopen($jpg, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
*/
} else {
say('Не знаю такого фильма.');
}
|
|
Light_auto
|
Автоматическое включение света на 5 минут
debmes("Кнопка gw нажата");
$lamphalls = gg("lamp-hall.status");
if ($lamphalls == 1) {
callMethod('lamp-hall.TurnOff');
}
else
On4time("lamp-hall",5*60);
|
|
NewYear
|
cm ('3RF.switch');
sg ('3RF.status',0);
sleep(3);
cm ('2RF.switch');
sg ('2RF.status',0);
|
|
Optmizer
|
getURL('http://localhost/scripts/optimize_history.php',0);
|
|
playMediatest
|
$path = 'http://radio.russkoe.fm:8000/russkoefm_mp3';
//$path = 'pause';
//$path = 'stop';
$path = 'close';
//$term = 'orange';
//$term = 'hos';
$term = 'main1';
playMedia($path,$term);
|
|
Python_first
|
|
|
Randomline
|
say(getRandomLine('Helloy'),1);
|
|
reboot_router
|
say('Внимание! Маршрутизатор перезагружается!');
$t = 'http://192.168.0.1/apply.cgi?&preferred_lang=RU&firmver=3.0.0.4&wl_auth_mode_x=psk2&wl_wep_x=0&action_mode=reboot&action_script=&action_wait=70&apps_action=&apps_path=&apps_name=&apps_flag=&wan_unit=0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $t);
$pwd=gg('asusrouter.pwd');
$pwd = '9221404609and';
curl_setopt($ch, CURLOPT_USERPWD, 'admin:'.$pwd);
curl_setopt($ch, CURLOPT_REFERER, 'http://192.168.0.1/index.asp');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0');
curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_exec($ch);
curl_close($ch);
|
|
restart_router
|
Debmes("Начинаю перезагрузку роутера");
//shell_exec('sudo sh /var/www/scripts/myscript/restart_router.sh');
//safe_exec("sudo /var/www/scripts/myscript/restart_router.sh");
//$cmd = "sudo ssh admin@192.168.6.1 " . "'admin'" . " " . "'9221404609and'" . " " . "'close'";
//safe_exec("$cmd");
//https://habr.com/ru/post/122445/ - ключи ssh
//shell_exec('sudo sh (sleep 3 echo "admin" sleep 3 echo "9221404609and" sleep 3 echo "system reboot" sleep 3 echo "exit") | telnet 192.168.6.1');
Debmes("Команда на перезагрузку роутера $cmd");
|
|
SayReportTodayAgenga
|
runScriptSafe('sayTodayAgenda',array('User1'=>'0','User2'=>'1'));
runScriptSafe('SayToDo');
//say('Проверка голоса',1);
//say("Проверка загружена",1);
|
|
sayToTest
|
//sayTo($prhase,1,main1);
//global $session;
//sayTo($prhase,1,$session->data['TERMINAL']);
$prhase = "Это длинная строка для проверки нового голосового ассистента.";
//sayTo($prhase,2,main1);
sayTo($prhase,2,orange);
|
|
scanTest
|
Debmes("1. Планировщик CRON. Сканирование пользователя Анастасия");
/*
$name = 'iPhoneAnastasiia';
include_once(DIR_MODULES . 'idevices/idevices.class.php');
$idevices_module = new idevices();
$idevices_module->locate($name);
*/
$lastCheck = time() - gg("Anastasiia.CoordinatesUpdatedTimestamp");
Debmes ("2. Планировщик CRON. Сканирование пользователя Анастаси lastCheck = $lastCheck");
if ($lastCheck > 10800) {
sg ('Anastasiia.isHomeGPS', gg ('Anastasiia.isHome'));
Debmes ("3. Планировщик CRON. Сканирование пользователя Анастаси lastCheck = $lastCheck");
if (gg ('Anastasiia.isHome')) {
sg ('Anastasiia.Place', "Дом");
sg ('Anastasiia.seenAt', "Дом");
sg ('Anastasiia.StateSystemScaning', "Дом");
Debmes ("4. Планировщик CRON. Сканирование пользователя Анастаси lastCheck = $lastCheck/Место - Дом");
}
else {
sg ('Anastasiia.Place', "Нет дома");
sg ('Anastasiia.seenAt', "Нет дома");
sg ('Anastasiia.StateSystemScaning', "Нет дома");
Debmes ("5. Планировщик CRON. Сканирование пользователя Анастаси lastCheck = $lastCheck/Место - Нет дома");
}
}//10800 сек = 3 часа
|
|
SendMail_OK
|
$address = "Kolomnikov17@ya.ru";
$tema = "Дом";
$text = "Проверка сценариев3";
include_once(DIR_MODULES . 'mod_sendemail/mod_sendemail.class.php');
$se = new mod_sendemail();
$se->sendsmtp($address, $text, $tema);
|
|
Send_image
|
//Скачивает картинку с камеры и кидает в общий чат
//скачиваем картинку
$url="http://192.168.0.20/IMAGE.JPG";
$jpg="./cached/img/IMAGE.jpg";
//скачиваем картинку
$dest_file = @fopen($jpg, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/img/IMAGE.jpg';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAll($img);
|
|
SetAllObjectsProperty
|
$devices=getObjectsByClass('Rooms');
foreach ($devices as $device) {
$desc = getObject($device['TITLE'])->description;
$Title = getGlobal($device['TITLE'].'.Title');
$SomebodyHere = getGlobal($device['TITLE'].'.SomebodyHere');
Debmes ("Скрипт - SetAllObjectsProperty. desc=$desc/Title=$Title/SomebodyHere=$SomebodyHere");
//setGlobal($device['TITLE'].'.SomebodyHere', 0);
}
|
|
TempBoiler
|
$set = getGlobal("boiler_kontyr_first.set");
$slider = getGlobal("boiler_kontyr_first.setSlider");
$set =round($set,1);
$slider = $set+0.5;
setGlobal("boiler_kontyr_first.setSlider",$slider);
$set = $slider+0.01;
setGlobal("boiler_kontyr_first.set",$set);
|
|
terminal
|
$fraza = "привет";
$level = 2;
$terminal = MediaRenderer01;
sayTo ($fraza,$level, $terminal);
|
|
terminalTest
|
$dest = main1;
//$dest = MediaRenderer01;
//$dest = "[TV][LG]47LA662V-ZC";
$vol = 2;
sayTo("Маруся.",$vol,$dest);
//say("Привет. Проверка голоса. Что это за язык? Это точно не русский2.",2);
|
|
TestFind+
|
$todo = gg('TodoList.todo');
//$todo = substr($todo, 2); //удаляем первые 2 символа в строке |-
Debmes("$todo");
$do = explode("|", $todo); //разделяем строку на массив разделитнль |-
Debmes("$do[0]");
Debmes("$do[1]");
Debmes("$do[2]");
Debmes("$do[3]");
$count = count($do); //считаем число элементов массива
if($count == 1) $count = 0; //когда нет ни одной задачи считает 1
Debmes("В массиве $count элемента");
//$Text="+" . $this->getProperty("Text");
$Text="+" . gg('1rem.Text');
Debmes("Ищем текст $Text");
if ($count) {
for($i=1;$i<$count;$i++) { //ищем строку с выполненной задачей
$find = strpos($do[$i], $Text);
if ($find){ //если нашли такую строку
Debmes("В строке №$i найдена нужная выполненная задача. Вот эта строка /$do[$i]/");
$do[$i] = str_replace('+', '-', $do[$i]);
Debmes("Отмечаем ее как не выполнено. Вот эта строка /$do[$i]/");
}
}
}
|
|
testTeamviewer
|
|
|
testvoltv
|
$val = 24;
$alias = Lg;
$alias = Lg;
for($i=0;$i<3;$i++) {
include_once(DIR_MODULES.'app_smarttv/app_smarttv.class.php');
$smartTv=new app_smarttv();
$smartTv->control($alias,'sendCode', $val);
// Debmes("$i");
}
|
|
timeoutexist
|
Debmes ("1. setTimeOut");
$test = "test";
setTimeOut($test,"Debmes ('2. timeOut');", 1*60);
if (!timeOutExists($test)){
Debmes ("3. timeOutExists");
}
|
|
ToSay
|
//$phrase = "Активность ECO режима составляет " . gg('ECO.Active') . "процентов";
//runScriptSafe('ToSay', array('level'=>1,'term'=>1, 'phrase'=>$phrase));
$level = $params['level'];
$term = $params['term'];
$phrase = $params['phrase'];
//$phrase = "Повтори за мной " . $params['phrase'];
Debmes ($phrase);
if ($level > 0) {
callAPI('/api/module/yadevices','GET',array('station'=>$term,'say'=>$phrase));
}
else {
sayTo($phrase, 0, main1);
}
// callAPI('/api/module/yadevices','GET',array('station'=>6,'command'=>'Повтори за мной тестовое сообщение'));
|
|
ToSayTest
|
$phrase = "активность режима составляет " . gg('ECO.Active') . "%";
//$phrase = "Тестовое сообщение";
runScriptSafe('ToSay', array('level'=>1,'term'=>6, 'phrase'=>$phrase));
|
|
Tracker_post
|
DebMes("Отслеживание посылок в Cron запущено");
//exec('php /var/www/modules/app_PostTracker/check_track.php');
//0 8,17 * * *
require_once(DIR_MODULES . '/app_PostTracker/app_PostTracker.class.php');
$PostTracker = new app_PostTracker();
$PostTracker->updateStatuses();
DebMes("Отслеживание посылок в Cron закончено");
|
|
utf8
|
$otvet = "0422043504410442";
//$otvet ='Раз два 3 g';
Debmes("1 $otvet");
//избавимся от ударений
$otvet=iconv("UTF-16BE","CP1252//IGNORE",$otvet);
Debmes("2 $otvet");
//$otvet=iconv("CP1251","UTF-8",$otvet);
//Debmes("3 $otvet");
$otvet = preg_replace("#\s\(.*?\)#isu", '', $otvet);
Debmes("4 $otvet");
//Debmes("$val");
//$val = mb_convert_encoding($val, "UTF-16BE", "ISO-8859-1");
//Debmes("$val");
//echo 'С добавлением IGNORE : ', iconv("UTF-16BE", "windows-1251//IGNORE", $val), PHP_EOL;
//echo 'С добавлением IGNORE : ', iconv("UTF-8", "windows-1251//IGNORE", $val), PHP_EOL;
//$new = iconv("UTF-8", "ASCII", $val);
//$new=iconv("UTF-8","CP1251//IGNORE",$val);
//$new = iconv("UTF-16BE", "ISO-8859-1//IGNORE", $val);
//Debmes("$new");
/*
$text = "Это символ евро - '€'.";
echo 'Исходная строка : ', $text, PHP_EOL;
Debmes("$text");
echo 'С добавлением TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
$text = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text);
Debmes("$text");
echo 'С добавлением IGNORE : ', iconv("UTF-8", "ASCII//IGNORE", $text), PHP_EOL;
$text = iconv("UTF-8", "ISO-8859-1//IGNORE", $text);
Debmes("$text");
echo 'Обычное преобразование : ', iconv("UTF-8", "CP1251", $text), PHP_EOL;
$text = iconv("UTF-8", "ISO-8859-1//ISO-8859-1", $text);
Debmes("$text");
*/
|
|
vol tv
|
include_once(DIR_MODULES.'app_smarttv/app_smarttv.class.php');
$smartTv=new app_smarttv();
$alias = Lg2;
$val = "9";
$smartTv->control($alias,'setVol', $val);
$smartTv->control($alias,'getVol');
//$smartTv->control($alias,'sendCode', $val);
|
|
Wheather_script2
|
$city_id = 27612; // id Москвы
$xml = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'weather_'.$city_id.'.xml';
if(file_exists($xml)):
$data = simplexml_load_file($xml); //грузим ?>
<style type="text/css">
.weather{position:relative;border-bottom:1px solid #d5d5d5;padding-bottom:35px;}
.weather .date{font-size:13px;font-weight:700;padding-bottom:5px;text-transform:uppercase;border-bottom:1px solid #d5d5d5;margin-top:10px;}
.weather .item{background-color:#f0eedc;padding:15px;font-family:Georgia;margin-bottom:20px;}
.weather .item table{border:0;width:100%;}
.weather .item table td{padding-bottom:15px;width:20%;vertical-align:baseline;padding-right:5px;}
.weather .item .day-part td{font-size:18px;}
.weather .item .day-temp td{font-size:30px;}
.weather .item .day-temp td img{margin-left:5px;}
.weather .item .day-param td{font-size:12px;}
.weather .item .day-param td p{padding-bottom:3px;}
.weather .days{margin-top:35px;border:0;width:100%;}
.weather .days td{width:50%;padding-bottom:35px;}
.weather .days a{font-family:Georgia;font-size:18px;text-decoration:underline;font-weight:700;}
</style>
<div class="weather"><?php
foreach($data->day as $day):?>
<div class="date"><?php echo getDayDate($day['date']);?></div>
<div class="item">
<table>
<tr class="day-part">
<td>Утром</td>
<td>Днем</td>
<td>Вечером</td>
<td>Ночью</td>
</tr>
<tr class="day-temp">
<?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4
$img = $day->day_part[$i]->{'image-v3'};?>
<td><?php echo getTempSign($day->day_part[$i]->{'temperature-data'}->avg);?> °C <img src="" width="48" height="48" /></td><?php endfor;?>
</tr>
<tr class="day-param">
<?php for($i = 0;$i < 4;$i++): // т.к. нам не нужны данные day_short и night_short, мы останавливаем проход на 4?>
<td>
<p><strong><?php echo $day->day_part[$i]->weather_type;?></strong></p>
<p>ветер: <?php echo getWindDirection($day->day_part[$i]->wind_direction).' '.$day->day_part[$i]->wind_speed;?> м/с</p>
<p>влажность: <?php echo $day->day_part[$i]->humidity;?>%</p>
<p>давление: <?php echo $day->day_part[$i]->pressure;?> мм рт. ст.</p>
</td>
<?php endfor;?>
</tr>
</table>
</div><?php
endforeach;?>
</div><?php
endif;
// получаем локализованную дату
function getDayDate($date)
{
$date = strtotime($date);
$months = array('','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
$days = array('воскресенье','понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота');
return $days[date('w', $date)].', '.(int)date('d',$date).' '.$months[date('n', $date)];
}
// получаем знак температуры
function getTempSign($temp)
{
$temp = (int)$temp;
return $temp > 0 ? '+'.$temp : $temp;
}
// получаем направления ветра
function getWindDirection($wind)
{
$wind = (string)$wind;
$wind_direction = array('s'=>'↑ ю','n'=>'↓ с','w'=>'→ з','e'=>'← в','sw'=>' юз','se'=>' юв','nw'=>' сз','ne'=>' св');
return $wind_direction[$wind];
}
|
|
WOL
|
include_once(DIR_MODULES . 'wol/wol.class.php');
$wake = new wol();
//$wake->WakeOnLan('255.255.255.250','78:84:3c:e5:e6:24');
//$wake->WakeOnLan('239.255.255.255','78:84:3c:e5:e6:24');
$wake->WakeOnLan('192.168.255.255','78:84:3c:e5:e6:24');
//$wake->WakeOnLan('192.168.6.255','78:84:3c:e5:e6:24');
//$wake->WakeOnLan('192.168.7.255','78:84:3c:e5:e6:24');
//wakeonlan -p 8 78:84:3c:e5:e6:24
|
|
YandexVolTest
|
callAPI('/api/module/yadevices','GET',array('station'=>1,'command'=>'setVolume','volume'=>6));
|
|
ZigbeeToMqtt_auto_restart
|
//setGlobal('cycle_zigbee2mqttAutoRestart','1');
//setGlobal('cycle_mqttAutoRestart','1');
setGlobal('cycle_connectRestart','0');
|
|
A_and_A_left_home
|
Когда хозяев нет дома поставлю на охрану
/*
if(gg("Alarm.Auto_ONOFF")){
$Dist = gg("Alarm.Distance_ONOFF");
if ((gg("admin.HomeDistance")>$Dist) && (gg("Anastasiya.HomeDistance")>$Dist) && (gg("Alarm.StatusInt")!=2) && (gg("Alarm.StatusInt")!=1))
{
setGlobal("SecureONOFF.status",1);
say('Хозяев нет дома. Поставлю на охрану!');
DebMes("Автоматическая постановка на охрану");
}
if ((gg("admin.HomeDistance")<=$Dist) && (gg("SecureONOFF.status")))
{
setGlobal("SecureONOFF.status",0);
say('Хозяин возвращается домой! Сниму с охраны');
DebMes("Автоматическое снятие с охраны. Возвращение Андрея.");
}
if ((gg("Anastasiya.HomeDistance")<=$Dist) && (gg("SecureONOFF.status")))
{
setGlobal("SecureONOFF.status",0);
say('Хозяйка возвращается домой! Сниму с охраны');
DebMes("Автоматическое снятие с охраны. Возвращение Настюши.");
}
}
*/
|
|
checkOnline2
|
//Проверка пользователей
$objects=getObjectsByClass('Users');
//переберем всех пользователей в классе Users
foreach($objects as $obj) {
$isHomeGPS = getGlobal($obj['TITLE'].'.isHomeGPS');
$isHomeWifi = getGlobal($obj['TITLE'].'.isHome');
if($isHomeGPS == "1" || $isHomeWifi == "1"){
runScriptSafe ("gretting_" . $obj['TITLE']);
//$fullName = getGlobal($obj['TITLE'].'.fullName');
//sayTo("Здравствуйте $fullName!",1,main1);
//setGlobal($obj['TITLE'].'.Greeting',0);
}
//29.06.19 - убран пинг устройств пользователя при появлении кого-то дома
//телефон не успевает коннектится к сети
//на пинг уходит много времени
//используем толлько GPS
/*
$devices = getGlobal($obj['TITLE'].'.deviceip');
$devarr = explode(';', $devices);
// переберем все устройства пользователя из свойства .deviceip(записаны через ;)
foreach ($devarr as $device) {
//Делаем по три попытки на каждый Ip
for ($i = 1; $i < 3; $i++){
$user = $obj['TITLE'];
if (ping($device)){
callMethodSafe($obj['TITLE'].'.HomeWiFi');
Debmes ("$user ip адрес $device. Попытка №$i. Найден в домашней сети");
break;
}
else {Debmes ("$user ip адрес $device. Попытка №$i. Не найден."); }
}
}
*/
}
|
|
gretting_Anastasiia
|
if (gg('Anastasiia.Greeting')){
//sg('Anastasiia.Greeting',0);
sayTo ("Здравствуйте, " . gg('Anastasiia.fullName') . "!",2 ,main1);
sayTo (getRandomLine('HAPPY'),2 ,main1);
// runScript('StateTemp',array('level'=>'2','term'=>'main1'));
// runScript('StateHum',array('level'=>'2','term'=>'main1'));
// runScript('StateWindow',array('level'=>'2','term'=>'main1'));
}
|
|
gretting_Andrey
|
if (gg('Andrey.Greeting')){
//sg('Andrey.Greeting',0);
sayTo ("Здравствуйте, " . gg('Andrey.fullName') . "!",2 ,main1);
// say ("Здравствуйте, " . gg('Andrey.fullName') . "!", 1);
runScriptSafe('reportStatus', array());
runScriptSafe('StateTemp',array('level'=>'2','term'=>'3'));
runScriptSafe('StateHum',array('level'=>'2','term'=>'main1'));
runScriptSafe('StateWindow',array('level'=>'2','term'=>'main1'));
runScriptSafe('StateECO',array('level'=>'2','term'=>'main1'));
runScriptSafe('CheckPostTracker');
//cm('All_alarm_off.Remainder');
}
|
|
Scan_Anastasia
|
Обновить местоположение Настюши
DebMes("Сканирование пользователя (скрипт-Scan_Anastasia) Анастасия");
$name = 'iPhoneAnastasiia';
//findApple($name, $timeout = 60);
include_once(DIR_MODULES . 'idevices/idevices.class.php');
$idevices_module = new idevices();
$idevices_module->locate($name);
|
|
Scan_Andrey
|
Обновить местоположение Андрея
DebMes("Сканирование пользователя (скрипт-Scan_Andrey) Андрей");
$name='AndreyKolomnikov';
//findApple($name, $timeout = 60);
include_once(DIR_MODULES . 'idevices/idevices.class.php');
$idevices_module = new idevices();
$idevices_module->locate($name);
|
|
updateActivityStatusScript
|
$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");
$UsersAtHome = gg("UsersAtHome");
$checkCountUsers = gg("SombodyHomeWiFi");
if (!$rooms[0]['active']) {
if($checkCountUsers == 0 && !gg("SomebodyHomeMAN")){
$somebodyHomeText="Никого нет дома. Были в ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")";
clearTimeout('nobodyHome');
callMethod('NobodyHomeMode.activate');
Debmes("1. checkCount = $checkCountUsers/UsersAtHome = $UsersAtHome/ somebodyHomeText = $somebodyHomeText");
}
else {
$somebodyHomeText="Дома ".$UsersAtHome.". ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")";
Debmes("2. checkCount = $checkCountUsers/UsersAtHome = $UsersAtHome/ somebodyHomeText = $somebodyHomeText");
//if (getGlobal('NobodyHomeMode.active')) {callMethod('NobodyHomeMode.deactivate');}
}
}
else {
$res_rooms=array();
for($i=0;$i<$total;$i++) {
if ($rooms[$i]['active']) {
$res_rooms[]=$rooms[$i]['room'];
}
}
if($checkCountUsers != 0){
$somebodyHomeText="Дома ".$UsersAtHome.". Активность:". implode(", ",$res_rooms);
//if (getGlobal('NobodyHomeMode.active')) {callMethod('NobodyHomeMode.deactivate');}
}
else {
$somebodyHomeText="Кто-то есть. Активность:". implode(", ",$res_rooms);
//if (getGlobal('NobodyHomeMode.active')) {callMethod('NobodyHomeMode.deactivate');}
}
}
setGlobal('somebodyHomeText',$somebodyHomeText);
|
|
Users_in_home_status_word
|
$count = 0;
//Проверка пользователей
$devices=getObjectsByClass('Users');
foreach ($devices as $device) {
$atHome = getGlobal($device['TITLE'].'.atHome');
$UsersAtHome = gg("UsersAtHome");
if ($atHome == 1){
$userTitle = $device['TITLE'];
$userDesk = getObject($device['TITLE'])->description;
if (preg_match("/$userDesk/uis",$UsersAtHome)){
Debmes ("Пользователь $userDesk уже и так находится дома");
}
else {
Debmes ("Пользователь $userTitle $userDesk обнаружен дома");
$UsersAtHomeNew = $UsersAtHome . " " . $userDesk;
$UsersAtHomeNew=trim($UsersAtHomeNew);
sg ("UsersAtHome",$UsersAtHomeNew);
}
$count = $count +1;
}
else if ($atHome == 0){
$userTitle = $device['TITLE'];
$userDesk = getObject($device['TITLE'])->description;
Debmes ("Пользователь $userTitle $userDesk дома не обнаружен");
if (preg_match("/$userDesk/uis",$UsersAtHome)){
Debmes ("Пользователь $userDesk до этого момента был дома");
$UsersAtHomeNew = str_replace($userDesk, "", $UsersAtHome); //убираем пользователя из статуса
$UsersAtHomeNew = mb_ereg_replace('[ ]+', ' ', $UsersAtHomeNew); //убираем лишние пробелы
$UsersAtHomeNew=trim($UsersAtHomeNew); //убираем пробелы по краям
sg ("UsersAtHome",$UsersAtHomeNew);
}
}
}
if ($count != gg ("SombodyHomeWiFi")){
sg ("SombodyHomeWiFi",$count);
runScript ("updateActivityStatusScript");
}
|
|
BrigadeNumber
|
$now = idate("U") + idate("Z");
$toomorow = idate("U")+86400 + idate("Z");
//idate("U") количество секунд с 1970 г до текущего времени по гринвичу
//idate("Z"); количество секунд от времени по гринвичу до нашего
// (((1590825815/3600) - 8) / (8*12)) / 12
switch ((int)((((int)($now / 3600) - 8) % (8 * 12)) / 12))
{
case 0: $temp = 2; break;
case 1: $temp = 1; break;
case 2: $temp = 3; break;
case 3: $temp = 2; break;
case 4: $temp = 4; break;
case 5: $temp = 3; break;
case 6: $temp = 1; break;
case 7: $temp = 4; break;
default: $temp = -1; break;
}
sg("Brigade.Number_now", $temp);
switch ((int)((((int)($toomorow / 3600) - 8) % (8 * 12)) / 12))
{
case 0: $temp = 2; break;
case 1: $temp = 1; break;
case 2: $temp = 3; break;
case 3: $temp = 2; break;
case 4: $temp = 4; break;
case 5: $temp = 3; break;
case 6: $temp = 1; break;
case 7: $temp = 4; break;
default: $temp = -1; break;
}
sg("Brigade.Number_toomorow", $temp);
|
|
CheckPostTracker
|
Проверка статуса отслеживания
DebMes("Отслеживание посылок в Cron запущено");
require_once(DIR_MODULES . '/app_PostTracker/app_PostTracker.class.php');
$PostTracker = new app_PostTracker();
$PostTracker->updateStatuses();
DebMes("Отслеживание посылок в Cron закончено");
|
|
DOOR_RINGTON
|
//скрипт с параметрами запускает Tasker по нажатию кнопки виджета
$par = $params['USER'];
if ($par == "Andrey"){
$phrase = getRandomLine('DOOR_RINGTON_FOR_ANDREY');
if (gg('Kitchen.SomebodyHere')) {
sayTo($phrase,2,main1);
Debmes("Скрипт DOOR_RINGTON: par = $par, отправлено на кухню");
}
if (gg('Bedroom.SomebodyHere')) {
sayTo($phrase,2,orange);
Debmes("Скрипт DOOR_RINGTON: par = $par, отправлено в спальню");
}
if (gg('Mansarda.SomebodyHere')) {
sayTo($phrase,2,hos);
Debmes("Скрипт DOOR_RINGTON: par = $par, отправлено на мансарду");
}
if (!gg('Kitchen.SomebodyHere') && !gg('Bedroom.SomebodyHere') && !gg('Mansarda.SomebodyHere')) {
say($phrase,2);
Debmes("Скрипт DOOR_RINGTON: par = $par, отправлено на все терминалы");
}
}
|
|
DOOR_RINGTONE_BUTTON_INTRANCE
|
//скрипт с параметрами запускает кнопка xiaomi на входе
if (isset($params['param'])){
if ($params['param'] == "click") $par = 1;
else if ($params['param'] == "double") $par = 2;
else if ($params['param'] == "long") $par = 3;
else $par = 0;
}
else $par = 0;
$tout = 'DOOR_RINGTONE_BUTTON_INTRANCE';
if (!timeOutExists($tout)){ //если таймер еще не закончился значит не выполняем (защита от слишком частых запусков)
setTimeOut($tout,"Debmes ('1. Скрипт DOOR_RINGTONE_BUTTON_INTRANCE закончился таймер tout = $tout. Скрипт может быть запущен еще раз');",4);
if (gg ('isDark') && !gg ('L31.status')) {
sg ('L31.status',1);
$tout1 = 'DOOR_RINGTONE_BUTTON_INTRANCE_LIGHT';
setTimeOut($tout1,'sg("L31.status",0);',1*60);
}
if ($par == 2) $phrase = getRandomLine('DOOR_RINGTON_FOR_ANDREY');
else if ($par == 1 || $par == 3) $phrase = getRandomLine('DOOR_RINGTONE');
if (gg('Kitchen.SomebodyHere')) {
sayTo($phrase,2,main1);
runScriptSafe('ToSay', array('level'=>1,'term'=>1, 'phrase'=>$phrase));
Debmes("Скрипт DOOR_RINGTONE_BUTTON_INTRANCE: par = $par, отправлено на кухню");
}
if (gg('Bedroom.SomebodyHere')) {
//sayTo($phrase,2,orange);
sayTo($phrase,2,main1);
runScriptSafe('ToSay', array('level'=>1,'term'=>1, 'phrase'=>$phrase));
Debmes("Скрипт DOOR_RINGTONE_BUTTON_INTRANCE: par = $par, отправлено в спальню");
}
if (gg('Mansarda.SomebodyHere')) {
//sayTo($phrase,2,hos);
sayTo($phrase,2,main1);
runScriptSafe('ToSay', array('level'=>1,'term'=>1, 'phrase'=>$phrase));
Debmes("Скрипт DOOR_RINGTONE_BUTTON_INTRANCE: par = $par, отправлено на мансарду");
}
if (!gg('Kitchen.SomebodyHere') && !gg('Bedroom.SomebodyHere') && !gg('Mansarda.SomebodyHere')) {
//say($phrase,3);
sayTo($phrase,2,main1);
runScriptSafe('ToSay', array('level'=>1,'term'=>1, 'phrase'=>$phrase));
Debmes("Скрипт DOOR_RINGTONE_BUTTON_INTRANCE: par = $par, отправлено на все терминалы");
}
}
|
|
Kalendar_holliday
|
Обновить календарь праздников (раз в год, кнопка в меню)
//запускать раз в год
Debmes('Kalendar_holliday - начат');
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar->calendar_getholidays();
Debmes('Kalendar_holliday - выполнен');
|
|
Kyrs_valyt
|
Курсы валют
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
//Округяем до двух знаков
$dollar=round($dollar,2);
sg("Sberbank.Dollar",$dollar);
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
//Округяем до двух знаков
$euro=round($euro,2);
sg("Sberbank.Euro",$euro);
//Выставляем дату и время
$time .=gg('Obninsk.DATE_DD_MM_YYYY');
$time .=" ";
$time .=gg('Obninsk.HH_MM');
setGlobal('Sberbank.Update_time',$time);
DebMes("Обновление курсов валют Сбербанка: доллар $dollar, евро $euro ");
//<div style="font-size:14px;text-align:center;">EURO %Sberbank.Euro% dollar %Sberbank.Dollar%</div>
|
|
macuser
|
$params['INFO']=trim($params['INFO'], '"');
//Debmes($params['INFO']);
$info = explode("_", $params['INFO']);
$andOld = gg('Andrey.isHome');
$anaOld = gg('Anastasiia.isHome');
$count = count($info);
for($i = 0; $i < $count; $i++) {
$var = explode("/", $info[$i]);
$tim = explode(":", $var[0]);
Debmes("$info[$i]");
//Debmes("$tim[0]:$tim[1]");
$usr = macfind($var[1]);
//Debmes("$var[1] - $usr");
//Debmes("$var[2]");
if ($var[2] == '1') {
$sta = " появилось в сети.";
if ($usr == "телефон Андрея") $andNew = 1;
else if ($usr == "телефон Настюши") $anaNew = 1;
}
else {
$sta = " пропало из сети.";
if ($usr == "телефон Андрея") $andNew = 2;
else if ($usr == "телефон Настюши") $anaNew = 2;
}
$say = "В " .$tim[0]. ":" .$tim[1]. " устройство - " .$usr. " " .$sta;
Debmes("$say");
if ($usr == "Андрея") {
$tim0A = $tim[0];
$tim1A = $tim[1];
$staA = $sta;
}
else if ($usr == "Настюши") {
$tim0Ana = $tim[0];
$tim1Ana = $tim[1];
$staAna = $sta;
}
else sayTo ($say, 0, main1);
} //конец for
/*
if ($andNew != "" && $andNew != $andOld) {
sg('Andrey.isHome', $andNew);
$say = "В " .$tim0A. ":" .$tim1A. " устройство - телефон Андрея" .$staA;
sayTo ($say, 1, main1);
}
if ($anaNew != "" && $anaNew != $anaOld) {
sg('Anastasiia.isHome', $anaNew);
$say = "В " .$tim0Ana. ":" .$tim1Ana. " устройство - телефон Настюши" .$staAna;
sayTo ($say, 1, main1);
}
*/
function macfind ($path) {
return strtr($path, array("2e:44:42:85:8f:f2"=>"телефон Андрея", "9e:78:67:14:f2:7a"=>"телефон Настюши", "6a:9f:b0:d5:59:c7"=>"телефон Настюши",
"28:39:26:57:22:5d"=>"ноутбук Андрея", "00:15:00:ef:5d:8a"=>"ноутбук Настюши",
"40:70:f5:2f:e3:1c"=>"apple Watch Настюши", "4e:1e:2a:db:5c:9e"=>"apple Watch Настюши", "b8:27:eb:4d:51:77"=>"голосовой терминал на кухне",
"04:cf:8c:2e:d1:f5"=>"ик пульт 2 на кухне(Xiaomi)",
"1c:b7:96:47:52:48"=>"планшет HUAWEI", "40:31:3c:d1:fb:e7"=>"лампа Xiaomi",
"08:f4:ab:8c:a1:e4"=>"apple Watch Натальи Аркадьевны", "01:f2:ab:3c:a4:e5"=>"телефон Натальи Аркадьевны",
"78:84:3c:e5:e6:24"=>"главный домашний сервер", "d0:03:4b:49:4b:6d"=>"Apple TV",
"fa:d2:f3:a4:d5:f6"=>"контроллер отопления", "34:ea:34:b2:bb:9d"=>"Broadlink EAIR",
"34:ea:34:b5:13:8f"=>"Broadlink RMPRO", "5c:cf:7f:68:21:9c"=>"контроллер в ванне на 1-ом",
"80:7d:3a:67:55:6b"=>"контроллер в спальне", "80:7d:3a:69:22:16"=>"контроллер в коридоре",
"bc:dd:c2:14:7f:fe"=>"контроллер в детской", "b4:e6:2d:3b:fe:13"=>"контроллер на кухне",
"84:f3:eb:1a:bc:86"=>"контроллер на мансарде", "84:f3:eb:1a:c4:dc"=>"контроллер на улице",
"ba:ed:ba:ba:ba:ba"=>"контроллер GSM", "b4:30:52:18:ab:61"=>"терминал в коридоре(Huaway)",
"00:14:d1:78:a6:b7"=>"камера на улице", "50:ff:20:08:a2:30"=>"роутер на мансарде",
"50:ff:20:07:8b:d0"=>"роутер в серверной", "de:ed:ba:fe:fe:ed"=>"контроллер освещения(master)",
"10:a4:be:21:ab:28"=>"Oringe Pi Prime", "fe:e6:73:52:44:ff"=>"голосовой терминал в спальне(Orange Pi Zero)",
"00:27:15:03:43:f3"=>"планшет на кухне", "b8:27:eb:23:ef:db"=>"голосовой терминал на мансарде(Raspberry Pi)",
"7c:49:eb:25:46:23"=>"ик пульт(Xiaomi)", "50:ff:20:08:a2:30"=>"роутер на мансарде",
"84:e0:f4:9f:85:35"=>"яндекс станция", "5c:cf:7f:c1:84:02"=>"Wifi розетка",
"10:8e:e0:44:24:50"=>"часы Андрея", "40:2c:f4:0d:b9:81"=>"нетбук HP", "78:0f:77:d4:b9:04"=>"карниз в спальне",
"f4:8e:92:19:ef:78"=>"телефон(Huaway2)", "cc:2d:8c:e7:74:f7"=>"телевизор на кухне по Ethernet",
"10:08:c1:0e:16:25"=>"телевизор на кухне", "dc:d9:16:9c:8e:18"=>"телефон соседа Димона",
"08:f6:9c:6d:1b:23"=>"телефон соседа Андрея"));
}
|
|
Min_temp_for_night
|
$period = $params['period'];
$term = $params['term'];
$varname = "Temp5.value";
if ($period == 1) {
$start_time = strtotime("00:00");
$stop_time = ""; // если задано как ничего то по текущий момент
}
//ищем минимальное
$data = getHistory($varname, $start_time, $stop_time); //Возвращает массив значений истории
$count = count($data);
$val = 100;
for ($i = 0; $i < $count; $i++){
if ($val > $data[$i][VALUE]) {
$val = $data[$i][VALUE];
$valT = $data[$i][ADDED];
}
}
Debmes ("valMIN = $val valT = $valT");
$timeFull = explode(" ", $valT);
$timeHHMM = explode(":", $timeFull[1]);
$val = round($val,1);
If ($val < 0) {
$say_phrase1 = "Температура опускалась ниже ноля. ";
}
$say_phrase2 = "Минимальная температура ночью составила " . $val . " С° в " . $timeHHMM[0] . ":" . $timeHHMM[1] . ". ";
//ищем минимальное
//ищем среднее
$data = getHistoryAvg($varname, $start_time, $stop_time);
$data = round($data,1);
$say_phrase3 = "В среднем температура составила " . $data . " С°.";
//ищем среднее
$say_phraseSUM = $say_phrase1 . $say_phrase2 . $say_phrase3;
Debmes ("$say_phraseSUM");
if ($term){
sayTo("$say_phraseSUM",1,$term);
Debmes("Скрипт Min_temp_for_night/$term/$say_phraseSUM");
}
else {
sayReply("$say_phraseSUM",2);
Debmes("Скрипт Min_temp_for_night/$term/$say_phraseSUM");
}
|
|
Openweather
|
Обновление погоды
include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php');
setGlobal('Ob.Update',gg("Obninsk.HH_MM "));
DebMes("Отработал скрипт погоды Openweather");
|
|
Post_tracker
|
Оповещение о статусе посылки
/*
$params['NAME'] - name parcel
$params['TRACK'] - track number
$params['TRACK_URL'] - track url
$params['DATE'] - datetime last status
$params['STATUS'] - last status
$params['DISPUTE'] - day to dispute
$params['LOCATION'] - location
*/
$text=$params['NAME'].". ";
if (isset($params['DISPUTE']))
$text .= "Истекает срок доставки! Осталось дней: ".$params['DISPUTE'];
else
$text .= $params['DATE']." - ".$params['STATUS'];
if ($params['LOCATION']!="")
$text .= " (".$params['LOCATION'].")";
if($text) sayTo($text,1,main1);
|
|
restartTerminal
|
sg('room1.ready', 0);
safe_exec("sudo alsactl init");
sleep (5);
sg ('room1.volume', gg('room1.volume_base'));
//https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line
//safe_exec("sudo /var/www/scripts/myscript/usbreset /dev/bus/usb/001/004");
$data=trim(exec("sudo systemctl status mdmterminal2.service | grep running | awk '{print $3}' | sed 's/(//' | sed 's/)//'"));
Debmes("restartTerminal $data");
if ($data == 'running'){
//Debmes("restartTerminal Терминал запущен, перезапускаю");
safe_exec("sudo /var/www/scripts/myscript/findeye.sh");
sleep (5);
safe_exec("sudo systemctl restart mdmterminal2.service");
}
else {
$data=trim(exec("sudo systemctl status mdmterminal2.service | grep inactive | awk '{print $2}' | sed 's/(//' | sed 's/)//'"));
if ($data == 'inactive'){
Debmes("restartTerminal Терминал остановлен, запускаю");
safe_exec("sudo /var/www/scripts/myscript/findeye.sh");
//sleep (5);
safe_exec("sudo systemctl start mdmterminal2.service");
}
}
|
|
restartTerminal_copy
|
sg('room1.ready', 0);
safe_exec("sudo alsactl init");
sleep (5);
sg ('room1.volume', gg('room1.volume_base'));
//https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line
//safe_exec("sudo /var/www/scripts/myscript/usbreset /dev/bus/usb/001/004");
$data=trim(exec("sudo systemctl status mdmterminal2.service | grep running | awk '{print $3}' | sed 's/(//' | sed 's/)//'"));
Debmes("restartTerminal $data");
if ($data == 'running'){
//Debmes("restartTerminal Терминал запущен, перезапускаю");
safe_exec("sudo /var/www/scripts/myscript/findeye.sh");
sleep (5);
safe_exec("sudo systemctl restart mdmterminal2.service");
}
else {
$data=trim(exec("sudo systemctl status mdmterminal2.service | grep inactive | awk '{print $2}' | sed 's/(//' | sed 's/)//'"));
if ($data == 'inactive'){
Debmes("restartTerminal Терминал остановлен, запускаю");
safe_exec("sudo /var/www/scripts/myscript/findeye.sh");
//sleep (5);
safe_exec("sudo systemctl start mdmterminal2.service");
}
}
|
|
Saymyweather
|
$period = $params['period'];
$term = $params['term'];
if ($period == 1){
$say_phrase = 'Сегодня ' .gg('System_YandexWeather.nowweather_type'). '. Температура на улице ' .gg('Temp5.value'). ' ℃, ощущается как ' .gg('System_YandexWeather.nowTemp'). ' ℃.' ;
}
else if ($period == 2){
$say_phrase = 'На завтра обещают ' .gg('System_YandexWeather.nowweather_type'). '. Температура ' .gg('System_YandexWeather.nowTemp'). ' ℃.';
}
else if ($period == 3){
$say_phrase = 'Послезавтра ожидается ' .gg('System_YandexWeather.nowweather_type'). '. Температура ' .gg('System_YandexWeather.nowTemp'). ' ℃.';
}
Debmes("$say_phrase");
if ($term){
sayTo("$say_phrase",1,$term);
Debmes("Скрипт Saymyweather/$term//$say_phrase");
}
else {
sayReply("$say_phrase",2);
Debmes("Скрипт Saymyweather/$term//$say_phrase");
}
|
|
TaskerAndrey
|
$BT = $params['BT'];
Debmes("Скрипт TaskerAndrey: BT = $BT");
if ($BT == "on"){
sayTo("Bluetooth включен",1,main1);
}
else if ($BT == "off"){
sayTo("Bluetooth выключен",1,main1);
}
|
|
Telegram
|
$address = $params['address'];
$text = $params['text'];
Debmes ("Cкрипт Telegram. address=$address/text=$text");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToUser($address, $text);
|
|
TelegramSayAction
|
$chat_id = $params['chat_id'];
$text = $params['text'];
$textFull = $chat_id . "/" . $text;
//Debmes($textFull);
$chat_id = trim($chat_id);
include(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$user = $telegram_module->getUserName($chat_id);
//Debmes($user);
$textFull = $user . " " . $text;
//Debmes($textFull);
sayTo($textFull,0,main1);
|
|
TelegramSendLocation
|
//for some resons some function don't work directly from Command section of the module
//which is why it's necessary to call them through scripts
$chat_id = $params['chat_id'];
$state = $params['state'];
$name = $params['name'];
$latitude = $params['latitude'];
$longitude = $params['longitude'];
include(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendVenueToUser($chat_id, $latitude, $longitude, $name, $state);
|
|
TelegramSendVideo
|
$chat_id = $params['chat_id'];
Debmes($chat_id);
if (!$chat_id) $chat_id = "766302939";
//Debmes($chat_id);
//$action = "upload_video";
$action = "upload_photo";
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendAction($chat_id, $action);
$date=trim(exec("ls /var/www/cms/cached/nvr/cam1 | sort -V | tail -n 1"));
Debmes($date);
$file=trim(exec("ls /var/www/cms/cached/nvr/cam1/$date | grep mp4 | sort -V | tail -n 1"));
Debmes($file);
$dateNow = $file[13] . $file[14] . "." . $file[10] . $file[11] . "." . $file[5] . $file[6] . $file[7] . $file[8] . " в " . $file[16] . $file[17] . ":" . $file[18] . $file[19] . ":" . $file[20] . $file[21] ;
Debmes($dateNow);
$full = '/var/www/cms/cached/nvr/cam1/' . $date . '/' . $file;
Debmes($full);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendVideoToUser($chat_id, $full, $dateNow);
|
|
Weather_update time
|
Время обновления погоды для сцен
$tim=getGlobal("Obninsk.DATE_DD_MM_YYYY");
$dat=getGlobal("Obninsk.HH_MM");
$timdat .=$tim;
$timdat .=", ";
$timdat .=$dat;
setGlobal("ow_city.Normal_data_udate",$timdat);
|
|
Wheather_yandex
|
//Получаем данные от Яндекса, region= указывает на код региона
$getYandexPogoda = simplexml_load_string(file_get_contents('https://export.yandex.ru/bar/reginfo.xml?region=967'));
$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-4.svg',
'ovc_sn.png' => 'asnowy-5.svg',
'ovc_-ra.png' => 'rainy-4.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_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.nowweather_type', $array["weather_type"]);
sg('System_YandexWeather.nowdampness', $array["dampness"]);
sg('System_YandexWeather.nowpressure', $array["pressure"]);
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';
|
|
Backup_module_done
|
Выполнен бэкап системы модулем Backup
$STATE = $params['STATE'];
$DESCRIPTION = $params['DESCRIPTION'];
//Debmes("Backup_module_done: Принятые значения: STATE = $STATE,DESCRIPTION = $DESCRIPTION");
if ($STATE == 'Ok'){
$say = "Резервная копия системы создана успешно";
Debmes("Backup_module_done: STATE = $STATE");
}
else if ($STATE == 'Error'){
Debmes("Backup_module_done: STATE = $STATE, Причина - DESCRIPTION = $DESCRIPTION");
$say = "Создание резервной копии системы завершено с ошибкой: " . $DESCRIPTION;
}
sayTo ($say, 1, main1);
|
|
Cash_Homebridge
|
Должен очистить кэш бриджа
exec('rm -Rf /home/pi/.homebridge/accessories/*');
exec('rm -Rf /home/pi/.homebridge/persist/*');
|
|
checkFreeSpace
|
Проверка свободного места на диске
$max_usage=90; //%
$output=array();
exec('df',$output);
//var_dump($output);
$problems=0;
$problems_details='';
foreach($output as $line) {
if (preg_match('/(\d+)% (\/.+)/',$line,$m))
$proc=$m[1];
$path=$m[2];
if ($proc>$max_usage) {
$problems++;
$problems_details.="$path: $proc; ";
}
//echo "$path: $proc%<br/>";
}
sg("ThisComputer.SpaceProblems",$problems);
sg("ThisComputer.SpaceProblems_Details",$problems_details);
setTimeOut('checkFreeSpace','runScript("checkFreeSpace");',5*60);
|
|
Check_cycle
|
//$objects=getObjectsByClass('ThisComputer');
$time = time();
$cycle_time = gg ('cycle_mqttRun');
$del = $time - $cycle_time;
//if ($del > 180) {
Debmes ("time = $time, cycle_time = $cycle_time, del = $del");
Debmes('cycle_mqtt - fail');
exec("sudo systemctl restart mosquitto.service");
sleep(3);
safe_exec("sudo -u www-data php /var/www/scripts/cycle_mqtt.php");
//}
|
|
Clear_backup_folder
|
Удаляет старые бэкапы системы и базы. Удаляет старые логи.
/*
//Бэкапы базы
$date = date("Ymd", mktime(0, 0, 0, date('m'), date('d') - 7, date('Y')));
Debmes("Запущен скрипт Clear_backup_folder");
$locate = 'C:\_majordomo\htdocs\backup\ '.$date;
$locate = str_replace(' ', '', $locate);
exec('c:\_majordomo\apps\nircmd\nircmd.exe moverecyclebin '.$locate);
exec('c:\_majordomo\apps\nircmd\nircmd.exe emptybin');
Debmes("Папка $locate удалена");
//Бэкапы системы
keepLatestLimitedBySize('C:\_majordomo\htdocs\cms\saverestore',250*1024*1024); //250Mb
//Логи
keepLatestLimitedBySize('C:\_majordomo\htdocs\cms\debmes',15*1024*1024); //15Mb
*/
//SQLExec("DELETE FROM gpslog");
Debmes("Запущен скрипт Clear_backup_folder");
keepLatestLimitedBySize('/var/log.hdd',25*1024*1024); //20Mb
keepLatestLimitedBySize('/var/www/cms/saverestore',100*1024*1024); //100Mb
keepLatestLimitedBySize('/var/www/backup',200*1024*1024); //200Mb
keepLatestLimitedBySize('/var/www/cms/cached',50*1024*1024); //50Mb
keepLatestLimitedBySize('/var/www/cms/debmes',50*1024*1024); //50Mb
//keepLatestLimitedBySize('/var/log',25*1024*1024); //25Mb
//SELECT * FROM `phistory` WHERE `ADDED` < '2021-05-26 00:00:00'
$date = date("Ymd", mktime(0, 0, 0, date('m'), date('d') - 3, date('Y')));
$datemas = str_split($date);
$newdate = $datemas[0] . $datemas[1] . $datemas[2] . $datemas[3] . "-" . $datemas[4] . $datemas[5] . "-" . $datemas[6] . $datemas[7] . " 00:00:00";
SQLExec("DELETE FROM `phistory` WHERE `ADDED` < '$newdate'");
debmes ($newdate);
Debmes("Выполнен скрипт Clear_backup_folder");
|
|
close_Enternet_explorer
|
Закрывает Enternet_explorer после перезагрузки. Т.к. он постоянно открывается.
//safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe win close class "IEFrame"');
|
|
Cycle_mqtt
|
$ping = gg('cycle_mqttRun');
$ping_last = gg('cycle_mqttRun_last');
if ($ping == $ping_last) {
$count = gg('cycle_mqttRun_count') + 1;
sg('cycle_mqttRun_count', $count);
Debmes ("Не сработал цикл mqtt в $count раз. ping=$ping, ping_last=$ping_last");
if ($count > 1 && $count < 3) {
sayTo("Не работает цикл mqtt, перезапускаю",1,main1);
Debmes ("Не работает цикл mqtt, перезапускаю. ping=$ping, ping_last=$ping_last");
//safe_exec('sudo -u www-data php /var/www/scripts/cycle_mqtt.php');
sg('cycle_mqttControl','restart');
}
if ($count >= 3) {
sayTo("Не работает цикл mqtt, перезапускаю брокера.",1,main1);
Debmes ("Не работает цикл mqtt, перезапускаю брокера. ping=$ping, ping_last=$ping_last");
safe_exec('sudo service mosquitto stop');
sleep(3);
safe_exec('sudo mosquitto -v -d');
sg('cycle_mqttRun_count', 0);
//setTimeOut('Restart_mosquitto',"safe_exec('sudo -u www-data php /var/www/scripts/cycle_mqtt.php');",7);
setTimeOut('Restart_mosquitto_',"sg('cycle_mqttControl','restart');",7);
}
}
else {
sg('cycle_mqttRun_last', $ping);
sg('cycle_mqttRun_count', 0);
//zigbee2Mqtt
$zigbeeLastRun = time() - gg ('cycle_zigbee2mqttRun');
//Debmes ("zigbeeLastRun = $zigbeeLastRun");
if ($zigbeeLastRun > 180) {
setTimeOut('Restart_zigbee2mqtt_',"sg('cycle_zigbee2mqttControl','restart');",7);
Debmes ("Не работает цикл zigbee2mqtt, перезапускаю zigbeeLastRun = $zigbeeLastRun");
}
//Debmes ("Проверка цикла mqtt. ping=$ping, ping_last=$ping_last");
}
|
|
filesClearOld
|
Check old files
//Логи
//keepLatestLimitedBySize('C:\_majordomo\htdocs\cms\debmes',15*1024*1024); //15Mb
//keepLatestLimitedBySize('/var/www/cms/debmes',50*1024*1024); //50Mb
|
|
OHM
|
Open Hardware Monitor - мониторинг системных ресурсов
//-----------------------Данные с ohm сценарий
$ch = curl_init('http://192.168.7.107:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//----------------------- Вытягиваем данные
$CpuLoad = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[2] ->{'Children'}[0] -> {'Value'};
$CpuTemp = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[1] ->{'Children'}[0] -> {'Value'};
$Memory = $json -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
/*
//----------------------- Просматриваем данные
echo "<br \>";
echo "Загрузка процессора";echo "  ";print_r("$CpuLoad");
echo "<br \>";
echo "температура процессора";echo "  ";print_r("$CpuTemp");
echo "<br \>";
echo "Занято оперативки";echo "  ";print_r("$Memory");
*/
//----------------------- Присваеваем данные
setGlobal('SonyVaio.CPULoad',intval($CpuLoad));
setGlobal('SonyVaio.CPUTemp',intval($CpuTemp));
setGlobal('SonyVaio.Memory',intval($Memory));
setGlobal('SonyVaio.DataUpdated ',gg("Obninsk.HH_MM "));
//DebMes("Мониторинг системных ресурсов");
|
|
rebootMJD
|
Перезапуск Majordomo
say('Внимание, перезагружаюсь!', 2);
sleep(5);
safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe script "c:\_majordomo\reboot_mjd.ncl"');
|
|
rebootSys
|
Перезапуск сервера
$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');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
sayTo("Подготовка к перезагрузке",2, main1);
setTimeout("shutdownTimer","safe_exec('sudo shutdown -r now');",15);
|
|
reboot_Chrome
|
Перезапуск Chrome (т.к. падает ChromeGate MJD)
safe_exec("taskkill /im chrome.exe");
sleep(3);
safe_exec("C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe");
Debmes("Отработал сценарий reboot_Chrome");
|
|
save_database
|
Сохранить базу
$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');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
sayTo("База данных сохранена.",1, main1);
|
|
shutdownSys
|
Выключение сервера
$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');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
sayTo("Подготовка к выключению",2, main1);
setTimeout("shutdownTimer","safe_exec('sudo shutdown -h now');",15);
|
|
ShutdowntSys
|
Перезапуск сервера
$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');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
sayTo("Подготовка к выключению",2, main1);
setTimeout("shutdownTimer","safe_exec('sudo shutdown -h now');",15);
|
|
updateCPUId
|
$data=trim(exec("cat /proc/cpuinfo | grep Serial | cut -d ':' -f 2"));
$data=ltrim($data,'0');
echo $data;
if ($data) {
setGlobal("ThisComputer.Serial",$data);
}
|
|
updateCPUstatus
|
$data=trim(exec("cat /proc/loadavg"));
$load = explode(" ", $data);
//Debmes("Загрузка 1: $load[0]");
//Debmes("Загрузка 5: $load[1]");
//Debmes("Загрузка 15: $load[2]");
//Debmes("Общее колл-во процессов: $load[4]");
sg ("OrangePIPrime.Load_1_minute",$load[0]);
sg ("OrangePIPrime.Load_5_minutes",$load[1]);
sg ("OrangePIPrime.Load_15_minutes",$load[2]);
sg ("OrangePIPrime.All_process",$load[4]);
$process = explode('/', $load[3]);
//Debmes("Запущенные процессы: $process[0]");
//Debmes("Активные процессы: $process[1]");
sg ("OrangePIPrime.Run_process",$process[0]);
sg ("OrangePIPrime.Active_process",$process[1]);
$data=trim(exec("free -m | grep Mem | awk '{print $3}'"));
//Debmes("Память используюется: $data");
sg ("OrangePIPrime.Memory_used",$data);
$data=trim(exec("free -m | grep Mem | awk '{print $2-$3}'"));
//Debmes("Память свободна: $data");
sg ("OrangePIPrime.Memory_free",$data);
$data=trim(exec("cat /etc/armbianmonitor/datasources/soctemp"));
$data = round($data/1000,1);
//Debmes("Температура: $data");
sg ("OrangePIPrime.Temperature",$data);
|
|
Hourly
|
Выполняется каждый час
|
|
light_motion_off
|
//sg("Hall.light_motion",0);
sg("Kitchen.light_motion",0);
sg("Bathroom.light_motion",0);
sg("Bathroom2.light_motion",0);
sg("Bedroom.light_motion",0);
sg("Mansarda.light_motion",0);
sg("Kinderroom.light_motion",0);
Debmes('Скрипт - light_motion_off');
|
|
motionDetected
|
Сработал детектор движения на веб-камере
DebMes("Motion detected: ".serialize($params));
callMethod('MotionSensorCam.motionDetected');
setTimeOut('motionDetectedTimer','runScript("camImagesProcess");',10);
if (getGlobal('ThisComputer'.'.'.'WebCamMotionAuto')) {
setTimeOut('stopWebCamDetection', " runScript('manageWebCamMotion', array('stop'=>'1'));", (int)('60'));
}
|
|
NobodyHome
|
Срабатывает, когда никого дома нет
setTimeOut("EconomModeTimeOut", "callMethod('EconomMode'.'.'.'activate');", 3*60);
$phrase = "Режим экономии будет активирован через 3 минуты";
sayTo($phrase,1,main1);
|
|
sayTodayAgenda
|
События календаря в чат и уведомление на iphone - из Cron
$User1 = $params['User1'];
$User2 = $params['User2'];
//$TodayAgenda = '';
Debmes("User1= $User1/ User2= $User2");
if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];
$say_phrase='';
if (is_array($events)) {
$total=count($events);
$tasks=array();
$cals=array();
for($i=0;$i<$total;$i++) {
if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
$tasks[]=$events[$i]['TITLE'];
} elseif ($events[$i]['IS_TASK']!='1') {
$cals[]=$events[$i]['TITLE'];
}
}
$total_tasks=count($tasks);
if ($total_tasks) {
$say_phrase.="У вас на сегодня запланированы задачи. ";
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$tasks[$i].". ";
}
} else {
// say("Никаких дел не запланировано.",1);
}
$total_cals=count($cals);
if ($total_cals) {
$say_phrase.=("Сегодняшние события. ");
for($i=0;$i<$total_cals;$i++) {
$say_phrase.=$cals[$i].'. ';
//$TodayAgenda.=$cals[$i].'. ';
}
sg('TodayAgenda',$say_phrase);
}
}
$events=$out['EVENTS_PAST'];
if ($events[0]['TITLE']) {
$say_phrase.=" Так же напоминаю о пропущенных задачах. ";
$total_tasks=count($events);
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$events[$i]['TITLE'].". ";
}
}
}
if ($say_phrase) {
sayTo($say_phrase,1,main1);
//say("$say_phrase",1);
if($User1){
Debmes("sayTodayAgenda Отправлено уведомление для User1");
include_once(DIR_MODULES . 'idevices/idevices.class.php');
$idevices_module = new idevices();
$idevices_module->sendMessage("iPhoneAnastasiia", $say_phrase, "", 0);
sleep(1);
}
if($User2){
Debmes("sayTodayAgenda Отправлено уведомление для User2");
include_once(DIR_MODULES . 'idevices/idevices.class.php');
$idevices_module = new idevices();
$idevices_module->sendMessage("AndreyKolomnikov", $say_phrase, "", 0);
}
}
else {
sg('TodayAgenda',$say_phrase);
}
|
|
sayToDayPeriod
|
if (timeBetween(getGlobal('NightModeStart'),'06:00')) $period = 'Доброй ночи.';
else if (timeBetween(getGlobal('NightModeEnd'),'12:00')) $period = 'Доброе утро!';
else if (timeBetween('12:00','18:00')) $period = 'Добрый день!';
else if (timeBetween('18:00',getGlobal('NightModeStart'))) $period = 'Добрый вечер';
Debmes ("$period");
//Если так не опросить то конструкция ниже не работает. Бред.
$level = $params['level']; //Уровень важности сообщения. Если не задан, то только установить свойство
$term = $params['term']; //В какой терминал говорить. Если не задано то в main1
if (isset($params['level'])){
if (!isset($params['term'])) $term = 'main1';
sayTo ($period, $level, $term);
//sayTo (getRandomLine($period), $level, $term);
}
|
|
SayToDo
|
Говорит про задачи
$todo = gg('TodoList.todo');
//$todo = substr($todo, 2); //удаляем первые 2 символа в строке |-
Debmes("$todo");
$do = explode("|-", $todo); //разделяем строку на массив разделитнль |-
//Debmes("$do[0]");
//Debmes("$do[1]");
//Debmes("$do[2]");
//Debmes("$do[3]");
$count = count($do); //считаем число элементов массива
if($count == 1) $count = 0; //когда нет ни одной задачи считает 1
//Debmes("В массиве $count элемента");
if ($count) {
for($i=1;$i<$count;$i++) { //ищем строку с выполненной задачей
$find = strpos($do[$i], '+'); //в строке должен быть +
if ($find){ //если нашли такую строку
Debmes("В строке №$i найдена выполненная задача. Вот эта строка $do[$i]");
$do[$i] = strstr($do[$i], '|', true); //удаляем из нее выполненную задачу
// Debmes("$do[$i]");}
}
}
} //здесь
if ($count) {
$say_phrase.=("Задачи на сегодня: ");
for($i=1;$i<$count;$i++) {
$say_phrase.=$do[$i].'. ';
}
}
if ($count) {
Debmes("$say_phrase");
$term = $params['term'];
if ($term){
sayTo("$say_phrase",2,$term);
}
else {
sayReply("$say_phrase",2);
}
}
else {
Debmes("На сегодня у Вас нет задач");
//sayTo("На сегодня у Вас нет задач",1,main1);
}
|
|
SomebodyHome
|
Срабатывает в том случае, когда кто-то появился дома
clearTimeout('EconomModeTimeOut');
callMethod('EconomMode'.'.'.'deactivate');
sg("L2.status",1); //свет в коридоре
if (gg('isDark')=="1"){
//if (gg('XiaomiMotion1.illuminance') < 50){
sg("L1.status",1);
sg("Kitchen.light_motion",1);
sg("Bedroom.light_motion",1);
sg("Mansarda.light_motion",1);
sg("Kinderroom.light_motion",1);
callMethod('Common.Common_OnSomebody');
}
sg("Hall.light_motion",1);
sg("Bathroom.light_motion",1);
sg("Bathroom2.light_motion",1);
setTimeout('timer_light_motion_off','runScript("light_motion_off");',10*60); //600 сек
runScript('checkOnline2');
if (!gg('UsersAtHome')){
//пока не нашли хозяев в доме
runScript('sayToDayPeriod',array('level'=>'2','term'=>'main1'));
}
//runScriptSafe('reportStatus', array()); перенесено в gretting_Andrey
runScriptSafe('sayTodayAgenda',array('User1'=>'0','User2'=>'0')); //каким пользователям отправить уведомление
runScriptSafe("SayToDo", array('term'=> "main1"));
//runScriptSafe('CheckPostTracker');
|
|
startUp
|
Система загружена
sayReply('Система загружена', 1);
runScript('tellIPAddress', array());
//runScript('close_Enternet_explorer');
|
|
turnOffEverything
|
Выключить все приборы
$objects=array('Switch1','Switch2','Switch3','All_light','Light1','Light2');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
|