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);
|
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);
|
CirculationPumpStatus
|
//if (gg('CirculationPump.status') == 0) {
//say('Циркуляционный насос выключен',1);
//}
//else if (gg('CirculationPump.status') == 1) {
//say('Циркуляционный насос включен',1);
//}
|
ColaiderHeatersStatusParser
|
if ((gg('Colaider.status') == 1) && (gg('Colaider.Heater1') == 1)) {
say('Разгонный тэн включен',1);
}
else if ((gg('Colaider.status') == 1) && (gg('Colaider.Heater1') == 0)) {
say('Разгонный тэн выключен',1);
}
else if ((gg('Colaider.status') == 1) && (gg('Colaider.Heater2') == 1)) {
say('Рабочий тэн включен',1);
}
else if ((gg('Colaider.status') == 1) && (gg('Colaider.Heater2') == 0)) {
say('Рабочий тэн выключен',1);
}
else if ((gg('Colaider.status') == 1) && (gg('Colaider.Heater2') == 0) && (gg('Colaider.Heater1') == 0)) {
say('Колайдер остывает',1);
}
else if ((gg('Colaider.status') == 0)) {
sg('Colaider.Heater1',0);
sg('Colaider.Heater2',0);
}
|
ColaiderStatusChanged
|
if (gg('Colaider.status') == 0) {
say('Колайдер выключен',1);
sg('Temp6.notify',0);
sg('Temp7.notify',0);
callMethod('CirculationPump.turnOff');
say('Выключаю циркуляционный насос', 1);
}
else if (gg('Colaider.status') == 1) {
say('Колайдер включен',1);
sg('Temp6.notify',1);
sg('Temp7.notify',1);
callMethod('CirculationPump.turnOn');
say('Включаю циркуляционный насос', 1);
}
|
ConvectionPumpStatus
|
//if (gg('ConvectionPump.status') == 0) {
//say('Конвекционный насос выключен',1);
//}
//else if (gg('ConvectionPump.status') == 1) {
//say('Конвекционный насос включен',1);
//}
|
GuestRoomLight
|
callMethod('XiRelay04.switch');
|
MotionInWorkshopAtNight
|
if (gg('NightMode.active') == 1) {
say('Движение в мастерской',3);
}
|
OutsideLightTurnOnWhanArriveAfterSunset
|
Увімкнення вуличного освітлення, коли прибуваю до дому після заходу сонця на 10 хвилин
if (gg('ThisComputer.timeNow') > gg('ThisComputer.SunSetTime')) {
runScript('TurnOnOutsideLightOn10minutes');
}
else if (gg('ThisComputer.timeNow') < gg('ThisComputer.SunSetTime')) {
say('На улице светло, не буду включать свет на улице',2);
}
|
SecurityAlarmActions
|
Действия в режиме Охраны
if (gg('SecurityAlarmMode.active')==1 && gg('ThisComputer.somebodyHome')==1) {
say('Кто то проник в дом '.gg('ThisComputer.somebodyHomeText'), 2);
}
|
SecurityAlarmModeSwitch
|
callMethod('SecurityAlarmMode.Switch');
|
SunriseSunsetTime
|
set ThisComputerSunsetTime using php function date_sun_info
$array = date_sun_info(time(date('Y-m-d')), 48.991593, 25.801961);
sg(('ThisComputer.SunSetTime'), date("H:i", $array['sunset']));
sg(('ThisComputer.SunRiseTime'), date("H:i", $array['sunrise']));
|
TurnOnNightLightOnXseconds
|
say('Включаю ночник',2);
callMethod('XiDimmer01.turnOn');
ClearTimeOut("Timer01");
SetTimeOut("Timer01","callMethod('XiDimmer01.turnOff');",$timeout=30);
|
TurnOnOutsideLightOn10minutes
|
say('Включаю свет на улице',2);
callMethod('XiRelay05.turnOn');
callMethod('XiRelay08.turnOn');
callMethod('XiRelay10.turnOn');
ClearTimeOut("Timer01");
SetTimeOut("Timer01","say('Выключаю свет на улице',2); callMethod('XiRelay05.turnOff');callMethod('XiRelay08.turnOff');callMethod('XiRelay10.turnOff');",$timeout=600);
|
WaterPumpAlarm
|
say('Внимание!!! Слишком долго работает насос',2);
sg('WaterPumpAlarm.active', 1);
|
WaterPumpParser
|
if (gg('Pump3.status')==1){
setGlobal('Pump3.startTime',time());
$pause=(intval((gg('Pump3.startTime')-gg('Pump3.finishTime'))/60));
//преобразование з секунд в минуты с целым значением
setGlobal('Pump3.pauseBetween',$pause);
SetTimeOut("Timer02","rs('WaterPumpAlarm');",660);
return;
}
if (gg('Pump3.status')==0){
ClearTimeOut("Timer02");
$finish=time();
$start=gg('Pump3.startTime');
$duration=$finish-$start;
setGlobal('Pump3.durationLast',$duration);
setGlobal('Pump3.finishTime',$finish);
$min=intval($duration/60);
$sec=$duration - ($min*60);
/*
if ($min<=0) {
say('длительность работы насоса '.$sec.' секунд',1);
}
else if ($min==1){
say('длительность работы насоса '.$min.' минута '.$sec.' секунд',1);
}
else if ($min==2 || $min==3 || $min==4){
say('длительность работы насоса '.$min.' минуты '.$sec.' секунд',1);
}
else if ($min>=5){
say('длительность работы насоса '.$min.' минут '.$sec.' секунд',1);
}
$pause = gg('Pump3.pauseBetween');
$Pmin=intval($pause/60);
$Psec=$pause - ($Pmin*60);
if ($Pmin<=0) {
say('интервал между включениями '.$Psec.' секунд',1);
}
else if ($Pmin==1){
say('интервал между включениями '.$Pmin.' минута '.$Psec.' секунд',1);
}
else if ($Pmin==2 || $Pmin==3 || $Pmin==4){
say('интервал между включениями '.$Pmin.' минуты '.$Psec.' секунд',1);
}
else if ($Pmin>=5){
say('интервал между включениями '.$Pmin.' минут '.$Psec.' секунд',1);
}
*/
}
|
Hourly
|
Выполняется каждый час
|
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');
if (getGlobal('ThisComputer'.'.'.'WebCamMotionAuto')) {
runScript('manageWebCamMotion', array('start'=>'1'));
}
|
SomebodyHome
|
Срабатывает в том случае, когда кто-то появился дома
callMethod('EconomMode'.'.'.'deactivate');
say('Здравствуйте!', 2);
runScript('reportStatus', array());
if (getGlobal('ThisComputer'.'.'.'WebCamMotionAuto')) {
setTimeOut('stopWebCamDetection', " runScript('manageWebCamMotion', array('stop'=>'1'));", (int)('60'));
}
|
startUp
|
Система загружена
say('Система загружена', 2);
runScript('tellIPAddress', array());
|
turnOffEverything
|
Выключить все приборы
$objects=array('Switch1','Switch2','Switch3');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
|