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);
|
CamSelect
|
$text=$params['SUBJECT'];
if (stristr($text,'Motion')) {
}
if (stristr($text,'Dom')) {
clearTimeOut('CameraDom_move');
setTimeOut('CameraDom_move',"sg('CameraDom.motionDetected',0);",80);
$cd = gg('CameraDom.dayCount')+1;
sg('CameraDom.motionDetected',1);
sg('CameraDom.updatedTimestamp',time());
sg('CameraDom.dayCount',$cd);
sg('CameraDom.statusText',date('Y-m-d H:i:s'));
} elseif (stristr($text,'Ulica')) {
$cu = gg('CameraUlica.dayCount')+1;
clearTimeOut('CameraUlica_move');
setTimeOut('CameraUlica_move',"sg('CameraUlica.motionDetected',0);",80);
sg('CameraUlica.motionDetected',1);
sg('CameraUlica.updatedTimestamp',time());
sg('CameraUlica.dayCount',$cu);
sg('CameraUlica.statusText',date('Y-m-d H:i:s'));
}else{
say ($text);
}
clearTimeOut("Mov_tim");
setTimeOut("Mov_tim", runScript("Mov"), 2*60);
|
lightOff
|
$light=getObjectsByClass("Light");
$total=count($light);
for($i=0;$i<$total;$i++) {
callMethod($light[$i]['TITLE'].'.turnOff');
//say($light[$i]['TITLE'].'.turnOff');
}
|
Mov
|
$TimeGarage = gg('WebCamG.updatedTimestamp');
$TimeDoor = gg('ExDoor.updatedTimestamp');
$MotionDom = gg('CameraDom.motionDetected');
$TimeDom = gg('CameraDom.updatedTimestamp');
$MotionUlica = gg('CameraUlica.motionDetected');
$TimeUlica = gg('CameraUlica.updatedTimestamp');
if($TimeUlica<$TimeDom && $TimeDom-$TimeUlica>5 && $TimeDom-$TimeUlica<=60 && $TimeDoor-$TimeDom>2*60 && $TimeGarage-$TimeUlica>2*60) {
say("Похоже домой кто-то пришел!");
runscript('sendCamUVideo');
runscript('sendCamDVideo');
} else if($TimeUlica>$TimeDom && $TimeUlica-$TimeDom>5 && $TimeUlica-$TimeDom<=60 && $TimeDom-$TimeDoor>2*60 && abs($TimeGarage-$TimeDom)>2*60){
Say ("Похоже из дома кто-то ушел!");
runscript('sendCamDVideo');
runscript('sendCamUVideo');
} else if($TimeUlica<$TimeDom && $TimeDom-$TimeUlica>5 && $TimeDom-$TimeUlica<=60 && $TimeDoor-$TimeDom<=2*60 && abs($TimeDom-$TimeGarage)>2*60){
Say ("В дом кто-то пришел!");
runscript('sendCamUVideo');
runscript('sendCamDVideo');
} else if($TimeUlica>$TimeDom && $TimeUlica-$TimeDom>5 && $TimeUlica-$TimeDom<=60 && abs($TimeDoor-$TimeDom)<=20 && abs($TimeDoor-$TimeGarage)>3*60){
Say ("Из дома кто-то ушел!");
runscript('sendCamDVideo');
runscript('sendCamUVideo');
} else if($TimeUlica<$TimeDom && $TimeDom-$TimeUlica>5 && $TimeDom-$TimeUlica<=3*60 && $TimeDom-$TimeGarage<=60){
Say ("Домой кто то приехал!");
runscript('sendCamUVideo');
runscript('sendCamGImage');
runscript('sendCamDVideo');
} else if($TimeUlica>$TimeDom && $TimeUlica-$TimeDom<=60 && abs($TimeUlica-$TimeGarage)<=60){
Say ("Из дома кто-то уехал!");
runscript('sendCamDVideo');
runscript('sendCamGImage');
runscript('sendCamUVideo');
}
|
sendCamDVideo
|
//say("Дом");
$d=date('d');
$filepath = 'D:/NVR-Video/14d2a9a9-3176-366b-a088-252a64d18f0c/'.date('Y/m',time()).'/'.$d.'/';
foreach(glob($filepath . '*.ts') as $file) {
$LastModified[] = filemtime($file); // массив файлов со временем изменения файла
$FileName[] = $file; // массив всех файлов
}
$files = array_multisort($LastModified, SORT_NUMERIC, SORT_ASC, $FileName);
$lastIndex = count($LastModified) - 1;
$LastModifiedFile = $FileName[$lastIndex-2];
if (!$LastModifiedFile){
$d=date('d')-1;
$filepath = 'D:/NVR-Video/14d2a9a9-3176-366b-a088-252a64d18f0c/'.date('Y/m',time()).'/'.$d.'/';
foreach(glob($filepath . '*.ts') as $file) {
$LastModified[] = filemtime($file); // массив файлов со временем изменения файла
$FileName[] = $file; // массив всех файлов
}
$files = array_multisort($LastModified, SORT_NUMERIC, SORT_ASC, $FileName);
$lastIndex = count($LastModified) - 1;
$LastModifiedFile = $FileName[$lastIndex-2];
}
//say($LastModifiedFile);
exec('C:\_majordomo\apps\ffmpeg\ffmpeg.exe -y -i '. $LastModifiedFile.' -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -vf scale=w=640:h=480:force_original_aspect_ratio=decrease -r 15 C:/_majordomo/htdocs/cached/img/out0.mp4');
//say($TimeDom-$TimeUlica."Дом-Улица ");
//say($TimeDoor-$TimeDom." Дверь-Дом ");
//say(abs($TimeDom-$TimeGarage)." Дом-Гараж ");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendVideoToAdmin("C:/_majordomo/htdocs/cached/img/out0.mp4");
|
sendCamGImage
|
$filepath = 'C:/_majordomo/htdocs/cached/webcamG/Gallery/';
foreach(glob($filepath . '*.jpg') as $file) {
// далее получаем последний добавленный/измененный файл
$LastModified[] = filemtime($file); // массив файлов со временем изменения файла
$FileName[] = $file; // массив всех файлов
}
// Сортируем массив с файлами по дате изменения
$files = array_multisort($LastModified, SORT_NUMERIC, SORT_ASC, $FileName);
$lastIndex = count($LastModified) - 1;
// И вот он наш последний добавленный или измененный файл
$LastModifiedFile = $FileName[$lastIndex];
//copy("http://192.168.10.10:8080/cam_1.jpg", "C:/_majordomo/htdocs/cached/img/out3.jpg");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAdmin("$LastModifiedFile");
|
sendCamUVideo
|
//say("Дом");
$d=date('d');
$filepath = 'D:/NVR-Video/f31bfe1f-c38d-3c3c-b1ad-4aa9fb3f6507/'.date('Y/m',time()).'/'.$d.'/';
foreach(glob($filepath . '*.ts') as $file) {
$LastModified[] = filemtime($file); // массив файлов со временем изменения файла
$FileName[] = $file; // массив всех файлов
}
$files = array_multisort($LastModified, SORT_NUMERIC, SORT_ASC, $FileName);
$lastIndex = count($LastModified) - 1;
$LastModifiedFile = $FileName[$lastIndex-2];
if (!$LastModifiedFile){
$d=date('d')-1;
$filepath = 'D:/NVR-Video/f31bfe1f-c38d-3c3c-b1ad-4aa9fb3f6507/'.date('Y/m',time()).'/'.$d.'/';
foreach(glob($filepath . '*.ts') as $file) {
$LastModified[] = filemtime($file); // массив файлов со временем изменения файла
$FileName[] = $file; // массив всех файлов
}
$files = array_multisort($LastModified, SORT_NUMERIC, SORT_ASC, $FileName);
$lastIndex = count($LastModified) - 1;
$LastModifiedFile = $FileName[$lastIndex-2];
}
//say($LastModifiedFile);
exec('C:\_majordomo\apps\ffmpeg\ffmpeg.exe -y -i '. $LastModifiedFile.' -t 5 -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -vf scale=w=640:h=480:force_original_aspect_ratio=decrease -r 15 C:/_majordomo/htdocs/cached/img/out0.mp4');
//say($TimeDom-$TimeUlica."Дом-Улица ");
//say($TimeDoor-$TimeDom." Дверь-Дом ");
//say(abs($TimeDom-$TimeGarage)." Дом-Гараж ");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendVideoToAdmin("C:/_majordomo/htdocs/cached/img/out0.mp4");
|
turnOffEverything
|
Выключить все приборы
$objects=array('k1','k2','k3','k4','l1','b1','v1','h1','t1','h2','p1','SC2B');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
if(gg('TV.status')=='1'){
callMethod('TV.turnOff');
}
|
TurnOffk
|
$objects=array('k2','k3');
if (gg('LAMABook.inUse')=='0'){
array_push($objects,'k4');
}
if (gg('HOMEPC.inUse')=='0'){
array_push($objects,'k1');
}
foreach($objects as $o) {
callMethod($o.'.turnoff');
//say($o);
}
|
TurnOffvth1h2p1
|
$objects=array('v1','h1','t1','h2','p1');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
|
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'));
}
|
RBGAtention
|
sg('RMPro.RGBLight',1);
sleep(1);
sg('RMPro.RGBLight',1);
|
reminderExDoor
|
say('Входная дверь открыта!',5);
SetTimeOut("reminderExdoorTimer","runScript('reminderExDoor');", 15*60);
|
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);
|
welcome
|
$users=getObjectsByClass("Users");
$usrtotal=count($users);
$upd=gg('NobodyHomeMode.updated');
$res='Добро пожаловать домой.';
for($i=0;$i<$usrtotal;$i++) {
if (time()-getGlobal($users[$i]['TITLE'].'.NetUpdatedTimestamp')<5*60){
$res.= $users[$i]['TITLE'].'.';
}
}
if(time()-$upd>24*60*60){
$res.='Я скучала...';
}
if (round(gg('A1.temperature'))==round(gg('RMTemp.temperature'))){
$res.='Температура в кухне и в зале: '.round(gg('RMTemp.temperature')).' градусов. Влажность: '.round(gg('A1.humidity')).' процентов.';
}else{
$res.='Температура в кухне: '.round(gg('A1.temperature')).', в зале: '.round(gg('RMTemp.temperature')).' градусов. Влажность: '.round(gg('A1.humidity')).' процентов.';
}
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'.'.');
}
}
$res.='Не забудьте покормить кошек и проверить лоток.';
sayTo($res,2,Tab);
if (gg('DarknessMode.active')=='1'){
callMethod('h2.turnOn');
callMethod('k2.turnOn');
setTimeout("h2","callMethod('h2.turnOff');",3*60);
}
callMethod('h1.turnOn');
setTimeout("h1","callMethod('h1.turnOff');",5*60);
|