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);
|
meteo_now_fact
|
Заполнение полей текущей погоды
// температура сейчас
$temp=round(gg("ow_fact.temperature"));
$temp = (int)$temp;
$temp = getTempSign($temp); // если значение температуры положительно, для наглядности добавляем "+"
sg("Tiraspol.Temp",$temp);
sg("ThisComputer.TempOutside",$temp);
sg("Tiraspol.Type",gg("ow_fact.weather_type"));
sg("Tiraspol.Pressure",round(gg("ow_fact.pressure_mmhg")));
sg("Tiraspol.Humidity",round(gg("ow_fact.humidity")));
sg("Tiraspol.WindSpeed",round(gg("ow_fact.wind_speed")));
sg("Tiraspol.Image",gg("ow_fact.image"));
sg("Tiraspol.Rain",gg("ow_fact.rain"));
sg("Tiraspol.Weather_type",gg("ow_fact.weather_type"));
// Направление ветра
$dir = round(gg("ow_fact.wind_direction"));
// Функция возвращает массив, поэтому записываем в переменные значения, полученные в функции
// list ($dir, $dirtext) = getWindDirection($dir);
sg("Tiraspol.WindDir",$dir);
// sg("Izhevsk.WindDirText",$dirtext);
// Солнце: восход/закат
sg("Tiraspol.SunRise",date('H:i', gg("ow_fact.sunrise")));
sg("Tiraspol.SunSet",date('H:i', gg("ow_fact.sunset")));
// Луна
// sg("Izhevsk.Moon_phase",$xml->day[0]->moon_phase);
// sg("Izhevsk.MoonRise",$xml->day[0]->moonrise);
// sg("Izhevsk.MoonSet",$xml->day[0]->moonset);
// Обновляем показатели жизни объекта
sg("Tiraspol.updatedTimestamp", time());
sg("Tiraspol.updatedTime", date( "H:i - d.m.Y", time()));
// Проговариваем, при необходимости
$sayMetUSD = gg ("Sets.sayMetUSD");
if ($sayMetUSD) {
say("Читаю текущую погоду",($sayMetUSD-2));
}
// ********************************************************
// КОНЕЦ ОСНОВНОГО БЛОКА
// Функция - добавления "+" к положительной температуре
function getTempSign($temp)
{
$temp = (int)$temp;
return $temp > 0 ? '+'.$temp : $temp;
}
|
readWeatherToday
|
Говорит погоду
$weather.="Сегодня ожидается ".str_replace('°',' ',getGlobal('weatherToday'));
$weather.=". Завтра ".str_replace('°',' ',getGlobal('weatherTomorrow'));
$weather.=". Сейчас на улице ".getGlobal('TempOutside').'.';
$weather=str_replace('°','',$weather);
sayReply($weather,2);
|
Round_Temp
|
Округление температуры
for ($i=0; $i<10; $i++) {
sg(("ow_day".$i.".temp_day"),round(gg("ow_day".$i.".temp_day")));
sg(("ow_day".$i.".temp_max"),round(gg("ow_day".$i.".temp_max")));
sg(("ow_day".$i.".temp_min"),round(gg("ow_day".$i.".temp_min")));
sg(("ow_day".$i.".temp_night"),round(gg("ow_day".$i.".temp_night")));
sg(("ow_day".$i.".pressure_mmhg"),round(gg("ow_day".$i.".pressure_mmhg")));
sg(("ow_day".$i.".humidity"),round(gg("ow_day".$i.".humidity")));
sg(("ow_day".$i.".wind_speed"),round(gg("ow_day".$i.".wind_speed")));
sg(("ow_day".$i.".wind_direction"),round(gg("ow_day".$i.".wind_direction")));
}
sg(("ow_fact.wind_speed"),round(gg("ow_fact.wind_speed")));
sg(("ow_fact.temperature"),round(gg("ow_fact.temperature")));
sg(("ow_fact.humidity"),round(gg("ow_fact.humidity")));
sg(("ow_fact.pressure_mmhg"),round(gg("ow_fact.pressure_mmhg")));
|
Sun_Script
|
Расчет Рассвета и Заката
$lat=gg('ThisComputer.latitude'); // широта 55°33'13"N (55.553656)
$long=gg('ThisComputer.longitude'); // долгота 39°44'39"E (39.744117)
$sun_info = date_sun_info(time(), $lat, $long);
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
//echo 'Восход: '.date("H:i", $sunrise).'<br>';
sg('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>';
sg('ThisComputer.SunSetTime',date("H:i", $sunset));
sg('ThisComputer.LongTag',gmdate("H:i", $day_length));
}
if ($key == 'transit') {
//echo 'В зените: '.date("H:i", $val).'<br>';
sg('ThisComputer.Transit',date("H:i", $val));
}
if ($key == 'civil_twilight_begin') {
//echo 'Начало утренних сумерек: '.date("H:i", $val).'<br>';
sg('ThisComputer.civil_begin',date("H:i:s", $val));
}
if ($key == 'civil_twilight_end') {
//echo 'Конец вечерних сумерек: '.date("H:i", $val).'<br>';
sg('ThisComputer.civil_end',date("H:i", $val));
}
}
|
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');
}
|
dayGreeting
|
Дневное приветствие
sayReply("Добрый день!",2);
sayReply("Я рада, что кто-то уже есть дома.",2);
sayReply('Сейчас '.timeNow(),2);
|
eveningGreeting
|
Вечернее приветствие -- отрабатывает когда датчик засёк вечером первое движение после долгого отсутствия
sayReply("Добрый вечер!",2);
sayReply("Как хорошо что хоть кто-то пришел.",2);
sayReply('Сейчас '.timeNow(),2);
|
morningGreeting
|
Утреннее приветствие
sayReply("Доброе утро! Я рада, что вы уже проснулись.",2);
sayReply('Сейчас '.timeNow(),2);
clearTimeOut('AlarmTimer');
if (gg('ThisComputer.AlarmWaiting')) {
setGlobal('ThisComputer.AlarmWaiting',0);
}
if (gg('GuestsMode.active')) return;
// runScript('morningRoutine');
// runScript("sayTodayAgenda");
//runScript("playFavoriteMusic");
|
nightGreeting
|
Ночное приветствие
sayReply("Доброй ночи!",0);
sayReply("Вам не спиться?",0);
sayReply('Сейчас '.timeNow(),0);
|