Bra_Swich
|
!Управление Бра, в зависимости от времени суток!
$bra_status = getGlobal('BraLR.status');
$tv_status = gg("SonyTV.status");
if ($bra_status == 0 && $tv_status == 0) {
if (timeBetween(getGlobal('NightModeEnd'),getGlobal('SunRiseTime'))){
//между окончанием ночи и рассветом
Setglobal ('BraLR.snm', 3);
}
if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && gg('LuxLR.value') <= 30) {
// от рассвета до заката
Setglobal ('BraLR.snm', 2);
}
if (timeBetween(getGlobal('SunSetTime'),getGlobal('NightModeStart'))) {
//поле заката до ночи
Setglobal ('BraLR.snm', 3);
}
//callMethod('BraLR.turnOn');
SetTimeOut("nobodylivingRoom","callMethod('BraLR.turnOff');", 1*60*15); // выполняем если 15 минут никого не было
} else if ($bra_status == 1 && $tv_status == 0){
ClearTimeOut("nobodylivingRoom");
SetTimeOut("nobodylivingRoom","callMethod('BraLR.turnOff');", 1*60*15); // выполняем если 15 минут никого не было
}
|
kitchen_hood
|
!Управление вытяжкой по температуре и влажности!
$FanK_status =getGlobal("FanKR.status"); // узнаем состояние вытяжки
$TempK_value =getGlobal("TempKR.value"); // узнаем текущую температуру
$HumK_value = getGlobal("HumKR.value"); // узнаем текущую влажность
$srhum = (gg('HumLR.value')+gg('HumBR.value'))/2;// ср. влажность по дому
$srTemp =(gg('TempBR.value')+gg('TempLR.value'))/2;// ср. температура по дому
if (getGlobal("EconomMode.active") == 0 && gg('FanKR.automation') == 1) { // если режим экономии выкл. и управление автоматикой вкл.
if ($FanK_status == 0){
if ($HumK_value > ($srhum+10)) { // если вытяжка выкл. и влажность больше на 10% чем ср. по дому
callMethod("FanKR.turnOn");
sg('FanKR.TimeOut',1);
say('Вытяжка включена'.'Температура на кухне '.$TempK_value.' градусов. Влажность'.$HumK_value.'процентов',0);}
SetTimeOut("kitchen_hood","sg('FanKR.TimeOut',0);"."rs('kitchen_hood');", 5*60);
}
if ($FanK_status == 1 && gg('FanKR.TimeOut') == 0) {
if ($TempK_value < ($srTemp+5) && $HumK_value < ($srhum+5)) { // если вытяжка вкл. и температура и влажность меньше ср. по дому +5
callMethod("FanKR.turnOff");
say('Вытяжка выключена'.'Температура на кухне '.$TempK_value.' градусов. Влажность'.$HumK_value.'процентов',0);
callMethod('BlightKR.turnOff'); }// вырубаем свет
}
}
if ($FanK_status == 1 && gg('FanKR.automation') == 0 && gg ('FanKR.notify') == 1) { // если вытяжка влючена и работает в ручном режиме и напоминания не проговаривались
if ($TempK_value < 29 && $HumK_value < 50) { // если вытяжка выкл. и температура и влажность норма
say('Температура и влажность на кухне в норме не забудьте выключить вытяжку', 1);
sg ('FanKR.notify', 0); // выключаем напоминания
}
}
|
Mode_Сhoice
|
Выбор режима: Если телефон в сети то Экономный режим, Иначе Никого нет дома
if (gg('Katya.atHome') ==1 or gg('Denis.atHome') ==1 && gg('SecurityArmedMode.active') == 0) {
callMethod('SecurityPerimeterMode.activate');
if (gg('EconomMode.active') == 0) {
callMethod('EconomMode.activate');
}
} else {
callMethod('NobodyHomeMode.activate');
}
|
WaterWet
|
Таймер Уровня воды, в увлажнителе в Спальне
$Wet = gg ('HumerBR.waterTimer'); //получаем время работы увлажнителя
if ($Wet <= 500) {
sg ('HumerBR.waterTimer', $Wet+1); // прибавляем 1 мину к времени работы
sg ('HumerBR.waterText', 500-$Wet);
} else {
callMethod('HumerBR.turnOff');
sg ('HumerBR.water', 0);
sg ('HumerBR.waterText', 'Пуст');
say("В увлажнителе заканчивается вода.Увлажнитель выключен", 1);
// выключаем увлажнитель если время больше 8,5 часов, меняем наличие воды на 0
sleep (5);
callMethod('HumerBR.turnOff');
// на всякий вырубаем еще разок
}
|
WeekEnd
|
Выключение системных звуков в выходные днём
setGlobal('minMsgLevel','2'); // выключаем системные звуки
SetTimeOut("sleeping","setGlobal('minMsgLevel','1');", 3*60*60); // через ** включаем обратно
|
HaweGoogDay
|
Утреннее приветствие
say(timeNow(),1);
sleep (3);
say ('Сегодня днем по городу Чимкенту ожидается: ',2);
sleep (3);
say(gg('ow_today.temperature').' градусов, '.gg('ow_today.weather_type').', ветер '.gg('ow_today.wind_direction_full').' '.gg('ow_today.wind_speed').' метров в секунду, влажность '.gg('ow_today.humidity').' процентов.',2);
/*sleep (10);
if (gg('XiSensor_temp05.RegisteredExcess') == 1) {
say('Сегодня ночью в '.gg('XiSensor_temp05.RegisteredTime').' зарегистрированно понижение температуры до '.gg('XiSensor_temp05.RegisteredMin').' градуса по Цельсию',2);
sg('XiSensor_temp05.RegisteredExcess', 0);
}*/
sleep (10);
runScript('Говорящий календарь');
|
Reminder
|
Напоминалки
if (timeIs("21:00")) {
sleep (40);
say("Не забудьте поставить Мумиё",2);
$nosay = "Не забудьте поставить Мумиё";
}
/*if (timeIs("13:00")) {
sleep (40);
say("Денису выпить лекарства",2);
say("Стафицид",0);
}
if (timeIs("19:00")) {
sleep (40);
say("Денису выпить лекарства",2);
say("Хламидол",0);
}
if (timeIs("23:00")) {
sleep (40);
say("Прополоскать горло",2);
say("стафицид 10 капель",0);
}*/
|
Говорящий календарь
|
if (file_exists('./modules/app_calendar/app_calendar.class.php'))
{
Define('TEMP_APP_CALENDAR_SOONLIMIT', '3'); //лимит дней которые проговаривает
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar -> usual($out);
$events = $out['EVENTS_TODAY'];
$say_phrase = '';
if ($events)
{
$tasks = '';
$cals = '';
$i = 0;
$j = 0;
foreach($events as $ev)
{
if ($ev['IS_TASK'] == 1 and $ev['IS_DONE'] == 0)
{
$i++;
$tasks.= $i.'. '.$ev['TITLE'].'. ';
} else {
$j++;
$cals.= $j.'. '.$ev['TITLE'].'. ';
}
}
if ($i != 0) $say_phrase.= "У вас на сегодня запланированы задачи, ".$tasks;
if ($j != 0) $say_phrase.= "Сегодняшние события, ".$cals;
}
$events = $out['CALENDAR_CATEGORIES'];
$i = 0;
$tasks = '';
if ($events)
{
foreach($events as $category)
{
$events_past = $category['EVENTS_PAST'];
if ($events_past)
{
$tasks.= 'из категории: '.$category['TITLE'].'. '; //Если нужно перед пропущенными задачами указывать категорию
foreach($events_past as $ev)
{
$i++;
$tasks.= $i.'. '.$ev['TITLE'].'. ';
}
}
}
if ($i != 0) $say_phrase.= " Напоминаю пропущенные задачи, ".$tasks;
}
$events = $out['CALENDAR_CATEGORIES'];
$tasks = '';
$i = 0;
if ($events)
{
foreach($events as $category)
{
$events_soon = $category['EVENTS_SOON'];
if ($events_soon)
{
//$say_phrase.= ' в категории: '.$category['TITLE'].'. ';
foreach($events_soon as $ev)
{
$i++;
$tasks.= " через ".$ev['AGE']." ".$ev['DAYS']." ".$ev['TITLE'].". ";
}
}
}
if ($i != 0) $say_phrase.= "Напоминаю что".$tasks;
}
if ($say_phrase)
{
//echo $say_phrase;
say($say_phrase,2);
}
}
|
ConnectD
|
if (gg('NobodyHomeMode.active') == 1) {
sg ('Denis.CameIn', 1);
}
if (gg('Denis.atHome')==0){
say("Денис дома",2);
}
if (gg('SecurityArmedMode.active') == 1) {
callMethod('SecurityArmedMode.deactivate');
}
|
ConnectK
|
if (gg('NobodyHomeMode.active') == 1) {
sg ('Katya.CameIn', 1);
}
if (gg('Katya.atHome')==0){
say("Катя дома",2);
}
if (gg('SecurityArmedMode.active') == 1) {
callMethod('SecurityArmedMode.deactivate');
}
|
DenisAtHome
|
//say("готово",0);
$charge=$params["CHARGE"];
$blevel=$params["BLEVEL"];
sg('Denis.Charging',$charge);
sg('Denis.BatLevel',$blevel);
sg ('Denis.atHome', 1);
sg('Denis.LatestActivity',date('H:i'));
if (($charge ==0) && ($blevel <= 15)) {
say("Денис, телефон разрядился! уровень заряда".$blevel,2);
}
SetTimeOut("denisgone","sg ('Denis.atHome', 0);"."sg ('Denis.BatLevel', gg('Denis.LatestActivity'));", 1*60*60); // выполняем через час
|
KatyAtHome
|
//say("готово",0);
$charge=$params["CHARGE"];
$blevel=$params["BLEVEL"];
sg('Katya.Charging',$charge);
sg('Katya.BatLevel',$blevel);
sg ('Katya.atHome', 1);
sg('Katya.LatestActivity',date('H:i'));
if (($charge ==0) && ($blevel <= 15)) {
say("Катя, телефон разрядился! уровень заряда".$blevel,2);
}
SetTimeOut("katyagone","sg ('Katya.atHome', 0);"."sg ('Katya.BatLevel', gg('Katya.LatestActivity'));", 1*60*60); // выполняем через час
|
tellWeather
|
Говорит фактическую погоду
say('На улице '.gg('ow_fact.temperature').' градусов, '.gg('ow_fact.weather_type').', ветер '.gg('ow_fact.wind_speed').' метров в секунду, влажность '.gg('ow_fact.humidity').' процентов.',2);
|
tellWeather_Today
|
Говорит погоду на сегодня
say('Сегодня днем по городу Чимкенту ожидается: ' ,2);
sleep (1);
say(gg('ow_today.temperature').' градусов, '.gg('ow_today.weather_type').', ветер '.gg('ow_today.wind_direction_full').' '.gg('ow_today.wind_speed').' метров в секунду, влажность '.gg('ow_today.humidity').' процентов.',2);
|
tellWeather_Tomorrow
|
Говорит погоду на завтра
say('Завтра днем по городу Чимкенту ожидается: ' ,2);
say(gg('ow_tomorrow.temperature').' градусов, '.gg('ow_tomorrow.weather_type').', ветер '.gg('ow_tomorrow.wind_direction_full').' '.gg('ow_tomorrow.wind_speed').' метров в секунду, влажность '.gg('ow_tomorrow.humidity').' процентов.',2);
|
Weather Today MY
|
Устанвливаем погоду c OWM
// Устанавливаем значения на сегодня
setGlobal('ow_today.pressure_mmhg',getGlobal('ow_day4.pressure_mmhg'));
setGlobal('ow_today.humidity',getGlobal('ow_day4.humidity'));
setGlobal('ow_today.wind_speed',getGlobal('ow_day4.wind_speed'));
setGlobal('ow_today.wind_direction_full',getGlobal('ow_day4.wind_direction_full'));
setGlobal('ow_today.weather_type',getGlobal('ow_day4.weather_type'));
setGlobal('ow_today.temperature',getGlobal('ow_day4.temperature'));
// Устанавливаем значения на завтра
setGlobal('ow_tomorrow.pressure_mmhg',getGlobal('ow_day12.pressure_mmhg'));
setGlobal('ow_tomorrow.humidity',getGlobal('ow_day12.humidity'));
setGlobal('ow_tomorrow.wind_speed',getGlobal('ow_day12.wind_speed'));
setGlobal('ow_tomorrow.wind_direction_full',getGlobal('ow_day12.wind_direction_full'));
setGlobal('ow_tomorrow.weather_type',getGlobal('ow_day12.weather_type'));
setGlobal('ow_tomorrow.temperature',getGlobal('ow_day12.temperature'));
|
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);
|
filesClearOld
|
Check old files
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
|
Hourly
|
Выполняется каждый час
|
maintenance
|
Автоматическое обслуживание системы
require(ROOT.'scripts/startup_maintenance.php');
|
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);
|
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,1);
|
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);
|
startUp
|
Система загружена
say('Система загружена', 2);
runScript('tellIPAddress', array());
|
tellIPAddress
|
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);
|
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);
}
|