FindAlarmClock
|
Когда сработает будильник
$TimeShift='-18';
$date = new DateTime(getGlobal('AlarmClock01.AlarmTime'));
$date->modify("{$TimeShift} minute");
$i=$date->format('H:i');
echo $i;
SQLExec( "UPDATE scripts SET RUN_TIME = '$i' WHERE TITLE = 'sunRise'");
function global_set ($nearest_alarm) {
if (getGlobal('AlarmClock01.AlarmOn') || getGlobal('AlarmClock02.AlarmOn') || getGlobal('AlarmClock03.AlarmOn') == 1) {
sg('GlobalAlarm.AlarmOn',1);
sg('GlobalAlarm.AlarmValue','<font color=lime>Вкл</font>');
$nearest_alarm = rus_date("D \в H:i", $nearest_alarm);
sg("GlobalAlarm.nextTimeDate", '<font color=lime>'.$nearest_alarm.'</font>');
} else {
sg('GlobalAlarm.AlarmOn',0);
sg('GlobalAlarm.AlarmValue','<font color=red>Выкл</font>');
sg('GlobalAlarm.nextTimeDate','<font color=red>Выкл</font>');
}
}
$enddate = array();
$nowdate = date("N");
$wd = $nowdate - 1;
$objects=getObjectsByClass("AlarmClock ");
function find ($clock, $date, $weak) {
$ii = 0;
for ($i=$weak; $i<7; $i++) {
$currentTime = time();
$targetTime = strtotime($clock."+".$ii++." day");
if (($currentTime<$targetTime) && ($date{$i}==1)) {
return $targetTime;
break;
}
if ($ii==8) {
break;
}
if ($i==6) {
$i=-1;
}
}
}
foreach($objects as $obj) {
$v++;
if (gg($obj["TITLE"].'.AlarmOn')==1) {
if (gg($obj["TITLE"].'.once')!=1) {
array_push($enddate, find (gg($obj["TITLE"].'.AlarmTime'), gg($obj["TITLE"].'.days'), $wd));
}
elseif (gg($obj["TITLE"].'.once')==1) {
array_push($enddate, find (gg($obj["TITLE"].'.AlarmTime'), "1", "0"));
}
}
}
$nearest_alarm = min($enddate);
global_set ($nearest_alarm);
//print_r("Ближайший будильник сработает:".$nearest_alarm."<br />");
function rus_date() {
$translate = array(
"am" => "дп",
"pm" => "пп",
"AM" => "ДП",
"PM" => "ПП",
"Monday" => "Понедельник",
"Mon" => "Пн",
"Tuesday" => "Вторник",
"Tue" => "Вт",
"Wednesday" => "Среда",
"Wed" => "Ср",
"Thursday" => "Четверг",
"Thu" => "Чт",
"Friday" => "Пятница",
"Fri" => "Пт",
"Saturday" => "Суббота",
"Sat" => "Сб",
"Sunday" => "Воскресенье",
"Sun" => "Вс",
"January" => "Января",
"Jan" => "Янв",
"February" => "Февраля",
"Feb" => "Фев",
"March" => "Марта",
"Mar" => "Мар",
"April" => "Апреля",
"Apr" => "Апр",
"May" => "Мая",
"May" => "Мая",
"June" => "Июня",
"Jun" => "Июн",
"July" => "Июля",
"Jul" => "Июл",
"August" => "Августа",
"Aug" => "Авг",
"September" => "Сентября",
"Sep" => "Сен",
"October" => "Октября",
"Oct" => "Окт",
"November" => "Ноября",
"Nov" => "Ноя",
"December" => "Декабря",
"Dec" => "Дек",
"st" => "ое",
"nd" => "ое",
"rd" => "е",
"th" => "ое"
);
if (func_num_args() > 1) {
$timestamp = func_get_arg(1);
return strtr(date(func_get_arg(0), $timestamp), $translate);
} else {
return strtr(date(func_get_arg(0)), $translate);
}
}
|
forSend
|
$options=array(
"temp"=>$temp,
);
echo json_encode($options, JSON_UNESCAPED_UNICODE);
|
ImportHoliday
|
Импорт праздничных дней
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar->calendar_getholidays();
|
light_from_GPS
|
Включение света по GPS
Say("Внимание!", 1);
Say("Приезжает Павел.", 1);
if ((gg('FordKuga.Alarm')!="0") && (timeBetween(getGlobal('DarknessMode.LightStreetSunSetTime'),getGlobal('SunRiseTime')))) {
cm('sonoff_Veranda.turnOn');
//cm('Relay08.turnOn');
if (gg('ThisComputer.newYear')==1) {
cm('SonoffRelay13.turnOn');
cm('mqttRelay09.turnOn');
}
Say("Включаю уличное освещение.", 1);
}
|
light_from_wi-fi
|
Включение света по wi-fi
if (gg('FordKuga.Alarm')!="0" && gg('sonoff_Veranda.status')=="0" && (timeBetween(getGlobal('DarknessMode.LightStreetSunSetTime'), "05:00"))) {
cm('sonoff_Veranda.turnOn');
}
//cm('Relay08.turnOn');
// cm('Relay07.turnOn');
//cm('mqttRelay09.turnOn');
|
player_scenes
|
Видео плеер для сцены
echo '<div class="switch-field">';
$defRadio = 'MediaRenderer01'; //Плеер по умолчанию
$Radio = $_GET['Radio'];
$objects=getObjectsByClass("SMediaRenderer");
foreach (array_reverse($objects) as $obj => $val) {
$obj1=getObject($val['TITLE']);
echo '<label for="switch_'.$val['ID'].'">'.($obj1-> description).'</label>
<input type="radio" id="switch_'.$val['ID'].'" name="switch" class="sw1" value="'.$val['TITLE'].'"';
if($Radio == '' || $Radio == $val['TITLE'] )echo 'checked';
echo '/><br>';
}
echo '</div>';
$films = SQLSelect("SELECT count(*) as Kol FROM mediaservers_playlist WHERE TYPE = 'Видео'");
ECHO "<div class ='row_film'>";
$i=0;
$KOL = $films[0]['Kol'];
$iii = ceil($KOL/10);
$page = $_GET['page'];
while ( $i< $iii )
{
ECHO '<input type="radio" id="page'.$i.'" class="a1" value="'.$i.'"';
if($page == $i ) echo 'checked';
echo '/>';
echo '<label for="page'.$i.'" id="plabel" class="plabel'.$i.'">'.$i.'</label>';
$i++;
}
//echo '<li class="next"><a href="#" title="next page">next page</a></li>';
echo '</div>';
//ECHO "</ul></tr></tr></table>";
$films = SQLSelect("SELECT TITLE,URL_LINK FROM mediaservers_playlist WHERE TYPE = 'Видео' ORDER BY TITLE ASC LIMIT ".($_GET['page']*10)." , 10");
echo '<table id="table" border="0" >';//style=" height: 500;"
foreach ($films as $key => $value) {
$med = $val['TITLE'];
if($Radio<>'') $med = $Radio;
echo "<tr><td><button id='kino' class='k1' value='../../?md=application&action=ajaxsetglobal&var=".$med.".playUrl&value=".$value['URL_LINK']."'>".$value['TITLE']."</button>";
}
echo '</table>';
echo '<table id="contr">';
echo '<tr><td colspan="2"><button class="fa" id="mute" title="Mute" onclick="ajaxSetGlobal("'.$med.'.mute_unmute", 1);">Mute</button></td></tr>';
echo '<tr><td><button class="fa" id="play" title="Play" onclick="ajaxSetGlobal("'.$med.'.pause_unpause", 0);">Play</button></td>';
echo '<td><button class="fa" id="pause" title="Pause" onclick="ajaxSetGlobal("'.$med.'.pause_unpause", 1);">Pause</button></td></tr>';
echo '<tr><td colspan="2"><button class="fa" id="stop" title="Stop" onclick="ajaxSetGlobal("'.$med.'.stop", 1);">Stop</button></td></tr>';
echo '</table>';
$_GET['vol'] = '12';
echo '<input type="range" name="Volume" id="range" class="vl1" onchange="ajaxSetGlobal("'.$med.'.volume", value);" value="'.$_GET['vol'].'" min="0" max="40" step="1"/>';
echo '<p class="volume" readonly>Vol.</p><input type="text" name="Volume" id="rangetext" class="volume" value="12" readonly />';
|
refresh terminal
|
Обновление страницы терминала
$address='192.168.24.252'; //ip-адрес терминала, явно видимый с сервера MDM
$service_port='7999';
function sendmdr($in, $address, $service_port) {
$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, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket);
}
$in='refresh'; //команда для отправки
sendmdr($in, $address, $service_port);
|
setMemo
|
для шаблона Напомни
//для шаблона Напомни
if(!$params['txt']) return;
$cmd = $params['txt'];
//https://regexr.com/
//$cmd = 'в 6:30 дня в следующий вторник проверить кое-что';
//$cmd = 'проверить кое-что через четверть часа';
//$cmd = 'вечером в выходные проверить кое-что';
//$cmd = 'проверить кое-что в полдень послезавтра';
//$cmd = 'через два с половиной часа сделать кое-что';
//$cmd = 'сделать кое-что через два с половиной часа';
debmes('setMemo - '.$cmd);
$cmd = mb_strtolower($cmd);
$newtime = 0;
$newdate = 0;
$cmd1 = preg_replace('/\s\s+/', ' ', $cmd); //уберём лишние пробелы
$chislo = array('один'=> '1','одну'=> '1','одни'=> '1','полтора' => '1.5','полторы' =>'1.5','два'=> '2','две'=> '2','двое'=> '2','три'=> '3','трое'=> '3','четыре'=> '4','четверо'=> '4','пять'=> '5','шесть'=> '6','семь'=> '7','восемь'=> '8','девять'=> '9');
$tim1 = array('минуту'=>'m','минуты'=>'m','минут'=>'m','часов'=>'H','часа'=>'H','час'=>'H','день'=>'D','дня'=>'D','дней'=>'D','сутки'=>'D','суток'=>'D');
$MonthNames = array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
//через?
if(preg_match('/через /isu', $cmd1)){
if(preg_match('/через полчаса/isu', $cmd1, $m)){
$cmd1 = str_replace('через полчаса','через 30 минут',$cmd1); //через полчаса -> через 30 минут
}
if(preg_match('/через четверть часа/isu', $cmd1, $m)){
$cmd1 = str_replace('через четверть часа','через 15 минут',$cmd1); //через полчаса -> через 30 минут
}
if(preg_match('/через (час|минуту|день|сутки)/isu', $cmd1, $m)){
$cmd1 = str_replace('через','через 1',$cmd1); //через час -> через 1 час
}
$half = 0;
if(preg_match('/(часов|часа|час) с половиной /isu', $cmd1, $m)){
$half = 0.5;
$cmd1 = str_replace('с половиной','',$cmd1);
$cmd1 = preg_replace('/\s\s+/', ' ', $cmd1); //уберём лишние пробелы
}
if(preg_match('/с половиной (часов|часа|час)/isu',$cmd1,$m)){
$half = 0.5;
$cmd1 = str_replace('с половиной','',$cmd1);
$cmd1 = preg_replace('/\s\s+/', ' ', $cmd1); //уберём лишние пробелы
}
//echo('<br>');
//echo('half-'.$half);
if(preg_match('/через (.+) (часов|часа|час|минуты|минуту|минут|день|дня|дней|сутки|суток)/isu', $cmd1, $m)){
//print_r($m);
$cmd1 = str_replace($m[0],'',$cmd1);
foreach($chislo as $key => $value) {$m[1] = str_replace($key,$value,$m[1]);} //'один'=> '1'
foreach($tim1 as $key => $value) {$m[2] = str_replace($key,$value,$m[2]);} //'минуту'=>'m','минуты'=>'m'...
//вычислим новое время
$delta = (float)$m[1];
if($delta<=0){
echo('wrong interval '.$delta);
say('Непонятно! Попробуйте задать время по другому',2);
return;
}
switch ($m[2]){
case 'm':
$newtime = time() + $delta*60;//minutes
break;
case 'H':
$newtime = time() + $delta*60*60 + $half*60*60;//hours
break;
case 'D':
$newtime = time() + $delta*60*60*24;//days ToDo - add to calendar?
break;
default:
say('Непонятно! Попробуйте переформулировать задание',2);
return;
}
AddScheduledJob($cmd1,"playSound('r2d2',1); say('Вы просили напомнить ".$cmd1."',5);",$newtime, 60);
$nmes=date( "n" , $newtime)-1;
$nmonth=$MonthNames[$nmes];
//echo("Задание напомнить ".$cmd1." установлено на ".date('G:i',$newtime)." ".date('d',$newtime)." ".$nmonth);
say("Задание напомнить ".$cmd1." установлено на ".date('G:i',$newtime)." ".date('d',$newtime)." ".$nmonth,2);
return;
}
}
////////////////////////////////////////////////////////////////////
$newtime = time();
if(preg_match('/(сегодня|завтра|послезавтра)/isu', $cmd1, $m)){
switch($m[0]){
case 'завтра':
$newtime = strtotime("+1 day");
break;
case 'послезавтра':
$newtime = strtotime("+2 days");
break;
case 'сегодня':
$newtime = date();
}
$cmd1 = str_replace($m[0],'',$cmd1);
}
if(preg_match('/в (следующий|следующую|следующее|следующие) /isu', $cmd1, $m)){
$cmd1 = str_replace($m[1],'',$cmd1);
}
if(preg_match('/в (этот|эту|это|эти) /isu', $cmd1, $m)){
$cmd1 = str_replace($m[1],'',$cmd1);
}
$cmd1 = preg_replace('/\s\s+/', ' ', $cmd1); //уберём лишние пробелы
if(preg_match('/(в|во) (понедельник|вторник|среду|четверг|пятницу|субботу|воскресенье|выходные) /isu', $cmd1, $m)){
switch($m[2]){
case 'понедельник':
$newtime = strtotime("next Monday");
break;
case 'вторник':
$newtime = strtotime("next Tuesday");
break;
case 'среду':
$newtime = strtotime("next Wednesday");
break;
case 'четверг':
$newtime = strtotime("next Thursday");
break;
case 'пятницу':
$newtime = strtotime("next Friday");
break;
case 'субботу':
$newtime = strtotime("next Saturday");
break;
case 'воскресенье':
$newtime = strtotime("next Sunday");
break;
case 'выходные':
$newtime = strtotime("next Saturday");
break;
}
$cmd1 = str_replace($m[0],'',$cmd1);
}
//проверим время
if(preg_match('/в (полдень|полночь)/isu', $cmd1)){
$cmd1 = str_replace('в полдень','в 12:00',$cmd1);
$cmd1 = str_replace('в полночь','в 23:59',$cmd1);
}
$cmd1 = preg_replace('/\s\s+/', ' ', $cmd1); //уберём лишние пробелы
if(preg_match('/(утром|вечером|днём|днем|ночью)/isu', $cmd1, $m)){ //напомни утром
$cmd2 = $m[0]; //для удаления
if(!preg_match('/в (\d+):(\d+)/isu', $cmd1)){ //
switch($cmd2){
case 'утром':
$newtimes = 'в 8:00';
break;
case 'вечером':
$newtimes = 'в 20:00';
break;
case 'днём':
$newtimes = 'в 13:00';
break;
case 'днем':
$newtimes = 'в 13:00';
break;
case 'ночью':
$newtimes = 'в 23:00';
break;
}
}
$cmd1 = str_replace($cmd2,$newtimes,$cmd1);
}
if(preg_match('/в (\d+):(\d+)/isu', $cmd1, $m)){
$hour = $m[1];
$minute = $m[2];
$cmd2 = $m[0]; //для удаления
if(preg_match('/в (\d+):(\d+) (ночи|дня|утра|вечера)/isu', $cmd1, $m)){
switch ($m[3]){
case 'дня':
if((int)$hour<12){$hour = $hour +12;} // в 3 часа дня = в 15:00
break;
case 'вечера':
if((int)$hour<12){$hour = $hour +12;} // в 6 часов вечера = в 18:00
break;
}
$cmd1 = str_replace($m[0],'',$cmd1);
}
$cmd1 = str_replace($cmd2,'',$cmd1);
$newtime = mktime( (int)$hour,(int)$minute,0,date("n",$newtime),date("j",$newtime), date("Y",$newtime));
if($newtime<time()){$newtime = strtotime(date('Y-m-d H:i',$newtime)."+ 1 days");}
}
AddScheduledJob($cmd1,"playSound('r2d2',1);sleep(2); say('Вы просили напомнить - ".$cmd1."',5);",$newtime, 60);
$nmes = date( "n" , $newtime)-1;
$nmonth = $MonthNames[$nmes];
say("Задание напомнить ".$cmd1." установлено на ".date('G:i',$newtime)." ".date('d',$newtime)." ".$nmonth,2);
//return;
|
SetСhoiceAlarmClock
|
Установка параметров будильника
$clock = $_GET['clock'];
if (gg('AlarmClock'.$clock.'.method')=='script') {
$check='1';
}
else if (gg('AlarmClock'.$clock.'.method')=='sound') {
$check='0';
}
$perform=gg('AlarmClock'.$clock.'.code');
$scode = $scode. '<option id="opt'.$clock.'" value="'.$perform.'">'.$perform.'</option>';
$sel = $_GET['sel'];
if ($sel == 'script') {
$cat_id = SQLSelect("SELECT ID FROM script_categories WHERE TITLE LIKE 'Будильники'");
$cat_id = current($cat_id);
$cat_id = current($cat_id);
$script = SQLSelect("SELECT TITLE FROM scripts WHERE CATEGORY_ID = '$cat_id' ORDER BY TITLE ASC");
foreach ($script as $obj => $val) {
$html = $html. '<option id="opt'.$clock.'" value="'.$val['TITLE'].'">'.$val['TITLE'].'</option>';
}
}
elseif ($sel == 'sound') {
$folder = './cms/sounds';
$list = scandir($folder);
foreach ($list as $item) {
if(stripos($item,'.mp3') === false) {
continue;
}
$html = $html. '<option id="opt'.$clock.'" value="'.$item.'">'.$item.'</option>';
}
}
$options=array(
"stcode"=>$scode,
"status"=>$check,
"HTML"=>$html,
"mysel"=>$sel,
);
echo json_encode($options, JSON_UNESCAPED_UNICODE);
|
sunRise
|
Плавный рассвет
if (getGlobal('DarknessMode.active')==0 or gg('AlarmClock01.AlarmOn')==0) return;
$brightness = gg("Rgb02.brightness");
if (gg("Rgb02.status") != 1){
cm('Rgb02.turnOn');
cm('Rgb02.turnOn');
}
if ($brightness >= 0 && $brightness < 100){
$brightness = $brightness + 2;
sg("Rgb02.brightness",$brightness);
if ($brightness >= 0 && $brightness < 30){
sg('Rgb02.color', 'FDA401');
}
if ($brightness >= 30 && $brightness < 100){
sg('Rgb02.color', 'FDB500');
}
SetTimeOut("sunriseTimer",'runScriptSafe("sunRise");', 24);
}
//elseif($brightness == 100){
// sg("Rgb01.brightness","0");
//}
return;
|
terminal_send
|
Отправка команд на терминалы
$address='192.168.24.252'; //ip-адрес терминала, явно видимый с сервера MDM
$service_port='7999';
$in=$_GET['send'];
//$in='screen:off'; //команда для отправки
$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, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket);
|
USD/EURO_Update
|
Обновление курсов валют
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));
// USD
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$USD = round(str_replace(",",".",$valute)*100)/100;
echo $USD;
sg("cbr.USD",$USD);
// EURO
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$EURO = round(str_replace(",",".",$valute)*100)/100;
echo $EURO;
sg("cbr.EURO",$EURO);
$uptime = date("d m Y H:i:s",time());
echo $uptime;
sg("cbr.uptime",$uptime);
|
Watching movie
|
say(LANG_GENERAL_SETTING_UP_LIGHTS,2);
// to-do
|