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);
}
}
|
playFavoriteMusic
|
Проигрывание избранной музыки
// вытягиваем историю из переменной
$alreadyPlayed=gg("AlreadyPlayedMusic");
if (!$alreadyPlayed) {
$alreadyPlayed='0';
}
// выбираем случайную папку
$rec=SQLSelectOne("SELECT * FROM media_favorites WHERE ID NOT IN (".$alreadyPlayed.") ORDER BY RAND()");
if (!$rec['ID']) {
// папок больше не осталось, поэтому выбираем случайную и сбрасываем истоирю
$rec=SQLSelectOne("SELECT * FROM media_favorites ORDER BY RAND()");
$alreadyPlayed='0';
}
if ($rec['ID']) {
// добавляем выбранную папку в историю
$alreadyPlayed.=','.$rec['ID'];
sg("AlreadyPlayedMusic",$alreadyPlayed);
// запускаем на проигрывание
$collection=SQLSelectOne("SELECT * FROM collections WHERE ID=".(int)$rec['COLLECTION_ID']);
$path=$collection['PATH'].$rec['PATH'];
say($path);
//playMedia($path);
//setTimeOut('VLCPlayer_update',"callMethod('VLCPlayer.update');",10);
}
|
rssProcess
|
/*
$params['URL'] --link
$params['TITLE'] -- title
$params['BODY'] -- body
$params['CHANNEL_ID'] -- channel ID
$params['CHANNEL_TITLE'] -- channed title
*/
//say($params['TITLE']); // reading news
|
SendToTel
|
$ip='192.168.0.90';
$msg='hello';
$data_string='http://autoremotejoaomgcd.appspot.com/sendmessage?key='.gg('ThisComputer.AutoRemoteKey').'&message='.$msg;
/*$data_string='{"message":"'.$msg.'","sender":"A_KEY","ttl":0,"communication_base_params":{"type":"Message","fallback":false,"via":"Wifi"},"version":"1.63"}';
$ch = curl_init('http://'.$ip.':1817/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
*/
$result = fopen($data_string, "r");
//$result = curl_exec($ch);
echo $result;
|
test VK
|
runScript("VkMusic", array('VALUE'=>'354479050', 'MODE'=>0));
// getURL('http://127.0.0.1/rc/?command=vlc_play¶m='.$tempPlaylist, 0);
// getURL('http://192.168.0.2:8080/requests/status.xml?command=in_play&input='.$tempPlaylist,0);
//$tempPlaylist = "/tmp/playlist.m3u";
//$tempPlaylist = "/var/www/cached/playlist.m3u";
//$play_terminal = "MAIN";
// $url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1&play_terminal='.$play_terminal.'&command=refresh&play=';
// $url=BASE_URL.ROOTHTML.'popup/app_player.html?ajax=1&command=refresh&play=';
// getURL($url.$tempPlaylist, 0);
|
TestBackupDir
|
$cmd = 'sudo /var/www/lib/backup.sh -czpPf /home/my_etc_backup.tar.gz /etc';
var_dump($cmd);
exec($cmd, $out);
var_dump($out);
|
testFirebird
|
debmes("checkFirebirdNW");
$host = 'newwin.soft-corp.ru/11966:NW61';
$username='site_user';
$password='1594826';
$charset = "utf-8";
$buffers = 0;
$dialect = 3;
$role = 'site_role';
$dbh = @ibase_connect ($host, $username, $password, $charset, $buffers, $dialect, $role) or die ("error in db connect");
$set = 'SELECT * FROM SITE_PRICELIST';
$datas = array();
$sth = ibase_query($dbh, $set);
while ($row = ibase_fetch_object($sth)) {
$datas = trim($row->WINPROFILE_ID).';'.trim($row->PROFILENAME).';'.trim($row->ARTICLE).';'.trim($row->ITEMNAME).';'.trim($row->ITEMTYPE).';'.trim($row->DIMENSION).';'.trim($row->WIDTH).';'.trim($row->HEIGHT).';'.trim($row->PRICE).'||';
$datasx = ($datas);
echo($datasx);
}
|
testglobal
|
$kino=$params['kino'];
$kino = 'Terminator Genesis';
$kino = str_replace(' ', '_', $kino);
//Ищем на страничке
$url="http://api.kinopoisk.cf/searchFilms?keyword=".$kino;
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
$keyword=$data["keyword"]; // что искали
$id=$data["searchFilms"][0]["id"]; // ид на кинопоиске
$nameRU=$data["searchFilms"][0]["nameRU"]; // название в рус
$description=$data["searchFilms"][0]["description"]; //жанр
$year=$data["searchFilms"][0]["year"];
$genre=$data["searchFilms"][0]["genre"];
$rating=$data["searchFilms"][0]["rating"];//рейтинг
$img="http://st.kp.yandex.net/images/film/".$id.".jpg";
var_dump($data);
//Рассказываем о фильме
// say('Найден фильм "'.$nameRU.'" '.$year.' года.',1);
// say($description,1);
// say('Рейтинг фильма '.$rating,1);
|
testMail
|
отправка письма по e-mail
$to = gg('admin.EMail');
$from = gg('ThisComputer.EMail');
$subject = "Алиса пишет";
$message = '
Наконец-то почта заработала
';
$headers = "Content-type: text/plain; charset=utf-8 \r\n";
$headers .= "From: Что желаете <$from>\r\n";
mail($to, $subject, $message, $headers);
|
timeNow
|
|
ClearAllTimers
|
Чистка всех таймеров
SQLExec("DELETE FROM jobs");
|
ClearShouts
|
Очистка истории событий
SQLExec("DELETE FROM shouts WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>1");
say('Cтарый архив событий удален');
|
FullBackup2Net
|
Полный бекап + база на сетевой диск WD
//У пользователя www-data (все циклы у меня запущены от его имени) нет права чтения
//некоторых каталогов. Поэтому, чтобы была возможность такие каталоги архивировать,
//для запуска линуксовых команд используется shell-скрипт, который благодаря sudo может
// запускаться с правами root под пользователем www-data. Чтобы дать пользователю www-data возможность
// запускать этот скрипт от root, необходимо в /etc/sudoers добавить строку
//Код:
//www-data ALL=(root) NOPASSWD: /var/www/lib/backup.sh
say("Старт локального рез.копирования");
shell_exec("cd /var/www && ./backupsrv.sh");
//shell_exec("sudo /var/www/backupsrv.sh");
say("Полный backup завершен");
|
GetRouteToWork
|
Вычисляет время машрута до работы
//Описание - https://majordomo.smartliving.ru/forum/viewtopic.php?f=4&p=70716#p70716
//https://maps.googleapis.com/maps/api/directions/json?origin=%22%D0%BF%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%82%20%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D0%B5%D0%B2%D0%B0,%201%D0%98,%20%D0%A0%D0%BE%D1%81%D1%82%D0%BE%D0%B2-%D0%BD%D0%B0-%D0%94%D0%BE%D0%BD%D1%83%22&destination=%22%D0%BF%D1%80%D0%BE%D1%81%D0%BF%D0%B5%D0%BA%D1%82%20%D0%9A%D0%BE%D1%81%D0%BC%D0%BE%D0%BD%D0%B0%D0%B2%D1%82%D0%BE%D0%B2,%202,%20%D0%A0%D0%BE%D1%81%D1%82%D0%BE%D0%B2-%D0%BD%D0%B0-%D0%94%D0%BE%D0%BD%D1%83%22&departure_time=now&trafficmodel=bestguess&mode=driving&language=ru&key=AIzaSyCXa8ey_jk1S958u6Df_8dZO3kjxkUHowg
$from="Космос,%20Стартовая%20ул.,%201,%20Ростов-на-Дону,%20Ростовская%20обл.,%20344092";//Откуда, можно координаты или название улицы
$to=gg("admin.GEO_toAddress");
if ($to == "работы") {
$address="проспект%20Космонавтов,%202,%20Ростов-на-Дону";//Куда, можно координаты или название улицы
}
else
{
// подменяем пробелы, иначе не обрабатывается
$address = str_replace(' ','%20',$to);
$address = $address."%20Ростов-на-Дону,%20Ростовская%20обл.";
}
$start_time="now";// Время отправления, можно использовать now, время как целое число в секундах с полуночи 1 января 1970 г. по UTC
$api_key=gg("admin.GEO_api_key"); //апи ключ гугл
$URL = "https://maps.googleapis.com/maps/api/directions/json?origin=".$from."&destination=".$address."&departure_time=".$start_time."&trafficmodel=bestguess&mode=driving&language=ru&key=".$api_key;
$data = getUrl( $URL );
$json = json_decode( $data );
$distance = $json->routes[0]->legs[0]->distance->text;// Расстояние
sg("admin.GEO_distance",$distance);
$duration = $json->routes[0]->legs[0]->duration->text;// Продолжительность маршрута
sg("admin.GEO_duration",$duration);
$duration_in_traffic=$json->routes[0]->legs[0]->duration_in_traffic->text; //Продолжительность маршрута с учетом дорожной обстановки
sg("admin.GEO_duration_in_traffic",$duration_in_traffic);
//$summary = $json->routes[0]->summary[0]->text;// Ключевая точка маршрута
$summary=$json->routes[0]->summary;
//DebMes("Маршрут до ".gg("admin.GEO_toAddress"));
//DebMes("Расстояние ".$distance);
//DebMes("Конечный адрес ".$json->routes[0]->legs[0]->end_address);
// если указан маршрут до работы, то рассчитываем среднее время по истории
if ($to == "работы") {
sg('admin.GEO_TimeToWork', $duration_in_traffic); //сохраняем время пути
$avgtime = getHistoryAvg("admin.GEO_TimeToWork", strtotime("-7 day"));
$sum = $duration_in_traffic - $duration; // Считаем время: время с пробками - время без пробок
$sum_avg = $duration_in_traffic - $avgtime;
$sum_avg_end = preg_replace('/[^-]/', '', $sum_avg);
if ($sum_avg_end == '-') { $plusminus = ' быстрее'; } else { $plusminus = ' дольше'; }
$res = '';
if ($sum > 0)
{ //проверяем есть ли пробки
$res .= 'Путь от дома до работы c учетом пробок займет примерно '.$duration_in_traffic.' ';
$res .= 'Что на '.abs(round($sum_avg)).' '.chti(round($sum_avg), 'минуту', 'минуты', 'минут').$plusminus.' обычного.';
}
else {
$res .= 'Путь от дома до работы займет примерно '.$duration;
}
say($res,1);
}
else
{
say("Маршрут с учетом пробок до ".gg("admin.GEO_toAddress")." займет ".$duration_in_traffic." через ".$summary);
//DebMes("Через - ".$summary);
}
|
Manual_DB_save
|
Ручное сохранение БД
safe_exec("sudo php ./scripts/manual_db_save.php");
|
ResetContext
|
Сброс контекста в сценариях при глюках
SQLExec("UPDATE users SET ACTIVE_CONTEXT_ID=0 WHERE 1");
|
Restart_cycle
|
Перезапуск циклов
safe_exec("sudo /var/www/restart.sh");
|
SysInfo
|
Вытягиваем температуру, загрузку проца и т.п. с малинки
//Загрузка процессора
$cpus='"Cpu(s)"';
$cpus2="'{print $2 + $4}'";
$cpuloads = exec('top -b -n1 | grep '.$cpus." | awk ".$cpus2);
sg('OHM.cpuload',$cpuloads);
//Температура проца
$cpu_temp=`cat /sys/class/thermal/thermal_zone0/temp` / 1000;
$cpu_temp=round($cpu_temp,1);
setGlobal("OHM.cputemp",$cpu_temp);
//Время запуска
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('OHM.Uptime',trim($uptime[0]));
//Загрузка памяти
$mem_total=exec("vmstat -s -S M | grep mem | grep total | awk '{print $1}'");
$mem_used=exec("vmstat -s -S M | grep mem | grep used | awk '{print $1}'");
$sys_memory=round($mem_used/$mem_total*100, 2);
//$sys_memory=round($mem_used/$mem_total*100, 2) ."%";
setGlobal("OHM.memoryload",$sys_memory);
//-------------------------
//Сколько места на флешке
$bytes = disk_free_space(".");
$tbytes = disk_total_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('OHM.hddFreeSpaceC',$temp);
$class = min((int)log($tbytes , $base) , count($si_prefix) - 1);
$temp = round($tbytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('OHM.hddTotalSpace',$temp);
$bytes = disk_free_space(".");
$tbytes = disk_total_space(".");
$bytes = $tbytes - $bytes;
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('OHM.hddSpaceUsed',$temp);
|
systemMaintenance
|
Обслуживание системы (чистка логов, rss)
// Оптимизация данных
$host = 'localhost';
$fp = popen('nohup php -f $host/scripts/optimize_history.php &', 'r');
pclose($fp);
//safe_exec("curl.exe --max-time=1800 $host/scripts/optimize_history.php");
// Оптимизация новостей
SQLExec("DELETE FROM rss_items WHERE TO_DAYS(NOW())-TO_DAYS(ADDED)>3");
|
AutoRemoteMessage
|
отправка сообщения в сервис AutoRemote
if ($params['msg']) {
$msg=$params['msg'];
} else {
$msg='hi';
}
if ($params['ip']) {
$ips=array($params['ip']);
} else {
$ips=array('192.168.0.60','192.168.0.90');
}
$service_port='7999';
foreach($ips as $ip) {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br/>\n";
return 0;
}
$result = socket_connect($socket, $ip, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
socket_write($socket, $msg, strlen($msg));
socket_close($socket);
echo "<hr>";
}
|
HappyBirthday
|
Поздравление с ДР по почте
$today=strftime("%d.%m");
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
if (gg($obj['TITLE'].".birthday") == $today){
$from=gg('ThisComputer.EMail');
$to=gg($obj['TITLE'].".EMail");
$subj="Поздравляю, ".gg($obj['TITLE'].".fullName")."!";
$bodytext="С днем рождения! ";
say(gg($obj['TITLE'].".Name").'! '.$bodytext);
$bodytext.=getRandomLine(birthday);
$bodytext.=" (Алиса)";
$headers = "Content-type: text/plain; charset=utf-8 \r\n";
// Mail($to, $subj, $bodytext,$headers);
// в модуле /var/www/lib/general.class.php сделаны поправки, иначе заголовок кривой
// $mail->setHTMLCharset('UTF-8');
// $mail->setHeadCharset('UTF-8');
// своя папка с 20 поздравительными с ДР картинками
$dir = '/var/www/html/img/giftcard';
$files = scandir($dir);
$random = rand (2,21);
$attach = $dir.'/'.$files["$random"];
SendMail_HTML($from, $to, $subj, $bodytext, $attach);
}
}
|
readQuotes
|
Чтение цитаты
$Record=SQLSelectOne("SELECT BODY FROM app_quotes ORDER BY RAND() LIMIT 1");
$out = $Record['BODY'];
say($out);
|
ReadRssNews
|
Проговаривает последние новости
$last_id=getGlobal('ThisComputer.LastNewsId');
if ($last_id == 0) {
$values=SQLSelect("SELECT * FROM rss_items WHERE ID > (SELECT MAX(id) FROM rss_items) - 5");
$last_id = $values[0]['ID'];
// DebMes("last_id=".$last_id);
// say("Ошибка! Пустой параметр ластайди", 1);
// exit;
}
$values=SQLSelect("SELECT * FROM rss_items WHERE ID >".$last_id);
if($values) {
$total=count($values);
$maxnews = 30;
$startfrom = 0;
if ($total > $maxnews){
$startfrom = $total - $maxnews;
say("Новостей больше $maxnews", 1);
} else {
say("Новости", 1);
}
for($i=$startfrom;$i<$total;$i++){
$sql="SELECT * FROM rss_items WHERE ID =".$values[$i]['ID'];
$value=SQLSelectOne($sql);
say($value['TITLE'].".",1);
// DebMes($value['TITLE'].".");
};
$last_id=$value['ID'];
setGlobal('ThisComputer.LastNewsId',$last_id);
} else {
say("Нет новых новостей", 1);
};
|
readWeatherToday
|
погода сейчас
//$weather.="Сегодня ожидается ".str_replace('°',' ',getGlobal('weatherToday'));
//$weather.=". Завтра ".str_replace('°',' ',getGlobal('weatherTomorrow'));
//$weather.=". Сейчас на улице ".getGlobal('TempOutside').'.';
// сделаем на кухне потише, чтобы прослушать погоду
$vol = 28;
sg('OnkyoZone3.VolumeLevel',$vol);
cm('OnkyoZone3.VolumeChanged');
$weather.="Сейчас на улице ".getGlobal('Rostov.Temp').' градусов,'.getGlobal('Rostov.Type');
$weather.=". Влажность - ".getGlobal('Rostov.Humidity').' %';
if (round(getGlobal('Rostov.WindSpeed')) > 4) {
$wdesc = 'метров';
}
else
{
$wdesc = 'метра';
}
$weather.=". Скорость ветра - ".round(getGlobal('Rostov.WindSpeed')).' '.$wdesc.' в секунду';
$weather=str_replace('°','',$weather);
$weather.=". За окном: Температура - ".getGlobal('ws.tempOutside').' градусов, влажность - '.getGlobal('ws.relHumOutside').' %';
say($weather,1);
sleep(20);
//проговорим события на день
RunScript('sayTodayAgenda');
// вернем громкость
sleep(10);
$vol = 43;
sg('OnkyoZone3.VolumeLevel',$vol);
cm('OnkyoZone3.VolumeChanged');
|
reportStatus
|
Статус системы
$res='';
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают в штатном режиме';
} else {
if (gg('Security.stateColor')!='green') {
$res.=" Проблема безопасности: ".getGlobal('Security.stateDetails');
}
if (gg('System.stateColor')!='green') {
$res.=" Системная проблема: ".getGlobal('System.stateDetails');
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи: ".getGlobal('Communication.stateDetails');
}
}
say($res,5);
|
sayTodayAgenda
|
Cкрипт, который по утрам может говорить запланированные на сегодня дела и события, используя данные из модуля Календарь
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'];
}
}
// Tasks
$total_tasks=count($tasks);
if ($total_tasks) {
$say_phrase.="У вас на сегодня запланированы задачи. ";
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$tasks[$i].". ";
}
} else {
say("Никаких дел не запланировано.");
}
// Events
$total_cals=count($cals);
if ($total_cals) {
$say_phrase.=("Сегодняшние события. ");
for($i=0;$i<$total_cals;$i++) {
$say_phrase.=$cals[$i].'. ';
}
}
}
$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) {
say($say_phrase,3);
}
|
SendReading
|
Отправим показания (пока себе)
$today=strftime("%d.%m.%Y");
// $from=gg('ThisComputer.EMail');
$from="slgeo@mail.ru";
$to=gg('admin.EMail');
$subj="Показания счетчика на ".$today."\r\n";
$bodytext.="Электроэнергия (текущие показания) = ".gg("PowerMeter.TotalKWh")." Квт/ч \r\n";
$bodytext.="Электроэнергия (прошлый месяц) = ".gg("PowerMeter.TotalKWh_LastMonth")." Квт/ч \r\n";
$Result = gg("PowerMeter.TotalKWh")-gg("PowerMeter.TotalKWh_LastMonth");
$bodytext.="Электроэнергия (истрачено) = ".$Result." Квт/ч \r\n";
$Result = $Result + gg("PowerMeter.TotalKWh_Start");
$bodytext.="Электроэнергия Итого = ".$Result." Квт/ч \r\n";
$bodytext.="Электроэнергия Итого(округл.) = ".Round($Result)." Квт/ч \r\n";
$headers = "Content-type: text/plain; charset=utf-8 \r\n";
SendMail_HTML($from, $to, $subj, $bodytext, $attach);
|
CloseBlind
|
закроем шторы
sg("FirstBlind.Status",1);
// запланируем остановить через 21 секунду
SetTimeOut("StopBlind",'sg("FirstBlind.Status",0);', 21);
sg("SecondBlind.Status",1);
// запланируем остановить через 36 секунду
SetTimeOut("StopBlind",'sg("SecondBlind.Status",0);', 36);
|
CloseSunBlind
|
закроем фоновые жалюзи
say("Закрываю жалюзи",0);
cm("SunBlind4.TurnOff");
SetTimeOut("SunBlind5_TurnOn",'cm("SunBlind5.TurnOff");', 2);
SetTimeOut("SunBlind1_TurnOn",'cm("SunBlind1.TurnOff");', 4);
SetTimeOut("SunBlind2_TurnOn",'cm("SunBlind2.TurnOff");', 6);
SetTimeOut("SunBlind3_TurnOn",'cm("SunBlind3.TurnOff");', 8);
|
CloseSunBlind45
|
закроем фоновые жалюзи
say("Закрываю фоновые жалюзи",0);
cm("SunBlind4.TurnOff");
cm("SunBlind5.TurnOff");
|
OpenBlind
|
откроем шторы
sg("FirstBlind.Status",2);
// запланируем остановить через 22 секунд
SetTimeOut("StopBlind",'sg("FirstBlind.Status",0);', 22);
sg("SecondBlind.Status",2);
// запланируем остановить через 37 секунд
SetTimeOut("StopBlind",'sg("SecondBlind.Status",0);', 37);
|
OpenSunBlind
|
откроем жалюзи
// откроем жалюзи
say("Открываю жалюзи",0);
cm("SunBlind4.TurnOn");
SetTimeOut("SunBlind5_TurnOn",'cm("SunBlind5.TurnOn");', 2);
SetTimeOut("SunBlind1_TurnOn",'cm("SunBlind1.TurnOn");', 4);
SetTimeOut("SunBlind2_TurnOn",'cm("SunBlind2.TurnOn");', 6);
SetTimeOut("SunBlind3_TurnOn",'cm("SunBlind3.TurnOn");', 8);
|
OpenSunBlind45
|
откроем фоновые жалюзи
say("Открываю фоновые жалюзи",0);
cm("SunBlind4.TurnOn");
cm("SunBlind5.TurnOn");
|
PlayCinemaOnIconbit
|
Навигация и запуск фильма на медиаплеере Iconbit
sg('Iconbit.BLeft',1);
sg('Iconbit.BLeft',1);
sg('Iconbit.BOk',1);
sg('Iconbit.BOk',1);
sleep(5);
sg('Iconbit.BDown',1);
sg('Iconbit.BDown',1);
sg('Iconbit.BDown',1);
sg('Iconbit.BDown',1);
//sg('Iconbit.BDown',1);
sg('Iconbit.BDown',1);
sg('Iconbit.BOk',1);
sleep(1);
sg('Iconbit.BDown',1);
sg('Iconbit.BDown',1);
sg('Iconbit.BDown',1);
sg('Iconbit.BPlay',1);
SetTimeOut("IconbitOK",'sg("Iconbit.BOk",1);', 3);
|
PlayCinemaOnMinix
|
Ищет фильм в медиатеке и проигрывает на Minix
(шаблон "запусти фильм")
$CinemaName=($params["name"]);
if ($CinemaName == "") { $CinemaName = "Пила"; }
$title = $CinemaName;
$title = mb_strtolower($title, 'UTF-8');
$title = mb_strtoupper(mb_substr($title, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($title, 1, null,'UTF-8');
debmes('Ищем фильм '.$title);
say('Ищем фильм '.$title);
$CinemaName = str_replace(' ', '*', $title);
foreach (glob("/media/WD/HD/$CinemaName*.*") as $bzfile) {
$text = $bzfile;
$arr = explode('/',$text);
$filename = $arr[(count($arr) - 1)];
}
debmes("Оригинальное имя файла - ".$filename);
if ($filename != ''){
$filename = str_replace(' ', '%20', $filename);
$path ="nfs://".gg("WD.IP_address")."/mnt/HD/HD_a2/Public/HD/".$filename;
debmes("filename - ".$path);
// Вместо строки "smb://192.168.1.102/Media/films/" надо вписать свой путь к видео файлам, такой же как и прописан в коди
// $link="nfs://".gg("WD.IP_address")."/mnt/HD/HD_a2/Public/HD/".$path;
// $link="nfs://192.168.0.121/mnt/HD/HD_a2/Public/HD/Конвой.2012.O.DVDRip.avi";
// Апи запрос. Здесь вместо "http://192.168.1.101:8888" нужно вписать свой адрес плеера и порт. (Двойные кавычки заменены на %22, при отправке запроса с кавычками не работало)
fopen("http://".gg("Minix.Kodi_User").":".gg("Minix.Kodi_pass")."@".gg("Minix.IP_address").":8080/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Open%22,%22params%22:{%22item%22:{%22file%22:%20%22$path%22}},%22id%22:1}", 'r');
}
else
{
say("Ничего не найдено");
debmes("Ничего не найдено");
}
|
PlayMusic_Zone1
|
Включение музыки в зале
sg('OnkyoMain.Status',1);
cm('OnkyoMain.turnChanged');
sleep(2);
sg('OnkyoMain.Source','28');
cm('OnkyoMain.SourceChanged');
sleep(3);
cm('OnkyoMain.Play');
|
PlayMusic_Zone2
|
Включение музыки в спальне
//sg('OnkyoZone2.Status',1);
//cm('OnkyoZone2.turnChanged');
//sleep(2);
//sg('OnkyoZone2.Source','28');
//cm('OnkyoZone2.SourceChanged');
//sleep(3);
//cm('OnkyoZone2.Play');
|
PlayMusic_Zone3
|
Включение музыки на кухне
sg('OnkyoZone3.Status',1);
cm('OnkyoZone3.turnChanged');
sleep(2);
sg('OnkyoZone3.Source','28');
cm('OnkyoZone3.SourceChanged');
sleep(3);
cm('OnkyoZone3.Play');
|
PlayNextTrack
|
Следующий трек
$command="!1NTCTRUP";
cm('OnkyoMain.SendCommand',array('OnkyoCommand'=>$command));
|
PlayPrevTrack
|
Предыдущий трек
$command="!1NTCTRDN";
cm('OnkyoMain.SendCommand',array('OnkyoCommand'=>$command));
|
PlayRadio_Zone1
|
Включение радио в Зоне 1 (Основная)
//sg('OnkyoMain.Status',1);
//cm('OnkyoMain.turnChanged');
sg("OnkyoMain.BPowerToogle",1);
//SetTimeOut("Onkyo_Source1",'sg("OnkyoMain.Source",28);', 29);
//SetTimeOut("Onkyo_Source2",'cm("OnkyoMain.SourceChanged");', 30);
// при слишком маленьком времени не успевает после загрузки ресивера подключиться Ethernet
SetTimeOut("Onkyo_Source1",'sg("OnkyoMain.Source",28);', 60);
// переключаем на авторадио
SetTimeOut("Onkyo_RadioNum",'sg("OnkyoMain.RadioNum",2);', 63);
SetTimeOut("Onkyo_SetRadio",'cm("OnkyoMain.Play");', 65);
// сделаем погромче
SetTimeOut("Onkyo_SetVolume",'sg("OnkyoMain.VolumeLevel",35);', 65);
SetTimeOut("Onkyo_SetRadio",'cm("OnkyoMain.VolumeChanged");', 65);
|
PlayRadio_Zone2
|
Включение радио в Зоне 2 (Спальня)
sg("OnkyoMain.BPowerToogle",1);
sg('OnkyoZone2.Source','28');
SetTimeOut("Onkyo_Source",'cm("OnkyoZone2.SourceChanged");', 60);
// переключаем на авторадио
SetTimeOut("Onkyo_Source",'sg("OnkyoZone2.RadioNum",2);', 63);
SetTimeOut("Onkyo_SetRadio",'cm("OnkyoZone2.Play");', 65);
|
PlayRadio_Zone3
|
Включение радио в Зоне 3 (Кухня)
//cm('VuSolo2.SwitchOnOff');
//SetTimeOut("RadioOn",'cm("VuSolo2.SetRadio");', 1);
//sg('OnkyoZone3.Status',1);
//cm('OnkyoZone3.turnChanged');
//sg("OnkyoMain.BPowerToogle",1);
sg('OnkyoZone3.Source','28');
SetTimeOut("Onkyo_Source",'cm("OnkyoZone3.SourceChanged");', 5);
// переключаем на авторадио
SetTimeOut("Onkyo_Source",'sg("OnkyoZone3.RadioNum",2);', 7);
SetTimeOut("Onkyo_SetRadio",'cm("OnkyoZone3.Play");', 10);
|
ShowCinema
|
просмотр кино на проекторе
// включаем ресивер
sg("OnkyoMain.BPowerToogle",1);
// переключаем вход на ресивере
SetTimeOut("Onkyo_BInputBD",'sg("OnkyoMain.BInputBD",1);', 5);
// переключаем выход на ресивере
SetTimeOut("Onkyo_BHDMI2Out",'sg("OnkyoMain.BHDMI2Out",1);', 7);
// закрываем шторы
RunScript("CloseBlind");
// закрываем жалюзи
RunScript("CloseSunBlind");
// включаем медиаплеер
sg('Minix.btPower',1);
SetTimeOut("Minix_Left1",'sg("Minix.btLeft",1);', 40);
SetTimeOut("Minix_Left2",'sg("Minix.btLeft",1);', 41);
SetTimeOut("Minix_Ok_Kodi",'sg("Minix.btOk",1);', 42);
// опускаем экран
sg('ProjectorScreen.Status',1);
// включаем проектор
sg('Iconbit.EpsonOn',1);
// включаем фильм после загрузки медиаплеера
SetTimeOut("PlayCinemaOnMinix",'RunScript("PlayCinemaOnMinix");', 62);
SetTimeOut("LightOff",'sg("Switch_Hall.BOff",1);', 70);
|
StandbyTVSamsung
|
включение ТВ в спальне
getURL('http://192.168.0.232:8081/web/powerstate?newstate=0', 0);
|
StandBy_Zone1
|
Выключение Зоны 1
sg('OnkyoMain.Status',0);
cm('OnkyoMain.turnChanged');
|
Standby_Zone2
|
Выключение Зоны 2
sg('OnkyoZone2.Status',0);
cm('OnkyoZone2.turnChanged');
|
Standby_Zone3
|
Выключение Зоны 3
sg('OnkyoZone3.Status',0);
cm('OnkyoZone3.turnChanged');
|
StopUSBMusic_Zone2
|
Выключение музыки в зоне2
$command="!1NTCSTOP";
cm('OnkyoMain.SendCommand',array('OnkyoCommand'=>$command));
|
TVPhilipsOff
|
выключение ТВ в зале
cm("PhilipsTV.TurnSwitched");
sg('OnkyoMain.Status',0);
cm('OnkyoMain.turnChanged');
cm('VuSolo2.SwitchOnOff');
|
TVPhilipsOn
|
включение ТВ в зале
cm("PhilipsTV.TurnSwitched");
sg('OnkyoMain.Status',1);
cm('OnkyoMain.turnChanged');
sleep(2);
sg('OnkyoMain.Source','01');
cm('OnkyoMain.SourceChanged');
sleep(3);
cm('OnkyoMain.Play');
cm('VuSolo2.SwitchOnOff');
|