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 | grep -v loop',$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);
|
Sunset-Sunrise
|
Вычисляем время рассвета и заката
$sunrise = date_sunrise(time(), SUNFUNCS_RET_STRING, 54.900193, 37.038580, 90+50/60, 3);
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 54.900193, 37.038580, 90+50/60, 3);
setGlobal('ThisComputer.SunSetTime',$sunset);
setGlobal('ThisComputer.SunRiseTime',$sunrise);
|
Pressure_outdoor
|
$value = file_get_contents('http://192.168.100.201/sec/?pt=16&scl=15&i2c_dev=bmx280');
debmes($value);
sg('Sensor_pressure05.value',$value);
|
RateBTCUSDEUR
|
Курс BTC, USD, Euro
//Курс биткоина
$data_btc = json_decode(file_get_contents("https://api.cryptonator.com/api/ticker/btc-usd"));
$price_btc = round($data_btc->ticker->price);
setGlobal('Webparams.BTCUSD', $price_btc);
//Курс доллара
$data_usd = json_decode(file_get_contents("https://www.cbr-xml-daily.ru/daily_json.js"));
$price_usd = round($data_usd->Valute->USD->Value, 2);
setGlobal('Webparams.USDRUB', $price_usd);
//Курс евро
$data_eur = json_decode(file_get_contents("https://www.cbr-xml-daily.ru/daily_json.js"));
$price_eur = round($data_eur->Valute->EUR->Value, 2);
setGlobal('Webparams.EURRUB', $price_eur);
|
temp_bus
|
съем температуры из шины 18B20 теплого пола.
// снимаем температуру с MegaD в подвале с порта P22(7) - ТП подача и обратка
$value = file_get_contents('http://192.168.100.201/sec/?pt=22&cmd=list');
$pieces = explode(";", $value);
$podacha = explode("aade89371401:", $pieces[0]);
$obratka = explode("aae560261302:", $pieces[1]);
if ($podacha[1]==85 or $obratka[1]==85) return;
if ($podacha[1]<=0 or $obratka[1]<=0) return;
sg('Sensor_temp24.value',round($podacha[1],1));
sg('Sensor_temp25.value',round($obratka[1],1));
// снимаем температуру с MegaD в подвале с порта P20(5) - подача и обратка Котел
$value = file_get_contents('http://192.168.100.201/sec/?pt=20&cmd=list');
$pieces = explode(";", $value);
$obratka = explode("aacc3f401401:", $pieces[0]);
$podacha = explode("c9ca79970503:", $pieces[1]);
if ($podacha[1]==85 or $obratka[1]==85) return;
if ($podacha[1]<=0 or $obratka[1]<=0) return;
sg('Sensor_temp21.value',round($obratka[1],1));
sg('Sensor_temp20.value',round($podacha[1],1));
|
temp_bus_gvs
|
Съем температуры ГВС подача/обратка/бойлер
// снимаем температуру с MegaD в подвале с порта P21(6) - подача/обратка/бойлер ГВС
$value_gvs = file_get_contents('http://192.168.100.201/sec/?pt=21&cmd=list');
$pieces_gvs = explode(";", $value_gvs);
$obratka_gvs = explode("aa9736381401:", $pieces_gvs[0]);
$boyler_gvs = explode("dae045921102:", $pieces_gvs[1]);
$podacha_gvs = explode("37a377911902:", $pieces_gvs[2]);
if ($podacha_gvs[1]==85 or $obratka_gvs[1]==85 or $boyler_gvs[1]==85) return;
if ($podacha_gvs[1]<=0 or $obratka_gvs[1]<=0 or $boyler_gvs[1]<=0) return;
sg('Sensor_temp27.value',round($podacha_gvs[1],1));
sg('Sensor_temp19.value',round($boyler_gvs[1],1));
sg('Sensor_temp28.value',round($obratka_gvs[1],1));
|
Включаем радио
|
Включаем радио
say('Включаю радио',2);
cm('RadioSetting.Control', array('play'));
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToUser(34470147, "Приехал? А я включила радио.");
|
Выключить радио
|
Выключаем радио
say('Выключаю радио',2);
cm('RadioSetting.Control', array('stop'));
|
Увеличить громкость
|
$vol = gg("RadioSetting.VolumeLevel");
if ($vol < 100){
cm('RadioSetting.Control',array('vol'=> $vol+10 ));
} else {
cm('RadioSetting.Control',array('vol'=> 100 ));
}
|
Уменьшить громкость
|
$vol = gg("RadioSetting.VolumeLevel");
if ($vol > 10){
cm('RadioSetting.Control',array('vol'=> $vol-10));
} else {
cm('RadioSetting.Control',array('vol'=> 0 ));
}
|
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');
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/nobodyhomemode_activate.php');
/* end injection of {SDevices} */
|
SomebodyHome
|
Срабатывает в том случае, когда кто-то появился дома
callMethod('EconomMode'.'.'.'deactivate');
say('Здравствуйте!', 2);
runScript('reportStatus', array());
|
startUp
|
Система загружена
say('Система загружена', 2);
runScript('tellIPAddress', array());
|
turnOffEverything
|
Выключить все приборы
$objects=array('Switch1','Switch2','Switch3');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
|
Создание backup
|
Создание backup
$state=$params['STATE'];
$desc=$params['DESCRIPTION'];
$res='';
if (($state)=='Ok') {
$res='Бекап системы сделан!';
} else {
if (($state)=='Error') {
$res.=" Проблема при создании бекапа: ".$desc;
}
}
say($res,0);
|