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);
|
rebootSys
|
Перезагрузка системы с сохранением базы данных.
say('Сохраняю копию базы', 2);
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = 'c:/_majordomo/server/mysql/bin/mysqldump.exe';
$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);
safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe script "c:\_majordomo\reboot_sys.ncl"');
|
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);
|
SleepMode
|
Включает|Выключает режим "Все спят"
if (gg('DebugMode.active') == 1) {
say('scripts SleepMode');
}
set_time_limit(120);
//Отключаем ручной режим управления светом
rs('HandSwitchLightModeOff');
if (gg('SleepMode.lock') == 0) {
if (gg('ManualMode.active') == 1) {
if (gg('SleepMode.active') == 1) {
sg('ThisComputer.somebodyHomeText', 'Похоже все спят');
sg('ThisComputer.somebodyHome', '1');
sg('ThisComputer.nobodyHome', '0');
// Отправляем стикер
rs('SendSticker',array('Sticker'=>'good_night'));
//Переключаем розетки
$ESocket=getObjectsByClass("ElectricSocket");
$total=count($ESocket);
for($i=0;$i<$total;$i++) {
$ESocket[$i]['Sleep']=getGlobal($ESocket[$i]['TITLE'].'.react_to_SleepMode');
$ESocket[$i]['esstatus']=getGlobal($ESocket[$i]['TITLE'].'.esstatus');
if ($ESocket[$i]['Sleep']) {
SetGlobal($ESocket[$i]['TITLE'].'.esstatus',0);
}
}
rs('LightAllOff');
}else{
// Отправляем стикер
rs('SendSticker',array('Sticker'=>'hello'));
callMethod('EconomMode.deactivate'); //Отключаем режим экономии
sg('ThisComputer.somebodyHome', '1');
sg('ThisComputer.nobodyHome', '0');
//Переключаем розетки
$ESocket=getObjectsByClass("ElectricSocket");
$total=count($ESocket);
for($i=0;$i<$total;$i++) {
$ESocket[$i]['Sleep']=gg($ESocket[$i]['TITLE'].'.react_to_SleepMode');
$ESocket[$i]['esstatus']=gg($ESocket[$i]['TITLE'].'.esstatus');
if ($ESocket[$i]['Sleep']) {
sg($ESocket[$i]['TITLE'].'.esstatus',1);
}
}
}
//система в ручном режиме
}else{
sg('SleepMode.active', '0');
say('Режим "Все спят" игнорирован, так как система в ручном режиме.',5);
sg('ThisComputer.somebodyHomeText', 'Система в ручном режиме');
}
// Меняем громкость и уровень важности сообщений
if (gg('SleepMode.active') == 0) {
rs(WakeUp, array('msg' => 'Все спят'));
}
if (gg('SleepMode.ReportSms') == 1) {//Если отправлять СМС о переключении режима
// Готовим сообщение
if (gg('myreport.on') == 1) {
if (gg('SleepMode.active') == 1) {
$msg = date("H:i",time())." Вкл режим «Все спят».";
}else{
$msg = date("H:i",time())." Выкл режим «Все спят».";
}
sg("myreport.title", $msg);
if (gg('myreport.sms') == 1) {
sg("myreport.sms_outbox", $msg);
// Отправить сообщения всем подписаным
rs(SmsSend, array("value" => $msg) );
}
}
}
}
|
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'));
}
|
sanrise
|
Вычисление рассвета и заката солнца.
$sun_info = date_sun_info(time(), 44.740770, 37.781102); // географические координаты
///44°43′27″, 37°46′03″
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
echo 'Восход: '.date("H:i:s", $sunrise).'<br>';
setGlobal('ThisComputer.SunRiseTime',date("H:i", $sunrise));
}
if ($key == 'sunset') {
$sunset = $val;
$day_length = $sunset - $sunrise;
echo 'Заход: '.date("H:i", $sunset).'<br>';
echo 'Долгота дня: '.gmdate("H:i", $day_length).'<br>';
setGlobal('ThisComputer.SunSetTime',date("H:i", $sunset));
setGlobal('ThisComputer.LongTagTime',gmdate("H:i", $day_length));
}
if ($key == 'transit') {
//echo 'В зените: '.date("H:i:s", $val).'<br>';
setGlobal('ThisComputer.TransitTime',date("H:i", $val));
}
if ($key == 'civil_twilight_begin') {
//echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
setGlobal('ThisComputer.Chicivil_beginTime',date("H:i", $val));
}
if ($key == 'civil_twilight_end') {
//echo 'Конец вечерних сумерек: '.date("H:i:s", $val).'<br>';
setGlobal('ThisComputer.civil_endTime',date("H:i", $val));
}
}
|
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');
}
|
qqq
|
callMethod("СonditionerLG.turnOn");
|
Включение HDMI 1
|
Включение входа HDMI 1 (Ресивер "Триколор")
// Устанавливаем статус TelevizorPHILIPSHDMI3
sg('TelevizorPHILIPSHDMI1.status',1);
sg('TelevizorPHILIPSHDMI2.status',0);
sg('TelevizorPHILIPSHDMI3.status',0);
sg('TelevizorPHILIPS.HDMI',1);
sg('TelevizorPHILIPS.devices',"Триколор");
$SHDMI1 = gg('TelevizorPHILIPSHDMI1.status');
$SHDMI2 = gg('TelevizorPHILIPSHDMI2.status');
$SHDMI3 = gg('TelevizorPHILIPSHDMI3.status');
if( gg($SHDMI2==1)) //Если включен HDMI1 выполняем этот код
{
brLinkCommand('SourseTVPHILIPS');
sleep(1);
brLinkCommand('UpTVPHILIPS');
sleep(1);
brLinkCommand('OkTVPHILIPS');
}
if( gg($SHDMI3==1)) //Если включен HDMI3 то выполняем этот код
{
brLinkCommand('SourseTVPHILIPS');
sleep(1);
brLinkCommand('UpTVPHILIPS');
sleep(1);
brLinkCommand('UpTVPHILIPS');
sleep(1);
brLinkCommand('OkTVPHILIPS');
}
if( gg($SHDMI1==1));
{
say("Ресивер Триколор",2);
}
|
Включение HDMI 2
|
Включение входа HDMI 2 (Умная колонка "Яндекс станция")
$SHDMI1 = gg('TelevizorPHILIPSHDMI1.status');
$SHDMI2 = gg('TelevizorPHILIPSHDMI2.status');
$SHDMI3 = gg('TelevizorPHILIPSHDMI3.status');
if( gg($SHDMI1==1)) //Если включен HDMI1 выполняем этот код
{
brLinkCommand('SourseTVPHILIPS');
sleep(1);
brLinkCommand('DownTVPHILIPS');
sleep(1);
brLinkCommand('DownTVPHILIPS');
sleep(1);
brLinkCommand('OkTVPHILIPS');
}
if( gg($SHDMI3==1)) //Если включен HDMI3 то выполняем этот код
{
brLinkCommand('SourseTVPHILIPS');
sleep(1);
brLinkCommand('UpTVPHILIPS');
sleep(1);
brLinkCommand('OkTVPHILIPS');
}
if( gg($SHDMI2==1));
{
say("Яндекс станция",2);
}
// Устанавливаем статус TelevizorPHILIPSHDMI3
sg('TelevizorPHILIPSHDMI1.status',0);
sg('TelevizorPHILIPSHDMI2.status',0);
sg('TelevizorPHILIPSHDMI3.status',1);
sg('TelevizorPHILIPS.HDMI',3);
sg('TelevizorPHILIPS.devices',"Яндекс станция");
|
Включение HDMI 3
|
Включение выхода HDMI 3 ( Игровая приставка "Xbox 360" )
$SHDMI1 = gg('TelevizorPHILIPSHDMI1.status');
$SHDMI2 = gg('TelevizorPHILIPSHDMI2.status');
$SHDMI3 = gg('TelevizorPHILIPSHDMI3.status');
if( gg($SHDMI1==1))//Если включен HDMI1 выполняем этот код
{
brLinkCommand('SourseTVPHILIPS');
sleep(1);
brLinkCommand('DownTVPHILIPS');
sleep(1);
brLinkCommand('DownTVPHILIPS');
sleep(1);
brLinkCommand('OkTVPHILIPS');
}
if( gg($SHDMI2==1)) //Если включен HDMI3 то выполняем этот код
{
brLinkCommand('SourseTVPHILIPS');
sleep(1);
brLinkCommand('UpTVPHILIPS');
sleep(1);
brLinkCommand('OkTVPHILIPS');
}
if( gg($SHDMI3==1));
{
say("Приставка",2);
}
// Устанавливаем статус TelevizorPHILIPSHDMI3
sg('TelevizorPHILIPSHDMI1.status',0);
sg('TelevizorPHILIPSHDMI2.status',0);
sg('TelevizorPHILIPSHDMI3.status',1);
sg('TelevizorPHILIPS.HDMI',3);
sg('TelevizorPHILIPS.devices',"Xbox 360");
|