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);
|
AlarmOn
|
Сирена ВКЛ
sg('Gateway2020-01-21.ringtone','1,30'); // проиграть рингтон 12 с громкостью 50
sleep(5);
sg('Gateway2020-01-21.ringtone','stop');
|
eveningGreeting
|
// возвращаемся вечером домой
sleep (6);
say("Добро пожаловать домой!",2);
$t=round(gg('TempSensor01.value'),0);
sleep(4);
say ('Cейчас в спальне ' .$t. ' градусов цельсия',2);
$t=round(gg('Sensor_temp03.value'),0);
sleep(4);
say ('Также я знаю, что температура снаружи равна '.$t.' градусов',2);
//setTimeOut('canhelp','runScript("TabletAsk");',10);
/*
// включаем блок зарядок на 1 час
//callMethod("netping_pwr2.turnon");
//clearTimeOut("charging_outlet2");
//setTimeOut("charging_outlet2",'callMethod("netping_pwr2.turnoff");',1*60*60);
// если уже темно
if (getGlobal('DarknessMode.active')) {
callMethod("Relay05.turnOn"); // включаем свет в холе
// callMethod("lcw1.turnOn"); // включаем свет над барной стойкой
//callMethod("lcw3.turnOn"); // включаем подсветку потолка в зале
//callMethod("lcw4.turnOn"); // включаем свет в коридоре
//callMethod("lcw8.turnOn"); // включаем свет над столом
//callMethod("RCOutlet1.turnOn"); // включаем гирлянду в коридоре
//callMethod("noo8.turnOn"); // включаем подсветку мебели
//callMethod('Orvibo1.turnOn'); //включаем гирлянду
//callMethod("MiLamp2.setColor",array('color'=>'#00ff00')); // свет в цветном светильнике
}
*/
|
Hourly
|
Выполняется каждый час
|
morningGreeting
|
sleep(8);
say("Ну наконец-то кто-то проснулся! Доброе утро!",2);
//sleep(5);
runScript("timeNow"); // говорим время
//runScript("reportStatus", array()); // статус системы
$t=round(gg('TempSensor01.value'),0);
say ('Cейчас в спальне ' .$t. ' градусов цельсия',2);
sleep(2);
runScript("readWeatherToday");
//=============================================
// ============================================
// ============================================
clearTimeOut('AlarmTimer');
if (gg('ThisComputer.AlarmWaiting')) {
setGlobal('ThisComputer.AlarmWaiting',0);
}
if (gg('GuestsMode.active')) return;
//runScript('morningRoutine');
//runScript("sayTodayAgenda");
//runScript("playFavoriteMusic");
|
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('Включаю режим экономии', 1);
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','Relay03','Relay04','Relay05','Relay06','Relay07','Relay08','Relay09','Relay10','Relay11','Relay12','Relay13','Relay14','Relay15','Relay16');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
|
Vents
|
Управление вентиляцией
if (gg('Sanuzel.Temperature') > gg('Sanuzel.TemperatureSet') - 3 && gg('Bedroom.Temperature') > gg('Bedroom.TemperatureSet') - 3)
{
if (gg('Sanuzel.Humidity') > gg('Sanuzel.HumiditySet') || gg('Bedroom.Humidity') > gg('Bedroom.HumiditySet') && gg('Relay16.autoStatus') ==0 )
{
callMethod('Relay16.autoOn');
say('Вентиляция включена !', 1);
}
if (gg('Sanuzel.Humidity') < gg('Sanuzel.HumiditySet') - 2 && gg('Bedroom.Humidity') < gg('Bedroom.HumiditySet') && gg('Relay16.autoStatus') ==1 )
{
callMethod('Relay16.autoOff');
say('Вентиляция выключена !', 1);
}
}
else
{
if (gg('Relay16.autoStatus') ==1)
{
callMethod('Relay16.autoOff');
say('Вентиляция выключена !', 1);
}
}
|
weatherReceived
|
setGlobal('ThisComputer.tempOutside',getGlobal('ves.temperature'));
setGlobal('ThisComputer.SunRiseTime',getGlobal('ves.sunrise'));
setGlobal('ThisComputer.SunSetTime',getGlobal('ves.civil_twilight_end'));
|