Сценарии

 
...
filesClearOld Проверить старые файлы 
keepLatestLimitedBySize('/var/www/media/webcam',500*1024*1024); //500Mb
keepLatestLimitedBySize('/var/www/media/webcam_sorted',500*1024*1024); //500Mb
keepLatestLimitedBySize('/var/www/backup',500*1024*1024); //500Mb
keepLatestLimitedBySize('/var/www/cached',50*1024*1024); //50Mb
maintenance Автоматическое обслуживание системы 
require(ROOT.'scripts/startup_maintenance.php');
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'];
 playMedia($path);
 //setTimeOut('VLCPlayer_update',"callMethod('VLCPlayer.update');",10);

}
playPause  
getURL('http://localhost/popup/app_player.html?ajax=1&command=pause',0);
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);
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
tellIPAddress произнести текущий IP-адрес 
$url="https://api.2ip.ua/provider.json?ip=";
	//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
	$ip=$data["ip"]; // что искали
echo "IP адрес ".$ip;
say("Ай-пи адрес ".$ip,2);

//runScript('updateCPUId');
//$res=exec('hostname -I');
//$ipv6_regex='/(\w{4})/is';
//$res = trim(preg_replace($ipv6_regex,'',$res));
//$ipv6_regex='/:(\w+)/is';
//$res = trim(preg_replace($ipv6_regex,'',$res));
//$res = trim(str_replace(':','',$res));
//say("Ай-пи адрес ".$res,2);


timeNow  
say(timeNow(),2);
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); 
}
Интернет Про интернет к которому я подключена. 
say ('Про интернет к которому я подключена.');
$url="https://api.2ip.ua/provider.json?ip=";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
	$ip=$data["ip"]; // что искали
	$name_ripe=$data["name_ripe"]; 
	$name_rus=$data["name_rus"]; 
	$site=$data["site"]; 
echo $ip;
$msgtxt = "IP адрес ".$ip;
say ("Провайдер ".$name_rus,5);
say ("Сайт провайдера ".$site,5);
say($msgtxt,9);
rs(SendSticker_v, array('stickerbody' => $msgtxt));

$url2="https://api.2ip.ua/geo.json?ip=".$ip;
echo $url2;
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url2), true);
	$country_rus=$data["country_rus"]; // что искали
	$region_rus=$data["region_rus"]; 
	$city_rus=$data["city_rus"]; 
say ("Мое местонахождение по мнению других:",5);
say ($country_rus,5);
//say ($region_rus,5);
say ($city_rus,5);
Тест возврата IP  
$url=$params['url'];
$ip=$params['ip'];

if ($ip == "") {
$ip=$_SERVER['REMOTE_ADDR'];
}
echo $ip;
 
<#LANG_GENERAL_OPERATIONAL_MODES#>
rebootSystem Перезапуск системы 
$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);
say("Подготовка к перезагрузке",2);
setTimeout("shutdownTimer","safe_exec('shutdown -r now');",15);
shutDown Выключение системы 
$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);
say("Подготовка к выключению",2);
setTimeout("shutdownTimer","safe_exec('shutdown -h now');",15);
 
Безопасность
camImagesProcess Сортировка изображений с веб-камеры 
$src='/var/www/media/webcam'; // откуда брать фотографии
clearTimeout('camImagesTimer');
$base_path='/var/www/dvr/unsorted';
$dst='/var/www/dvr/sorted';

safe_exec('chown pi:pi -Rf '.$base_path.'/*');
safe_exec('chmod 0777 -f '.$base_path.'/*');
setTimeout('camImagesTimer','runScript("camImagesProcess");',10*60);

if (is_dir($base_path)) {
 if ($dir = @opendir($base_path)) { 
  while (($file = readdir($dir)) !== false) { 
    if ($file!='.' && $file!='..' && is_dir($base_path.'/'.$file)) {
		$src=$base_path.'/'.$file;
     	echo $src.'<br/>';
     	processLine($src." -> ".$dst."/%Y/%m - %F/%d/".$file);
    }
  }   
  closedir($dir); 
 } 
} else {
 echo "Cannot open $base_path";
}

processLine("CLEAR ".$dst." 30 DAYS OLD");
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);
manageConnectService Включение/выключение сервиса синхронизации через облако 
include_once(DIR_MODULES.'connect/connect.class.php');
$cn=new connect();
$cn->getConfig();
if ($params['start']) {
  $cn->config['CONNECT_SYNC']='1';
  $cn->saveConfig();
}
if ($params['stop']) {
 $cn->config['CONNECT_SYNC']='0';
 $cn->saveConfig();
}
echo $cn->config['CONNECT_SYNC'];
manageWebCamMotion Включение/выключение детектора движений на камере 
if ($params['start']) {
 DebMes("Starting web-cam motion detection"); 
 getURL('http://localhost:8080/0/detection/start',0);
}
if ($params['stop']) {
 DebMes("Stopping web-cam motion detection");
 getURL('http://localhost:8080/0/detection/pause',0);
}
manageWebCamService Включение/выключение вебкамеры 
if ($params['start']) {
 safe_exec('cp /etc/motion/motion_enabled /etc/default/motion');
 safe_exec('service motion start'); 
}
if ($params['stop']) {
 safe_exec('cp /etc/motion/motion_disabled /etc/default/motion'); 
 safe_exec('service motion stop'); 
}
 
Даты
Ручной перезапуск дат  
// Дата и время
$h=(int)date('G',time());

// раскидываем дату и время если сейчас 00:00 час
if (($h!="00")) {
$day[0]="воскресенье";
$day[1]="понедельник";
$day[2]="вторник";
$day[3]="среда";
$day[4]="четверг";
$day[5]="пятница";
$day[6]="суббота";

$month[1]="января";
$monthAlt[1]="ЯНВАРЬ";
$month[2]="февраля";
$monthAlt[2]="ФЕВРАЛЬ";
$month[3]="марта";
$monthAlt[3]="МАРТ";
$month[4]="апреля";
$monthAlt[4]="АПРЕЛЬ";
$month[5]="мая";
$monthAlt[5]="МАЙ";
$month[6]="июня";
$monthAlt[6]="ИЮНЬ";
$month[7]="июля";
$monthAlt[7]="ИЮЛЬ";
$month[8]="августа";
$monthAlt[8]="АВГУСТ";
$month[9]="сентября";
$monthAlt[9]="СЕНТЯБРЬ"; 
$month[10]="октября";
$monthAlt[10]="ОКТЯБРЬ";
$month[11]="ноября";
$monthAlt[11]="НОЯБРЬ";
$month[12]="декабря";
$monthAlt[12]="ДЕКАБРЬ";

sg("ThisComputer.DateD",date( "d", time()));
sg("ThisComputer.DateM",date( "m", time()));
sg("ThisComputer.DateY",date( "Y", time()));
sg("ThisComputer.Date",date( "d.m.Y", time()));
sg("ThisComputer.Day",$day[date("w")]);
sg("ThisComputer.Month",$month[date("n")]);
sg("ThisComputer.MonthAlt",$monthAlt[date("n")]);
}
$paths=array('/var/log/*.1','/var/log/*.2',
             '/var/log/*.1.*',
             '/var/log/*.2.*',             
             '/var/log/*.3.*',
             '/var/log/*.4.*',
             '/var/log/*.5.*',
             '/var/log/*.6.*',
             '/var/log/*.7.*'
            );
foreach($paths as $p) {
 safe_exec('rm '.$p);
}
runScript('Hourly');
runScript('filesClearOld');
runScript('Сезон');
Сезон  
$Mes;
$Sez;


$Mes = getGlobal('ThisComputer'.'.'.'DateM');
if ($Mes == 12 || $Mes == 1 || $Mes == 2) {
  $Sez = 1;
} else if ($Mes == 3 || $Mes == 4 || $Mes == 5) {
  $Sez = 2;
} else if ($Mes == 6 || $Mes == 7 || $Mes == 8) {
  $Sez = 3;
} else if ($Mes == 9 || $Mes == 10 || $Mes == 11) {
  $Sez = 4;
}
setGlobal('ThisComputer'.'.'.'Sezon', $Sez);
 
Погода
weatherReceived Получить температуру снаружи 
setGlobal('ThisComputer.tempOutside',getGlobal('TempSad.value'));
Картинка  
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];

$page_url = "https://sinoptik.ua/%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0-%D0%BF%D0%BE%D0%BA%D1%80%D0%BE%D0%B2%D1%81%D0%BA-303012327";

		//----делаем до 13 запроса
for ($i = 0; $i <= 13; $i++) {
	if (!$page_cont) $page_cont = file_get_contents($page_url);
}

if ($page_cont) {
	
	//----  Картинка погоды  ----
	$sample1 = "/.rc=\"(.*?)\" src.et=/";		//Шаблон	
	preg_match_all($sample1, $page_cont, $nebo);		//Поиск
    $nebo1 = $nebo[1][0];
    $nebo2 = str_replace("\"","V",$nebo1);   // меняем символ 
    $nebo2 = str_replace("V", "", $nebo2);    // меняем символ 
    var_dump($nebo);	//дамп информации о переменной.
	$nebourl = "https://sinoptik.ua" . $nebo2;
	echo "<br>" . $nebo[0][0];
	echo "<br>" .  "--------";
	echo "<br>" . $nebourl ;
	
	echo "<br>" . "____WWWWWW_____ ";
	

}
		//---- Запись значений  ----
sg( "pog_fact.img", $nebourl);					//URL картинки		
Луна Фаза луны 
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];

$page_url = "https://weather.com/ru-EE/weather/tenday/l/8d0e8176a90be5e941d5336b1c4345151e521459234aed9f2ba098128cc5ee57";

		//----делаем до 13 запросоа
for ($i = 0; $i <= 13; $i++) {
	if (!$page_cont) $page_cont = file_get_contents($page_url);
}
if ($page_cont) {
	//$page_cont = str_replace("\r", "", $page_cont);
	//$page_cont = str_replace("\n", "", $page_cont);
		//----  Фаза луны.
	$res_f = "/<span data-testid=\"moonPhase\" class=\"DetailsTable--moonPhrase--AB7uO\">(.*?)<\/span>/";	//Шаблон	
	preg_match_all($res_f, $page_cont, $lun_f);					//Поиск 
	//var_dump($lun);										//дамп информации о переменной.
	$luna_f =  strip_tags($lun_f[0][0]);   //Убираем тэги
	echo "<br>" . " ------------------------ ";
	echo "<br>" .  $luna_f;
	echo "<br>" . " ------------------------- ";
		//----  Восход луны.
	$res_v = "/<span data-testid=\"MoonriseTime\" class=\"DetailsTable--value--pWEVz\">(.*?)<\/span>/";	//Шаблон	
	preg_match_all($res_v, $page_cont, $lun_v);					//Поиск 
	//var_dump($lun);										//дамп информации о переменной.
	$luna_v =  strip_tags($lun_v[0][0]);   //Убираем тэги
	echo "<br>" . " ------------------------ ";
	echo "<br>" .  $luna_v;
	echo "<br>" . " ------------------------- ";
		//----  Заход луны.
	$res_z = "/<span data-testid=\"MoonsetTime\" class=\"DetailsTable--value--pWEVz\">(.*?)<\/span>/";	//Шаблон	
	preg_match_all($res_z, $page_cont, $lun_z);					//Поиск 
	//var_dump($lun);										//дамп информации о переменной.
	$luna_z =  strip_tags($lun_z[0][0]);   //Убираем тэги
	echo "<br>" . " ------------------------ ";
	echo "<br>" .  $luna_z;
	echo "<br>" . " ------------------------- ";
}
sg( "pog_fact.luna_faza", $luna_f );   		//Фаза луны
sg( "pog_fact.luna_vosxod", $luna_v );   	//Восход луны
sg( "pog_fact.luna_zaxod", $luna_z );   	//Заход луны
Погода сейчас Погода сейчас (говорить) 
say ('Температура в кабинете '.gg('TempKuxnya.value').' градусов цельсия. На улице '.gg('TempSad.value').' градусов, '.gg('pog_fact.pogoda').', ветер,  '.gg('pog_fact.veter_napr').' , '.gg('pog_fact.veter_skorost').' километров в час, влажность '.gg('HumSad.value').' процентов.'.gg('pog_fact.pgd_razvernuto'),2);
Прогноз на завтра  
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];

$page_url = "https://weather.com/ru-EE/weather/tenday/l/8d0e8176a90be5e941d5336b1c4345151e521459234aed9f2ba098128cc5ee57";

		//----делаем до 13 запросоа
for ($i = 0; $i <= 13; $i++) {
	if (!$page_cont) $page_cont = file_get_contents($page_url);
}
if ($page_cont) {
	//$page_cont = str_replace("\r", "", $page_cont);
	//$page_cont = str_replace("\n", "", $page_cont);
		//----  Погода завтра развёрнуто.
	$re3 = "/<p data-testid=\"wxPhrase\" class=\"DailyContent--narrative--jqi6P\">(.*?)<\/p><\/div>/";	//Шаблон	
	preg_match_all($re3, $page_cont, $seg);					//Поиск 
	//var_dump($seg);										//дамп информации о переменной.
	$zet =  strip_tags($seg[0][1]);   //Убираем тэги
	echo "<br>" . " ------------------------ ";
	echo "<br>" .  $zet;
	echo "<br>" . " ------------------------- ";
}
sg( "pog_prognoz.pgd_razvernuto", $zet );   		//Погода развёрнуто
Прогноз погоды Прогноз погоды (говорить) 
$weather.="Сегодня : ".str_replace('&deg;',' ',getGlobal('pog_fact.pgd_razvernuto'));
$weather.=". Завтра : ".str_replace('&deg;',' ',getGlobal('pog_prognoz.pgd_razvernuto'));
$weather.=". Сейчас на улице ".getGlobal('TempSad.value').' градусов.';
$weather=str_replace('&deg;','',$weather);
say($weather,2);
Световой день  
$datetime1 = date_create(gg( "pog_fact.vosxod", $svden ));
$datetime2 = date_create(gg( "pog_fact.zakat", $svden ));
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%h часов %i минут');
$svden = $interval->format('%h часов %i минут');
sg( "pog_fact.svet_den", $svden );   			//Световой день
Синоптик Парсер 
if (isset($params["level"])) $level = $params["level"]; else $level = 1;
if (!isOnline('Internet')) { say("Нет доступа в Интернет!", $level); return; }
if (isset($params["change"])) $change = $params["change"];

$page_url = "https://weather.com/ru-EE/weather/today/l/8d0e8176a90be5e941d5336b1c4345151e521459234aed9f2ba098128cc5ee57";
$page_url_2 = "https://weather.com/ru-EE/weather/hourbyhour/l/8d0e8176a90be5e941d5336b1c4345151e521459234aed9f2ba098128cc5ee57#detailIndex4";

		//----делаем до 13-х запросов
for ($i = 0; $i <= 13; $i++) {
	if (!$page_cont) $page_cont = file_get_contents($page_url);
}

		//----делаем до 13-х запросов
for ($n = 0; $n <= 13; $n++) {
	if (!$page_cont_2) $page_cont_2 = file_get_contents($page_url_2);
}

if ($page_cont) {
echo "<br>" .  "--------";
echo "<br>" .  "Подключено";
echo "<br>" .  "--------";
	
/*		//----  Картинка погоды  ----
	$sample1 = "/src=\"\/resources\/icons\/(.*?)\" alt=/";		//Шаблон	
	preg_match_all($sample1, $page_cont, $nebo);		//Поиск
    $nebo1 = $nebo[1][0];
    $nebo2 = str_replace("\"","V",$nebo1);   // меняем символ 
    $nebo2 = str_replace("V", "", $nebo2);    // меняем символ 
    var_dump($nebo);	//дамп информации о переменной.
	$nebourl = "https:" . $nebo2;
	echo "<br>" . $nebo[0][0];
	echo "<br>" .  "--------";
	echo "<br>" . $nebourl ;
*/
/*********************************************************/
		
echo "<br>" .  "----  Описание  погоды кратко:  ----";	
	
	$sample2 = "/lass=\"CurrentConditions--phraseValue---VS-k\">(.*?)<\/div>/";	//Шаблон	
	preg_match_all($sample2, $page_cont, $pgd);			//Поиск
	//    var_dump($pgd);								//дамп информации о переменной.
	$pog = $pgd[1][0];

    echo "<br>" .  "  ";
	echo "<br>" .  $pog;
    echo "<br>" .  "  ";
	
/*********************************************************/	

echo "<br>" .  "----  Описание  погоды развёрнуто:  ----";
	
	$sample3 = "/<p class=\"InsightNotification--text--wOZxZ\">(.*?)<\/p>/";	//Шаблон	
	preg_match_all($sample3, $page_cont, $seg);				//Поиск 
    //var_dump($seg);	//дамп информации о переменной.
	$zet =  $seg[1][0];   						//Убираем тэги
	echo "<br>" . "  ";
	echo "<br>" .  $zet;
	echo "<br>" . "  ";

/*********************************************************/	

echo "<br>" .  "----  Температура сейчас  ----";

	$sample4 = "/class=\"CurrentConditions--tempValue--zUBSz\" dir=\"ltr\">(.*?)<span class=/";	//Шаблон	
	preg_match_all($sample4, $page_cont, $temp_s);			//Поиск
	$t_s = $temp_s [1][0];
	echo "<br>" . $t_s . "°C";
	
/*********************************************************/	

echo "<br>" .  "----  Ощущение температуры  ----";
					
	$sample5 =  "/class=\"TodayDetailsCard--feelsLikeTempValue--8WgHV\" dir=\"ltr\">(.*?)<span>°<\/span>/";		//Шаблон
	preg_match_all($sample5, $page_cont, $tempos);			//Поиск
	$tos = $tempos [1][0];
	
	echo "<br>" . "_____Ощущается как:_____ ";	
	echo "<br>" . $tos . "°C";	

/*********************************************************/

echo "<br>" .  "----  Температурный минимум  ----";
		
	$sample6 = "/<span data-testid=\"TemperatureValue\" dir=\"ltr\">(.*?)<span>°<\/span>/";	//Шаблон	
	preg_match_all($sample6, $page_cont, $temp_);			//Поиск
	$tempmin = $temp_ [1][1];
	echo "<br>" . "  ";
//	echo "<br>" . "минимум";
	echo "<br>" . $tempmin;
	echo "<br>" . "  ";
	//	var_dump($tempmin);	//дамп информации о переменной.

echo "<br>" .  "----  Температурный максимум  ----";
	
	$tempmax = $temp_ [1][0];
	echo "<br>" . "  ";
//	echo "<br>" . "максимум";
	echo "<br>" . $tempmax;
	echo "<br>" . "  ";
	
/*********************************************************/	

echo "<br>" .  "----  Осадки:  ----";
		
	$ret = $pog;

	if ($ret) {
		echo "<br>" . $ret ;
	}
	$sneg = "Снег";
	$dozd = "Дождь";
	$dozdN = "Небольшой дождь";
	$dozdL = "Ливневый дождь";
        $dozdV = "Дождь/ветрено";
	$tuman = "Туман";
	$groza = "Гроза";
	
	if ($ret == $sneg) {
    echo "<br>" ."Вхождение найдено.";
	echo "<br>" ."Снег.";
} else {
    echo "<br>" ."Снег - Вхождение не найдено.";
}
	
	if (($ret == $dozd)||($ret == $dozdL)||($ret == $dozdN)||($ret == $dozdV)){
		echo "<br>" ."Вхождение найдено.";
		echo "<br>" ."Дождь.";
		$osadki = "Дождь.";
	} else {
		echo "<br>" ."Дождь - Вхождение не найдено.";
	}

	if (preg_match("/.роз.+/U", $ret)) {
		echo "<br>" ."Вхождение найдено.";
		echo "<br>" ."Гроза.";
		$osadki = "Гроза.";
	} else {
		echo "<br>" ."Гроза - Вхождение не найдено.";
	}
	
	if ($ret == $tuman) {
		echo "<br>" ."Вхождение найдено.";
		echo "<br>" ."Туман.";
		$osadki = "Туман.";
	} else {
		echo "<br>" ."Туман - Вхождение не найдено.";
	}
	
		if (($ret !== $sneg)&($ret !== $dozd)&($ret !== $tuman)&($ret !== $dozdL )&($ret !== $dozdN )&($ret !== $dozdV )){
		echo "<br>" ."  ";
		echo "<br>" ."Без осадков";
		$osadki = "Без осадков.";
	}
	echo "<br>" . "  ";

/*********************************************************/	

echo "<br>" .  "----  Солнце:  ----";
	
	$sample7 = "/<p class=\"TwcSunChart--dateValue--TzXBr\">(.*?)<\/p>/";			//Шаблон	
	preg_match_all($sample7, $page_cont, $san);									//Поиск
	$vosxod =  $san [1][0]; 
	$zakat = $san [1][1];
/*
	//	Вывод для отладки
         echo "<br>" .  "---1-----";
	echo "<br>" . $san[0][0];
         echo "<br>" .  "---2-----";
	echo "<br>" . $san[1][0];
         echo "<br>" .  "---3-----";
	echo "<br>" . $san[2][0];
         echo "<br>" .  "---4-----";
	echo "<br>" . $san[0][1];
        echo "<br>" .  "---5-----";
	echo "<br>" . $san[1][1];
        echo "<br>" .  "---6-----";
	echo "<br>" . $san[0][3];
        echo "<br>" .  "---7-----";
	echo "<br>" . $san[0][3];
        echo "<br>" .  "---8-----";
	echo "<br>" . $san[0][0];
        echo "<br>" .  "--------";
 */      
	echo "<br>" . "  ";
	echo "<br>" . "Восход";
	echo "<br>" . $vosxod;
    echo "<br>" .  "--------";
    echo "<br>" . "Закат";
	echo "<br>" . $zakat;	

/*********************************************************/	

echo "<br>" .  "----  Скорость и направление ветра  ----";

	$sample8_2 = "/<span data-testid=\"Wind\" class=\"Wind--windWrapper--NsCjc DetailsTable--value--pWEVz\"><span>(.*?)<\/span><span>/";		//Шаблон
	preg_match_all($sample8_2, $page_cont_2, $matches_2);         //Поиск
	
	$sample8 = "/\"><\/path><\/svg><\/span><span>(.*?)<\/span>/";		//Шаблон
	preg_match_all($sample8, $page_cont, $matches);         //Поиск
//	var_dump($matches);	//дамп информации о переменной.

/*		//	Вывод для отладки
	echo "<br>" . $matches[0][0];
	echo "<br>" . $matches[1][0];
	echo "<br>" . $matches[2][0];
	echo "<br>" . $matches[3][0];
	echo "<br>" . $matches[0][1];
	echo "<br>" . $matches[0][2];
	echo "<br>" . $matches[0][3];
	echo "<br>" . $matches[0][4];
*/
	$napr = $matches_2[1][0];
	$vtr = $matches[1][0];
	echo "<br>" . "Ветер сейчас: ";
	echo "<br>" . $napr . "  " . $vtr . " км/ч";
	
/*********************************************************/		

echo "<br>" .  "----  Вероятность осадков  ----";
						
	$sample9 = "/<span class=\"Column--precip--YkErk\"><span class=\"Accessibility--visuallyHidden--n\+vd9\">.*?<\/span>(.*?)<\/span>/";	//Шаблон			
	preg_match_all($sample9, $page_cont, $ver);	//Поиск
	//var_dump($ver);	//дамп информации о переменной.
	$veros = $ver [1][4];
	
	echo "<br>" . $veros;
	
/*********************************************************/	

echo "<br>" .  "----  Индекс УФ  ----";
	
	$sample11 = "/<span data-testid=\"UVIndexValue\">(.*?)<\/span>/";		//Шаблон
	preg_match_all($sample11, $page_cont, $ufind);					        //Поиск
	$ufindeks = $ufind [1][0];
	
	echo "<br>" . $ufindeks;
	
/*********************************************************/

echo "<br>" .  "----  Видимость  ----";
	
	$sample12 = "/<span data-testid=\"VisibilityValue\"><span>(.*?)<\/span><span>/";		//Шаблон
	preg_match_all($sample12, $page_cont, $vid);					        				//Поиск
	$vidim = $vid [1][0];
	
	echo "<br>" . $vidim . "км";
	
/*********************************************************/
		
	echo "<br>" . "____zzzzz_____ ";
}

		//---- Запись значений  ----
sg( "pog_fact.img", $nebourl);					//URL картинки		
sg( "pog_fact.vosxod", $vosxod );   			//Восход
sg( "pog_fact.zakat", $zakat );   				//Закат
sg( "pog_fact.veroyatnost_osadkov", $veros );   //Вероятность осадков
sg( "pog_fact.osadki", $osadki );             	//Осадки
sg( "pog_fact.veter_skorost", $vtr );			//Скорость ветра
sg( "pog_fact.veter_napr", $napr);	    		//Направление ветра
sg( "pog_fact.temp_max", $tempmax );   			//Температура max
sg( "pog_fact.temp_min", $tempmin );   			//Температура min
sg( "pog_fact.pogoda", $pog );   				//Погода кратко
sg( "pog_fact.pgd_razvernuto", $zet );   		//Погода развёрнуто
sg( "pog_fact.temp_chuvstva", $tos );   		//Температура чувствуется как
sg( "pog_fact.UFindecs", $ufindeks );   		//УФ индекс
sg( "pog_fact.vidimost", $vidim );		   		//Видимость
Точка росы  
/*

Tp = b*f(T,Rh) / (a-f(T,Rh)) 

	f(T,Rh) = (a*T) / (b+T) + ln(Rh/100)
	a = 17.27
	b = 237.7
*/	

$Rh = gg("pog_fact.vlaznost");
$Rh_1 = $Rh / 100;
$Ln = log($Rh_1);
$Dl = 237.7 + gg("pog_fact.temp_fact");
$D = 17.27 * gg("pog_fact.temp_fact");
$z = $D / $Dl;
$f = $z + $Ln;
$D1 = 237.7 * $f;
$Dl1 = 17.27 - $f;
$Ros = $D1 / $Dl1;
$Tros = round($Ros, 1, PHP_ROUND_HALF_UP);
sg("pog_fact.tochka_rosi", $Tros);

echo "<br>" .  "Точка росы:" ;
echo "<br>" . $Ros ;
echo "<br>" . $Tros;


 
Реле
turnOffEverything Выключить все приборы 
$objects=array('R1_kab','R2_kab','R3_kab','R4_kab','S1_kab','S2_kab','S1_kux');
foreach($objects as $o) {
 callMethod($o.'.turnoff');
}
Включить поддув Включает термостат поддува 
callMethod('Kotel_Vent'.'.'.'enable');
Отключить поддув Отключает термостат поддува 
callMethod('Kotel_Vent'.'.'.'disable');
Рабочее место Включить розетку_1 
$objects=array('R1_kab','R4_kab');
foreach($objects as $w) {
 callMethod($w.'.turnOn');
}
say ("Готово.",2);
 
События
Hourly Выполняется каждый час 
echo "OK";
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 Срабатывает, когда никого дома нет 
say('Свет выключать придётся мне', 2);
callMethod('EconomMode'.'.'.'activate');
SomebodyHome Срабатывает в том случае, когда кто-то появился дома 
say('Приветствую ! Располагайтесь где удобно.', 1);
callMethod('EconomMode'.'.'.'deactivate');
startUp Система загружена 
say('Система загружена', 2);
runScript('tellIPAddress', array());

Классы/объекты

Класс

Computer

- Компьютер

Свойства класса:

checked - время последней проверки
minMsgLevel - мин. уровень сообщения
tempOutside - температура снаружи

Методы класса:

WakedUp - Проснулся
onIdle - на холостом ходу
StartUp - Запуск
commandReceived - получение новой команды
powerConnected - Питание подключено
powerDisconnected - Питание отключено
VolumeLevelChanged - Уровень громкости изменен
$this->setProperty('volumeLevel',$params['VALUE']);
if (IsWindowsOs()) {
 $volume=round(65535*$params['VALUE']/100); 
 safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume); 
} else {
 safe_exec('amixer  sset PCM,0 '.$params['VALUE'].'%');
}
say("Изменилась громкость до ".$params['VALUE']." процентов");

Объекты класса:

ThisComputer
Методы объекта:
commandReceived
$command=$params['command'];

$short_command='';
$dt=recognizeTime($command,$short_command);

if (preg_match('/скажи сколько врем/uis',$command)) {
 if ($dt>0) {
  addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt);
  say('Задача принята',2);
  return;
 }
 global $voicemode;
 $voicemode='on';
 say('Сейчас '.timeNow(),2);
} elseif (preg_match('/сколько время/uis',$command)) {
 if ($dt>0) {
  addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt);
  say('Задача принята');
  echo $short_command;
  return;
 }
 say('Сейчас '.timeNow());
} elseif (preg_match('/повтори (.+)/uis',$command,$m) || preg_match('/скажи (.+)/uis',$command,$m)) {
 if ($dt>0) {
  addScheduledJob("command".$dt,"processCommand('".$short_command."');",$dt);
  say('Задача принята',2);
  return;
 }
 global $voicemode;
 $voicemode='on';
 say($m[1],2);
} else {
 say('Неизвестная команда...',2);
}
powerDisconnected
say("Отключено питание");
StartUp

 
Класс

Cron

- Cron scheduler

Свойства класса:

Enable - Вкл - 1, выкл - 0
Crontab - Периодичность выполнения (cron синтаксис)
LastRun - Последний запуск
Category - Категория

Методы класса:

Run - Исполняемый метод
$this->setProperty('LastRun',date('Y-m-d H:i:s'));
Update - Обновление задачи
$name='Cron_'.$this->object_title;
SQLExec("DELETE FROM jobs WHERE title='".$name."'");

Объекты класса:

Pogoda zavtra - Каждые 2 часа
Методы объекта:
Run
runScript('Прогноз на завтра');

Rosa - Каждый час
Методы объекта:
Run
	runScript('Точка росы');

Sezon - Номер сезона (1-й день месяца)
Методы объекта:
Run
runScript('Сезон');

Sinoptik - Каждый час
Методы объекта:
Run
runScript('Синоптик');

Kartinka pogodi - Каждый час
Методы объекта:
Run
runScript('Картинка');

 
Класс

openweather

- Погода Open Weather Map

Объекты класса:

ow_city - Местоположение
ow_setting - Настройки
ow_ws - Погодная станция (экспорт)
ow_fact - Текущая температура
ow_day0 - Прогноз погоды на день
ow_day1 - Прогноз погоды на завтра
ow_day2 - Прогноз погоды на послезавтра

 
Класс

OperationalModes

- Режимы работы

Свойства класса:

active
title
updated
updatedTime

Методы класса:

modeChanged
$this->setProperty("updated",time());
$this->setProperty("updatedTime",date('H:i'));
if ($this->getProperty('active')) {
 say("Режим ".$this->getProperty('title')." активирован.");
} else {
 say("Режим ".$this->getProperty('title')." выключен.");
}
activate
$this->setProperty('active',1);
deactivate
$this->setProperty('active',0);

Объекты класса:

EconomMode - Режим экономии
Методы объекта:
activate
$objects=getObjectsByProperty('groupEco','=','1');
if (is_array($objects)) {
 foreach($objects as $obj) {
  callMethod($obj.'.turnOff');
 }
}

$objects=getObjectsByProperty('allOffGroup','=','1');
if (is_array($objects)) {
 foreach($objects as $obj) {
  callMethod($obj.'.turnOff');
 }
}

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/econommode_activate.php');
/* end injection of {SDevices} */
deactivate
if (gg('DarknessMode.active')) {
$objects=getObjectsByProperty('greetingOnGroup','=','1');
if (is_array($objects)) {
 foreach($objects as $obj) {
  callMethod($obj.'.turnOn');
 }
} 
}

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/econommode_deactivate.php');
/* end injection of {SDevices} */

NobodyHomeMode - Режим "Никого нет дома"
Методы объекта:
activate
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nobodyhomemode_activate.php');
/* end injection of {SDevices} */
deactivate
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nobodyhomemode_deactivate.php');
/* end injection of {SDevices} */

SecurityArmedMode - Режим охраны
GuestsMode - Гостевой режим
DarknessMode - Режим темноты
Методы объекта:
deactivate
$objects=getObjectsByProperty('groupSunrise','=','1');
if (is_array($objects)) {
 foreach($objects as $obj) {
  callMethod($obj.'.turnOff');
 }
}
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/darknessmode_deactivate.php');
/* end injection of {SDevices} */
activate
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/darknessmode_activate.php');
/* end injection of {SDevices} */

NightMode - Ночной режим
Методы объекта:
activate
setGlobal('minMsgLevel','2');
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nightmode_activate.php');
/* end injection of {SDevices} */
deactivate
setGlobal('minMsgLevel','1');
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nightmode_deactivate.php');
/* end injection of {SDevices} */

 
Класс

Pogoda

- Погода

Объекты класса:

pog_fact - Фактическая, сейчас
pog_prognoz - Прогноз

 
Класс

Rooms

- Rooms/Locations

Свойства класса:

LatestActivity
LatestActivityTime
SomebodyHere - Somebody in the room
Temperature - Temperature
TempHEX - HEX значение цвета
Humidity - Humidity
Title - Заголовок
IdleDelay - Время активности (секунд)
turnOffLightsOnIdle - Выключать освещение в комнате по истечение периода активности

Методы класса:

onActivity - Rooms Activity
$latestActivity=$this->getProperty('LatestActivity');
$this->setProperty('LatestActivity',time());
$this->setProperty('LatestActivityTime',date('H:i'));

$this->setProperty('SomebodyHere',1);
$ot=$this->object_title;
if ($this->getProperty("IdleDelay")) {
 $activity_timeout=(int)$this->getProperty("IdleDelay");
} else {
 $activity_timeout=10*60;
}
clearTimeOut($ot."_activity_timeout");
setTimeOut($ot."_activity_timeout","callMethod('".$ot.".onIdle');",$activity_timeout);
$this->callMethod("updateActivityStatus");

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_onActivity.php');
/* end injection of {SDevices} */
onIdle - Rooms Idle
$this->setProperty('SomebodyHere',0);
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_onIdle.php');
/* end injection of {SDevices} */
updateActivityStatus - Update activity status
$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");

if (!$rooms[0]['active']) {
 $somebodyHomeText="Никого нет дома. Были в ".date('H:i',$rooms[0]['time'])." (".$rooms[0]['room'].")";
} else {
 $res_rooms=array();
 for($i=0;$i<$total;$i++) {
  if ($rooms[$i]['active']) {
   $res_rooms[]=$rooms[$i]['room'];
  } 
 }
 $somebodyHomeText="Кто-то дома: ".implode(", ",$res_rooms); 
}
setGlobal('somebodyHomeText',$somebodyHomeText);
//echo "Updated";
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_updateActivityStatus.php');
/* end injection of {SDevices} */
onTempChanges - Изменения температуры

Объекты класса:

Zal
Kabinet
Kuxnya
Koridor
Vannaya
Методы объекта:
onActivity

Detskaya
Kotelnaya
Sad
Методы объекта:
onActivity

 
Класс

SDevices

- General Devices Class

Свойства класса:

status - Статус
alive - Alive
linkedRoom - LinkedRoom
updated - Updated Timestamp
updatedText - Обновленное время (текст)
aliveTimeout - Допустимое время отсутствия данных (часов)
batteryOperated - Устройство работает от батареи
batteryLevel - Уровень заряда батареи
batteryWarning - Предупреждение о низком заряде батареи
connected_ip - Сетевой адрес
connected_status - Статус подключения к сети

Методы класса:

setUpdatedText - Изменить обновленный текст
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDevices_setUpdatedText.php');
/* end injection of {SDevices} */
batteryLevelUpdated - Battery level updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDevices_batteryLevelUpdated.php');
/* end injection of {SDevices} */
logicAction - Logic Action
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDevices_logicAction.php');
/* end injection of {SDevices} */
statusUpdated - Status updated event
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDevices_statusUpdated.php');
/* end injection of {SDevices} */
keepAlive - Alive update
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDevices_keepAlive.php');
/* end injection of {SDevices} */

Класс SDevices >

SButtons

- Кнопки

Свойства класса:

icon - Изображение
isActivity - Изменение означает активность в помещении

Методы класса:

pressed - Нажать
require(DIR_MODULES.'devices/SButtons_pressed.php');

 
Класс SDevices >

SCameras

- Камеры

Свойства класса:

streamURL - URL видео-потока (LQ)
streamURL_HQ - URL видео-потока (HQ)
cameraUsername - Имя пользователя
cameraPassword - Пароль
snapshotURL - URL статического снимка
snapshot - Снимок
previewHTML - Preview HTML
streamTransport - Транспорт потока
previewType - Предпросмотр
clickAction - Действие по нажатию на изображение
snapshotPreviewURL - Snapshot Preview URL
activeHTML - Active HTML
series - Снимок
ignoreNobodysHome - Игнорировать события от устройства, когда никого нет дома
timeout - Время активности (секунд)

Методы класса:

motionDetected - Motion Detected
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCameras_motionDetected.php');
/* end injection of {SDevices} */
updatePreview - Update preview code
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCameras_updatePreview.php');
/* end injection of {SDevices} */
takeSnapshot - Take snapshot
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCameras_takeSnapshot.php');
/* end injection of {SDevices} */
takeSeries - Takes image series
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCameras_takeSeries.php');
/* end injection of {SDevices} */

 
Класс SDevices >

SControllers

- Controllable device

Свойства класса:

groupEco - Выключать в режиме экономии
groupSunrise - Выключать с рассветом
groupEcoOn - Включать при выходе из режима экономии
isActivity - Изменение означает активность в помещении
loadType - Тип устройства
groupSunset - Включать с закатом
groupNight - Выключать при входе в ночной режим
icon - Изображение
poweredStatus - Включено / выключено

Методы класса:

turnOn - Включить
require(DIR_MODULES.'devices/SControllers_turnOn.php');
turnOff - Выключить
require(DIR_MODULES.'devices/SControllers_turnOff.php');
switch - Switch
require(DIR_MODULES.'devices/SControllers_switch.php');

Класс SControllers >

SAirConditioners

Свойства класса:

value - Текущая температура
currentTargetValue - Целевая температура
tempStep - Шаг изменения температуры
fanSpeed - Fan Speed
fanSpeedModes - Обдув
fanSpeedModesHTML - FanSpeedModes HTML
thermostat - Thermostat
thermostatModes - Термостат
thermostatModesHTML - ThermostatModes HTML

Методы класса:

setTargetTemperature - Set target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_setTargetTemperature.php');
/* end injection of {SDevices} */
setThermostatMode - Set thermostat mode
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_setThermostatMode.php');
/* end injection of {SDevices} */
setFanSpeedMode - Set fan speed mode
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_setFanSpeedMode.php');
/* end injection of {SDevices} */
configUpdated - Config updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_configUpdated.php');
/* end injection of {SDevices} */
fanSpeedUpdated - Fan Speed updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_fanSpeedUpdated.php');
/* end injection of {SDevices} */
thermostatUpdated - Thermostat updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_thermostatUpdated.php');
/* end injection of {SDevices} */
tempUp - Increase target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_tempUp.php');
/* end injection of {SDevices} */
tempDown - Descrease target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SAirConditioners_tempDown.php');
/* end injection of {SDevices} */

 
Класс SControllers >

SDimmers

Свойства класса:

level - Current brightness level
levelSaved - Latest level saved
levelWork - Brightness level (work)
minWork - Мин. уровень (рабочий)
maxWork - Макс. уровень (рабочий)
switchLevel - Не изменять уровень при переключении
setMaxTurnOn - Устанавливать максимальную яркость при включении

Методы класса:

levelUpdated - Level Updated
require(DIR_MODULES.'devices/SDimmers_levelUpdated.php');
turnOn - Включить
require(DIR_MODULES.'devices/SDimmers_turnOn.php');
turnOff - Выключить
require(DIR_MODULES.'devices/SDimmers_turnOff.php');
setLevel - Set brightness level
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDimmers_setLevel.php');
/* end injection of {SDevices} */
statusUpdated - Status Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDimmers_statusUpdated.php');
/* end injection of {SDevices} */
levelWorkUpdated - Level Work Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDimmers_levelWorkUpdated.php');
/* end injection of {SDevices} */

 
Класс SControllers >

SGroups

Свойства класса:

groupName - Group system name

Методы класса:

turnOn - Включить
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SGroups_turnOn.php');
/* end injection of {SDevices} */
turnOff - Выключить
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SGroups_turnOff.php');
/* end injection of {SDevices} */
switch - Switch
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SGroups_switch.php');
/* end injection of {SDevices} */
statusUpdated - Status Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SGroups_statusUpdated.php');
/* end injection of {SDevices} */

 
Класс SControllers >

SMedias

Свойства класса:

volume - Volume
source_num - Source number
channel_num - Channel number

Методы класса:

pause - Pause
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMedias_pause.php');
/* end injection of {SDevices} */
setSource - Set source
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMedias_setSource.php');
/* end injection of {SDevices} */
setChannel - Set channel
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMedias_setChannel.php');
/* end injection of {SDevices} */
setVolume - Set volume
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMedias_setVolume.php');
/* end injection of {SDevices} */

 
Класс SControllers >

SRelays

Объекты класса:

Bt_Sad_Nasos - Полив
R4_kab - Лампа
Методы объекта:
logicAction

R3_kab - Кофеварка
Методы объекта:
logicAction

R2_kab - Фонарь
Методы объекта:
logicAction

R1_kab - Клавиатура
Методы объекта:
logicAction

R5_kab - не подключено
R6_kab - не подключено
S1_kab - Софиты
S1_kux - Столешница
S2_kab - Свет

 
Класс SControllers >

SRGB

Свойства класса:

color - Current color
colorSaved - Saved color
brightness - Current brightness

Методы класса:

colorUpdated - Color Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SRGB_colorUpdated.php');
/* end injection of {SDevices} */
setColor - Color Set
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SRGB_setColor.php');
/* end injection of {SDevices} */
turnOn - Включить
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SRGB_turnOn.php');
/* end injection of {SDevices} */
turnOff - Выключить
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SRGB_turnOff.php');
/* end injection of {SDevices} */

 
Класс SControllers >

STermostat

- Термостат

Свойства класса:

relay_status - Статус реле
value - Текущая температура
currentTargetValue - Целевая температура
normalTargetValue - Обычная целевая температура
ecoTargetValue - ECO целевая температура
threshold - Порог срабатывания термостата (0.25 по-умолчанию)
ncno - Тип устройства/сенсора
disabled - Disabled

Методы класса:

valueUpdated - Value Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_valueUpdated.php');
/* end injection of {SDevices} */
statusUpdated - Status Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_statusUpdated.php');
/* end injection of {SDevices} */
tempUp - Increase target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_tempUp.php');
/* end injection of {SDevices} */
tempDown - Descrease target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_tempDown.php');
/* end injection of {SDevices} */
setTargetTemperature - Установить желаемую температуру
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_setTargetTemperature.php');
/* end injection of {SDevices} */
switchEnable - Switch Enable
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_switchEnable.php');
/* end injection of {SDevices} */
enable - Enable
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_enable.php');
/* end injection of {SDevices} */
disable - Режим: Выкл
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_disable.php');
/* end injection of {SDevices} */
turnOn - Режим: Обычный
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_turnOn.php');
/* end injection of {SDevices} */
turnOff - Режим: Эко
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_turnOff.php');
/* end injection of {SDevices} */

 
Класс SControllers >

SThermostats

Свойства класса:

disabled - Disabled
ncno - Тип устройства/сенсора
threshold - Порог срабатывания термостата (0.25 по-умолчанию)
ecoTargetValue - ECO целевая температура
currentTargetValue - Целевая температура
value - Текущая температура
relay_status - Статус реле
normalTargetValue - Обычная целевая температура
Атас

Методы класса:

setTargetTemperature - Установить желаемую температуру
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_setTargetTemperature.php');
/* end injection of {SDevices} */
valueUpdated - Value Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_valueUpdated.php');
/* end injection of {SDevices} */
statusUpdated - Status Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_statusUpdated.php');
/* end injection of {SDevices} */
tempUp - Increase target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_tempUp.php');
/* end injection of {SDevices} */
tempDown - Descrease target temperature
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_tempDown.php');
/* end injection of {SDevices} */
switchEnable - Switch Enable
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_switchEnable.php');
/* end injection of {SDevices} */
enable - Enable
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_enable.php');
/* end injection of {SDevices} */
disable - Режим: Выкл
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_disable.php');
/* end injection of {SDevices} */
turnOn - Режим: Обычный
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_turnOn.php');
/* end injection of {SDevices} */
turnOff - Режим: Эко
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SThermostats_turnOff.php');
/* end injection of {SDevices} */
Atas - Отключает прибор при автопилоте

Объекты класса:

Kotel_Ten - Котёл_Тэн
Методы объекта:
logicAction
Atas
if (getGlobal('Kotel_Ten.Автопилот') == 1 && getGlobal('Kotel_Ten.Атас') == 1) {
  callMethod('Kotel_Ten.disable');
}
if (getGlobal('Kotel_Ten.Автопилот') == 1 && getGlobal('Kotel_Ten.Атас') == 0) {
 callMethod('Kotel_Ten.enable');
}

 
Класс SControllers >

STVs

Свойства класса:

volume - Volume
source_num - Source number
channel_num - Channel number

Методы класса:

pause - Pause
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/STVs_pause.php');
/* end injection of {SDevices} */
setSource - Set source
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/STVs_setSource.php');
/* end injection of {SDevices} */
setChannel - Set channel
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/STVs_setChannel.php');
/* end injection of {SDevices} */
setVolume - Set volume
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/STVs_setVolume.php');
/* end injection of {SDevices} */

 
Класс SControllers >

SVacuums

Методы класса:

pause - Pause
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SVacuums_pause.php');
/* end injection of {SDevices} */

 
 
Класс SDevices >

SCounters

- Счётчики

Свойства класса:

unit - Единица измерения
value - Data Value
price - Price
pulseAmount - Pulse amount (optional)
valueWork - Work Value
valueHour - Hour Value
valueDay - Day Value
valueMonth - Month Value
conversion - Conversion coefficient (work-to-data)

Методы класса:

valueUpdated - Data Value updated event
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCounters_valueUpdated.php');
/* end injection of {SDevices} */
valueWorkUpdated - Work Value updated event
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCounters_valueWorkUpdated.php');
/* end injection of {SDevices} */
refreshStats - Refreshes daily/monthly stats
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCounters_refreshStats.php');
/* end injection of {SDevices} */
pulseDetected - Meter pulse detection
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SCounters_pulseDetected.php');
/* end injection of {SDevices} */

 
Класс SDevices >

SHTML

Свойства класса:

data - Данные

 
Класс SDevices >

SLeak

- Протечка

Свойства класса:

notify_eliminated - Уведомлять каждую минуту до восстановления статуса
notify_msg_reminder - Сообщение при напоминании
blocked - Is blocked

Методы класса:

statusUpdated - Status updated event
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SLeak_statusUpdated.php');
/* end injection of {SDevices} */
alert - Sensor alert
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SLeak_alert.php');
/* end injection of {SDevices} */
blockSensor - Блокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SLeak_blockSensor.php');
/* end injection of {SDevices} */
unblockSensor - Разблокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SLeak_unblockSensor.php');
/* end injection of {SDevices} */

 
Класс SDevices >

SMotions

- Движение

Свойства класса:

ignoreModeChange - Игнорировать движения в режиме "Никого нет"
ignoreNobodysHome - Игнорировать события от устройства, когда никого нет дома
timeout - Время активности (секунд)
resetNobodysHome - Сброс статуса "никого нет дома" без таймера установки
blocked - Is blocked

Методы класса:

motionDetected - Motion Detected
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
blockSensor - Блокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMotions_blockSensor.php');
/* end injection of {SDevices} */
unblockSensor - Разблокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SMotions_unblockSensor.php');
/* end injection of {SDevices} */

Объекты класса:

MotionVxod - Датчик движения вход
MotionKabinet - Датчик движения кабинет
Методы объекта:
logicAction

MotionKuxnya - Датчик движения кухня
Методы объекта:
logicAction

 
Класс SDevices >

SOpenable

- Открываемые

Свойства класса:

isActivity - Изменение означает активность в помещении
notify_status - Уведомлять при смене статуса
notify_nc - Напоминать об открытом состоянии
support_level - Поддержка уровня открытия
openType - Тип устройства
notify_msg_opening - Сообщение при открытии
notify_msg_closing - Сообщение при закрытии
notify_msg_reminder - Сообщение при напоминании
level - Current level
levelSaved - Latest level saved

Методы класса:

statusUpdated - Status updated event
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenable_statusUpdated.php');
/* end injection of {SDevices} */
setLevel - Set open level
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenable_setLevel.php');
/* end injection of {SDevices} */
levelUpdated - Level Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenable_levelUpdated.php');
/* end injection of {SDevices} */
switch - Switch
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenable_switch.php');
/* end injection of {SDevices} */
open - Open
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenable_open.php');
/* end injection of {SDevices} */
close - Close
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenable_close.php');
/* end injection of {SDevices} */

 
Класс SDevices >

SOpenClose

Свойства класса:

isActivity - Изменение означает активность в помещении
ncno - Тип устройства/сенсора
notify_status - Уведомлять при смене статуса
notify_nc - Напоминать об открытом состоянии
blocked - Is blocked
notify_msg_opening - Сообщение при открытии
notify_msg_closing - Сообщение при закрытии
notify_msg_reminder - Сообщение при напоминании

Методы класса:

statusUpdated - Status updated event
require(DIR_MODULES.'devices/SOpenClose_statusUpdated.php');
blockSensor - Блокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenClose_blockSensor.php');
/* end injection of {SDevices} */
unblockSensor - Разблокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SOpenClose_unblockSensor.php');
/* end injection of {SDevices} */

 
Класс SDevices >

SSensors

- Датчики

Свойства класса:

value - Current Sensor Value
minValue - Нижний порог
maxValue - Верхний порог
notify - Уведомлять при выходе за порог
normalValue - Значение в нормальных пределах
mainSensor - Основной сенсор помещения
notify_eliminated - Уведомлять каждую минуту до восстановления статуса
direction - Direction of changes
directionTimeout - Интервал времени расчета направления изменений (сек)
blocked - Is blocked

Методы класса:

alert - Sensor alert
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSensors_alert.php');
/* end injection of {SDevices} */
blockSensor - Блокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSensors_blockSensor.php');
/* end injection of {SDevices} */
unblockSensor - Разблокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSensors_unblockSensor.php');
/* end injection of {SDevices} */
valueUpdated - Value Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSensors_valueUpdated.php');
/* end injection of {SDevices} */

Класс SSensors >

SCO2Sensors

 
Класс SSensors >

SCOSensors

- Угарный газ
 
Класс SSensors >

SCurrentSensors

- Датчики потока

Объекты класса:

CurrentKotel

 
Класс SSensors >

SGeneralSensors

- Общие датчики

Свойства класса:

unit - Единица измерения

 
Класс SSensors >

SHumSensors

- Датчики влажности

Объекты класса:

HumSad - Влажность в саду

 
Класс SSensors >

SLightSensors

- Датчики освещённости

Свойства класса:

unit - Единица измерения
periodMinValue - Minimum value for period
periodTime - Period to calculate minimum value (seconds)

Методы класса:

valueUpdated - Value Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SLightSensors_valueUpdated.php');
/* end injection of {SDevices} */
periodMinValueUpdated - Period Min value updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SLightSensors_periodMinValueUpdated.php');
/* end injection of {SDevices} */
alert - Предупреждение датчика

Объекты класса:

LightSad - Освещённость в саду

 
Класс SSensors >

SMoistureSensors

- Влага,Сырость

Объекты класса:

MoistureKuxnya - Датчик протечки кухня

 
Класс SSensors >

SPercentageSensors

- Проценты
 
Класс SSensors >

SPowerSensors

- Мощность

Свойства класса:

loadStatusTimeout - Таймер изменения статуса нагрузки

Методы класса:

valueUpdated - Value Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SPowerSensors_valueUpdated.php');
/* end injection of {SDevices} */
loadStatusChanged - Load Status Changed
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SPowerSensors_loadStatusChanged.php');
/* end injection of {SDevices} */

Объекты класса:

PowerKotel - Котёл дома

 
Класс SSensors >

SPressureSensors

- Давление

Объекты класса:

PressureSad - Атмосферное давление
PressureXVS - Давление ХВС

 
Класс SSensors >

SRadiationSensors

- Радиация
 
Класс SSensors >

SStateSensors

- Состояние
 
Класс SSensors >

STempHumSensors

Свойства класса:

valueHumidity - Humidity Sensor Value
minHumidityValue - Нижний порог (humidity)
maxHumidityValue - Верхний порог (humidity)
directionHumidity - Direction of changes

Методы класса:

valueUpdated - Value Updated
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/STempHumSensors_valueUpdated.php');
/* end injection of {SDevices} */

 
Класс SSensors >

STempSensors

- Температура

Объекты класса:

TempSad - Темп_сад
Методы объекта:
valueUpdated
// получить температуру
$x = $this->getProperty('value');
// используем от 0 до 30 градусов
if ($x<0) {$x=0;} else if ($x>30) {$x=30;} 
// расчет величины цветовой шкалы ( 0--255 )
$x = round( $x*8.5 );

$hcolor = '#';

// расчет R
$y = $x;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет G

$y = ((-2)*($x-128))+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет B

$y = ((-2)*$x)+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor); 
logicAction

TempZal - Температура в зале
TempKoridor - Температура в коридоре
TempKuxnya - Температура на кухне
Методы объекта:
valueUpdated
// получить температуру
$x = $this->getProperty('value');
// используем от 0 до 30 градусов
if ($x<0) {$x=0;} else if ($x>30) {$x=30;} 
// расчет величины цветовой шкалы ( 0--255 )
$x = round( $x*8.5 );

$hcolor = '#';

// расчет R
$y = $x;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет G

$y = ((-2)*($x-128))+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет B

$y = ((-2)*$x)+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor); 

TempPodacha - Подача котла
TempObratka - Температура обратки котла
TempDim - Температура в дымоходе
Методы объекта:
valueUpdated
// получить температуру
$x = $this->getProperty('value');
// используем от 0 до 30 градусов
if ($x<0) {$x=0;} else if ($x>30) {$x=30;} 
// расчет величины цветовой шкалы ( 0--255 )
$x = round( $x*8.5 );

$hcolor = '#';

// расчет R
$y = $x;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет G

$y = ((-2)*($x-128))+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет B

$y = ((-2)*$x)+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor); 

TempPrud - Температура в пруду
TempGVS - Температура ГВС
Методы объекта:
valueUpdated
// получить температуру
$x = $this->getProperty('value');
// используем от 0 до 30 градусов
if ($x<0) {$x=0;} else if ($x>30) {$x=30;} 
// расчет величины цветовой шкалы ( 0--255 )
$x = round( $x*8.5 );

$hcolor = '#';

// расчет R
$y = $x;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет G

$y = ((-2)*($x-128))+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет B

$y = ((-2)*$x)+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor); 

TempDetskaya - Температура в детской
Методы объекта:
valueUpdated
// получить температуру
$x = $this->getProperty('value');
// используем от 0 до 30 градусов
if ($x<0) {$x=0;} else if ($x>30) {$x=30;} 
// расчет величины цветовой шкалы ( 0--255 )
$x = round( $x*8.5 );

$hcolor = '#';

// расчет R
$y = $x;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет G

$y = ((-2)*($x-128))+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// расчет B

$y = ((-2)*$x)+255;
if ($y < 0) {$y = 0;} else if ($y > 255) {$y = 255;}
 echo "<br>" . $y;
$y = dechex($y);
if (strlen($y) == 1) {$y = '0'.$y;}

$hcolor = $hcolor.$y;

// установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor); 

 
Класс SSensors >

SVoltageSensors

- Напряжение
 
Класс SSensors >

SWaterSensors

- Датчики уровня воды

Объекты класса:

WaterKolodez - Объём воды колодце
WaterRasshiritel - Вода в расширителе отопления

 
 
Класс SDevices >

SSmoke

- Дым

Свойства класса:

notify_eliminated - Уведомлять каждую минуту до восстановления статуса
blocked - Is blocked

Методы класса:

statusUpdated - Status updated event
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSmoke_statusUpdated.php');
/* end injection of {SDevices} */
alert - Sensor alert
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSmoke_alert.php');
/* end injection of {SDevices} */
blockSensor - Блокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSmoke_blockSensor.php');
/* end injection of {SDevices} */
unblockSensor - Разблокировать датчик
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SSmoke_unblockSensor.php');
/* end injection of {SDevices} */

 
 
Класс

systemStates

- Состояния системы

Свойства класса:

stateDetails - Состояние подробно
stateColor - зеленый / желтый / красный

Методы класса:

checkState - Проверить состояние
 
stateChanged - Состояние изменено

Объекты класса:

Security - Безопасность
Методы объекта:
checkState
$details=array();
$red_state=0;
$yellow_state=0;

if ($red_state) {
 $state='red';
 $state_title=LANG_GENERAL_RED; 
} elseif ($yellow_state) {
 $state='yellow';
 $state_title=LANG_GENERAL_YELLOW;  
} else {
 $state='green';
 $state_title=LANG_GENERAL_GREEN;   
}

$new_details=implode(". ",$details);
if ($this->getProperty("stateDetails")!=$new_details) {
 $this->setProperty('stateDetails',$new_details);
}

if ($this->getProperty('stateColor')!=$state) {
 $this->setProperty('stateColor',$state);
 $this->setProperty('stateTitle',$state_title);
 if ($state!='green') {
  say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".");
  say(implode(". ",$details));
 } else {
  say(LANG_GENERAL_SECURITY_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title);
 }
 $this->callMethod('stateChanged');
}

System - Система
Методы объекта:
checkState
$details=array();
$red_state=0;
$yellow_state=0;

$cycles=array('states'=>'states','main'=>'main','execs'=>'exec','scheduler'=>'scheduler');
foreach($cycles as $k=>$v) {
 $tm=getGlobal('ThisComputer.cycle_'.$k.'Run');
 if (time()-$tm>5*60) {
  $red_state=1;
  $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED.".";
 }
}

$cycles=array('ping'=>'ping','webvars'=>'webvars');
foreach($cycles as $k=>$v) {
 $tm=getGlobal('ThisComputer.cycle_'.$k.'Run');
 if (time()-$tm>10*60) {
  $yellow_state=1;
  $details[]=$v." ".LANG_GENERAL_CYCLE." ".LANG_GENERAL_STOPPED.".";  
 }
}

/*
$objects=array('MotionSensor1'=>'Датчик движения 1','MotionSensor2'=>'Датчик движения 2','TempSensor01'=>'Датчик температуры','HumSensor01'=>'Датчик влажности');
foreach($objects as $k=>$v) {
 if (!gg($k.'.alive')) {
  $yellow_state=1;
  $details[]="Не обновляется ".$v.'.';  
 }
}
*/

if ((int)gg('ThisComputer.SpaceProblems')>0) {
  $red_state=1;
  $details[]="Недостаточно места на диске (".gg('ThisComputer.SpaceProblems_Details').').';  
}

if ($red_state) {
 $state='red';
 $state_title=LANG_GENERAL_RED; 
} elseif ($yellow_state) {
 $state='yellow';
 $state_title=LANG_GENERAL_YELLOW;  
} else {
 $state='green';
 $state_title=LANG_GENERAL_GREEN;   
}

$new_details=implode(". ",$details);
if ($this->getProperty("stateDetails")!=$new_details) {
 $this->setProperty('stateDetails',$new_details);
}

if ($this->getProperty('stateColor')!=$state) {
 $this->setProperty('stateColor',$state);
 $this->setProperty('stateTitle',$state_title);
 if ($state!='green') {
  say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".");
  say(implode(". ",$details),2);
 } else {
  say(LANG_GENERAL_SYSTEM_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title,2);
 }
 $this->callMethod('stateChanged');
}
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/system_checkstate.php');
/* end injection of {SDevices} */

Communication - Коммуникация
Методы объекта:
checkState
$details=array();
$red_state=0;
$yellow_state=0;

if (!isOnline('Internet')) {
 $yellow_state=1;
 $details[]=LANG_GENERAL_NO_INTERNET_ACCESS;
}

if ($red_state) {
 $state='red';
 $state_title=LANG_GENERAL_RED; 
} elseif ($yellow_state) {
 $state='yellow';
 $state_title=LANG_GENERAL_YELLOW;  
} else {
 $state='green';
 $state_title=LANG_GENERAL_GREEN;   
}

$new_details=implode(". ",$details);
if ($this->getProperty("stateDetails")!=$new_details) {
 $this->setProperty('stateDetails',$new_details);
}

if ($this->getProperty('stateColor')!=$state) {
 $this->setProperty('stateColor',$state);
 $this->setProperty('stateTitle',$state_title);
 if ($state!='green') {
  say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".");
  say(implode(". ",$details));
 } else {
  say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title);
 }
 $this->callMethod('stateChanged');
}

 
Класс

Timer

- Время

Свойства класса:

time - Время, дата, пр.

Методы класса:

onNewMinute - Каждую минуту
onNewHour - Каждый час
/*
//START openweather module
                  $updateTime = gg('ow_setting.updateTime');
                  if($updateTime > 0)
                  {
                     $count = gg('ow_setting.countTime');
                     if($count >= $updateTime)
                     {
                        include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php');
                        $app_openweather = new app_openweather();
                        $app_openweather->get_weather(gg('ow_city.id'));
                        sg('ow_setting.countTime', 1);
                     }
                     else
                     {
                        $count++;
                        sg('ow_setting.countTime', $count);
                     }
                  }
// END openweather module//START openweather module
                  $updateTime = gg('ow_setting.updateTime');
                  if($updateTime > 0)
                  {
                     $count = gg('ow_setting.countTime');
                     if($count >= $updateTime)
                     {
                        include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php');
                        $app_openweather = new app_openweather();
                        $app_openweather->get_weather(gg('ow_city.id'));
                        sg('ow_setting.countTime', 1);
                     }
                     else
                     {
                        $count++;
                        sg('ow_setting.countTime', $count);
                     }
                  }
               // END openweather module
*/

Объекты класса:

ClockChime
Методы объекта:
onNewMinute
$h=(int)date('G',time());
$m=date('i',time());


if (isWeekDay()) {

}


if (timeBetween(getGlobal('NightModeEnd'),getGlobal('NightModeStart')) && getGlobal('clockChimeEnabled')) {
 if ($m=="00") {
   say(timeNow(),1);
 }
}


setGlobal('timeNow',date('H:i'));

$homeStatus=date('H:i');
if (getGlobal('NobodyHomeMode.active')) {
 $homeStatus.=' Дома никого';
} else {
 $homeStatus.=' Дома кто-то есть';
}

$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);

 if (timeBetween(getGlobal('pog_fact.vosxod'),getGlobal('pog_fact.zakat')) && getGlobal('isDark')=="1") {
  setGlobal("isDark",0);
  callMethod('DarknessMode.deactivate');  
 } elseif (!timeBetween(getGlobal('pog_fact.vosxod'),getGlobal('pog_fact.zakat')) && getGlobal('isDark')!="1") {
  setGlobal("isDark",1);
  callMethod('DarknessMode.activate');    
 }
 
  if (timeIs(getGlobal('pog_fact.vosxod'))) {
  say('Всходит солнце');
 }
 if (timeIs(getGlobal('pog_fact.zakat'))) {
  say('Солнце заходит',2);
 }
 
if (timeIs("21:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
 say("Похоже никого нет сегодня, можно сэкономить немного.");
 callMethod('EconomMode.activate');
}

if (timeIs(gg('NightModeStart'))) {
 callMethod('NightMode.activate');
} elseif (timeIs(gg('NightModeEnd'))) {
 callMethod('NightMode.deactivate');
}

if (timeIs("03:00")) {
 runScript("systemMaintenance");
}

if (gg('ThisComputer.AlarmStatus') && timeIs(gg('ThisComputer.AlarmTime'))) {
 runScript('MorningAlarm');
}
onNewHour
// Дата и время
$h=(int)date('G',time());

// раскидываем дату и время если сейчас 00:00 час
if (($h=="00")) {
$day[0]="воскресенье";
$day[1]="понедельник";
$day[2]="вторник";
$day[3]="среда";
$day[4]="четверг";
$day[5]="пятница";
$day[6]="суббота";

$month[1]="января";
$monthAlt[1]="ЯНВАРЬ";
$month[2]="февраля";
$monthAlt[2]="ФЕВРАЛЬ";
$month[3]="марта";
$monthAlt[3]="МАРТ";
$month[4]="апреля";
$monthAlt[4]="АПРЕЛЬ";
$month[5]="мая";
$monthAlt[5]="МАЙ";
$month[6]="июня";
$monthAlt[6]="ИЮНЬ";
$month[7]="июля";
$monthAlt[7]="ИЮЛЬ";
$month[8]="августа";
$monthAlt[8]="АВГУСТ";
$month[9]="сентября";
$monthAlt[9]="СЕНТЯБРЬ"; 
$month[10]="октября";
$monthAlt[10]="ОКТЯБРЬ";
$month[11]="ноября";
$monthAlt[11]="НОЯБРЬ";
$month[12]="декабря";
$monthAlt[12]="ДЕКАБРЬ";

sg("ThisComputer.DateD",date( "d", time()));
sg("ThisComputer.DateM",date( "m", time()));
sg("ThisComputer.DateY",date( "Y", time()));
sg("ThisComputer.Date",date( "d.m.Y", time()));
sg("ThisComputer.Day",$day[date("w")]);
sg("ThisComputer.Month",$month[date("n")]);
sg("ThisComputer.MonthAlt",$monthAlt[date("n")]);
}
$paths=array('/var/log/*.1','/var/log/*.2',
             '/var/log/*.1.*',
             '/var/log/*.2.*',             
             '/var/log/*.3.*',
             '/var/log/*.4.*',
             '/var/log/*.5.*',
             '/var/log/*.6.*',
             '/var/log/*.7.*'
            );
foreach($paths as $p) {
 safe_exec('rm '.$p);
}
runScript('Hourly');
runScript('filesClearOld');

 
Класс

Users

- Пользователи

Свойства класса:

atHome - Дома
Coordinates - Координаты
CoordinatesUpdated - Координаты обновлено
CoordinatesUpdatedTimestamp - Координаты Обновленная отметка времени
fullName - Полное имя
isMoving - Двигается
seenAt - видел в

Методы класса:

alarm - сигнал
goingHome - иду домой
gotHome - добрался до дома
Moving - Движущийся
outOfHome - вне дома

Объекты класса:

admin

 

(start|play) music Код>
runScript('playFavoriteMusic');
 
 
выключить всё
Шаблон:
туши всё|я ухожу|спокойной ночи
 
 
Нарушение периметра Код>
say("Нарушение периметра",1);
 
 
Поговорим о погоде
Шаблон:
(Расскажи о погоде)|(Прогноз)
Код>
say("На какой день интересует погода?");
 
 
Завтра
Шаблон:
(на завтра)|(завтра)
 
 
Сегодня
Шаблон:
(на сегодня)|(сегодня)
 
 
Рабочее место
Шаблон:
работаем|подготовь рабочее место
 
 
Статус системы
Шаблон:
статус