GetSutki
|
определяем день ночь утро вечер
if (timeBetween("00:00", "06:00")) {
$s='ночь';
} elseif (timeBetween("06:00", "11:00")) {
$s='утро';
} elseif (timeBetween("11:00", "16:00")) {
$s='день';
} else {
$s='вечер';
}
if (gg('sutki')==$s )
{echo "не изменились";} else
{sg('sutki',$s);echo $s; }
|
about
|
sayReply('Привет. Я Алиса, - система управления умным домом',2);
|
AlarmAllOff
|
clearTimeOut('AlarmTimer');
sg('AlarmClock02.AlarmOn',0);
sg('AlarmClock03.AlarmOn',0);
say("Все будильники отключены",2);
|
AlarmAllOn
|
sg('AlarmClock02.AlarmOn',1);
sg('AlarmClock03.AlarmOn',1);
say("Все будильники включены",2);
|
backupAll
|
sayReply("Сделана плановая резервная копия умного дома",2);
|
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);
|
ClockKuranty
|
|
rebootMJD
|
sayReply('Внимание, перегружаюсь!', 2);
sleep(5);
safe_exec('c:\_majordomo\apps\nircmd\nircmd.exe script "c:\_majordomo\reboot_mjd.ncl"');
|
rebootSystem
|
Перезапуск системы
sayReply('Перезагрузка машины!', 2);
sleep(5);
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);
sayReply("Подготовка к выключению",2);
setTimeout("shutdownTimer","safe_exec('shutdown -h now');",15);
|
vol_cube
|
$ugol=getGlobal('dd.ugol_h');
$volumeLevel=getGlobal('ThisComputer.volumeLevel');
$corrective=1.8;//подстройка под себя насколько чуствительно будет
$volumeNew = (int)($volumeLevel + round($ugol/$corrective));
if ($volumeNew == 0) {
if ($ugol < 0 ) $volumeNew = -1;
else $volumeNew = 1;
}
if($volumeNew < 100 && $volumeNew > 0 ) {
setGlobal('ThisComputer.volumeLevel',$volumeNew);
}
else if ($volumeNew < 0){
setGlobal('ThisComputer.volumeLevel',0);
}
else if ($volumeNew > 100){
setGlobal('ThisComputer.volumeLevel',100);
}
callMethod('ThisComputer.VolumeLevelChanged',array('VALUE'=>$volumeNew));
|
CheckBattLevelDevice
|
if((int)gg("MotionSensor1.voltage")<2.800 and (int)gg("MotionSensor1.voltage")!="")say("Необходимо заменить батарейку в датчике движения",2);
if((int)gg("Openclose01.voltage")<2.800 and (int)gg("Openclose01.voltage")!="")say("Необходимо заменить батарейку в датчике входной двери",2);
if((int)gg("Button01.voltage")<2.800 and (int)gg("Button01.voltage")!="")say("Необходимо заменить батарейку в беспроводной кнопке управления",2);
if((int)gg("Relay04.voltage")<3.000 and (int)gg("Relay04.voltage")!="")say("Есть проблемы с питанием в выключателе света на кухне, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("Relay05.voltage")<3.000 and (int)gg("Relay05.voltage")!="")say("Есть проблемы с питанием в выключателе света в ванной и туалета, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("Relay07.voltage")<3.000 and (int)gg("Relay07.voltage")!="")say("Есть проблемы с питанием в выключателе света в спальне, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("Relay08.voltage")<3.000 and (int)gg("Relay08.voltage")!="")say("Есть проблемы с питанием в выключателе света в гостиной, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("Relay10.voltage")<2.800 and (int)gg("Relay10.voltage")!="")say("Необходимо заменить батарейку в дублирующем выключателе света на кухне",2);
if((int)gg("Switch1.voltage")<3.000 and (int)gg("Switch1.voltage")!="")say("Есть проблемы с питанием в выключателе света в прихожей, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("Switch2.voltage")<3.000 and (int)gg("Switch2.voltage")!="")say("Есть проблемы с питанием в выключателе света в коридоре, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("Switch3.voltage")<3.000 and (int)gg("Switch3.voltage")!="")say("Есть проблемы с питанием в управляемой розетке, напряжение питания платы управления ниже трех вольт",2);
if((int)gg("TempSensor01.voltage")<2.800 and (int)gg("TempSensor01.voltage")!="")say("Необходимо заменить батарейку в датчике температуры и влажности",2);
if((int)gg("Openclose02.voltage")<2.800 and (int)gg("Openclose02.voltage")!="")say("Необходимо заменить батарейку в датчике нижнего дверного замка",2);
if((int)gg("Counter01.voltage")<3000 and (int)gg("Counter01.voltage")!="")say("Есть проблемы с питанием счетчика горячей воды, напряжение питания платы управления ниже трех вольт",2);
|
HotWaterMeter
|
Показания счетчика горячей воды
$x_x=gg("Counter01.valueWork");
$m_x=($x_x/100); //переводим в m3
sayreply('Показания счетчика горячей воды '.$m_x.' метров кубических',2);
//sayreply("Показания счетчика горячей воды",2);
//sayreply($m_x,2);
//sayreply("метров кубических",2);
|
klimatDoma
|
sayReply('Температура в помещении '.gg('TempSensor01.value').' градусов цельсия, влажность '.gg('HumSensor01.value').' процентов.',2);
|
Openhardmonitor
|
open hardware monitor
//-----------------------Данные с ohm сценарий
$ch = curl_init('http://192.168.1.50:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//----------------------- Вытягиваем данные
$CpuLoad = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[2] ->{'Children'}[0] -> {'Value'};
$CpuTemp = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[1] ->{'Children'}[0] -> {'Value'};
$Memory = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
//----------------------- Просматриваем данные
echo "<br \>";
echo "Загрузка процессора";echo "  ";print_r("$CpuLoad");
echo "<br \>";
echo "температура процессора";echo "  ";print_r("$CpuTemp");
echo "<br \>";
echo "Занято оперативки";echo "  ";print_r("$Memory");
//----------------------- Присваеваем данные
setGlobal('ThisComputer.CpuLoad',intval($CpuLoad));
setGlobal('ThisComputer.CpuTemp',intval($CpuTemp));
setGlobal('ThisComputer.Memory',intval($Memory));
//-----------------------Выполнение скрипта раз в 2 сек. (timer_2s)
//clearTimeout("timer_2s_timeout");
//выполняемый скрипт
//setTimeOut("timer_2s_timeout", "runScript('timer_2s');", 2);
//-----------------------Поместить в минутный цикл
//runScript('timer_2s');
|
timer_2s
|
таймер для Openhardmonitor, без него не будет работать
clearTimeout("timer_2s_timeout");
runScript('Openhardmonitor');
setTimeOut("timer_2s_timeout", "runScript('timer_2s');", 2);
|
Входная дверь (отк/зак)
|
// для Сяоми
$ot = $this->object_title;
$status = $this->getProperty('status');
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;
if ($status)
{
say('Входная дверь закрыта', 2);
//сбросить таймер
ClearTimeOut($ot . '_passed');
//в режим
setTimeOut($ot . '_presence', "cm('Rooms.Check');", 600);
//проверяем когда в последний раз срабатывало событие "Входная дверь"
$last_register = registeredEventTime('entranceClosed');
//регистрируем событие "Входная дверь"
registerEvent('entranceClosed', $this->description, 7);
if ($last_register == '-1' || (time() - $last_register) > 7200)
{
if (round(getHistoryValue('NobodyHomeMode.active', time() - 600, true)) == 1)
{
runScriptSafe('Greeting');
}
}
}
elseif ($passed < 60 && !$status)
{
$newTimeout = 60;
say('Входная дверь открыта', 2);
//добавить камеру
}
elseif ($passed < 90 && !$status)
{
$newTimeout = 120;
say('Входная дверь открыта одну минуту', 2);
}
elseif ($passed < 240 && !$status)
{
$newTimeout = 120;
say('Входная дверь открыта три минуты', 2);
}
elseif ($passed < 1800 && !$status)
{
$newTimeout = 300;
say('Входная дверь открыта ' . round($passed/60) . ' минут', 2);
}
else
{
//если больше аларм (ну смс, астериск отправить)
say('Аларм!', 2);
}
if ($newTimeout > 0)
{
setTimeOut($ot . '_passed', 'cm("' . $ot . '.logicAction");', $newTimeout);
}
|
ImgWebCam
|
Скачивает картинку с камеры и кидает на канал ChannelID04
//скачиваем картинку
$url="rtsp://192.168.1.2/media.amp?streamprofile=Profile3&audio=0&username=admin&password=admin";
$jpg="./cached/img/IMAGE.jpg";
//скачиваем картинку
$dest_file = @fopen($jpg, "w");
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_FILE, $dest_file);
curl_setopt($resource, CURLOPT_HEADER, 0);
curl_exec($resource);
curl_close($resource);
fclose($dest_file);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/img/IMAGE.jpg';
rs('send_208469816',array('img'=>$img));
rs('send_208469816',array('msg'=>date("d.m.Y H:i:s",time())));
|
Snapshot2Telegram
|
exec('C:\_majordomo\apps\ffmpeg\ffmpeg.exe -y -i rtsp://192.168.1.2/12 -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/out.mp4');
$chat_id=$params['id'];
$img='C:/_majordomo/htdocs/cached/img/out.mp4';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendVideoToUser($chat_id,$img);
|
vk_spb_crash_send_ch
|
То что происходит в городе кидаем на канал в телеграмм
$url="https://api.vk.com/method/wall.get?domain=spb_crash&count=1&filter=owner";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
for ($i = 0; $i < count($data['response']); $i++) {
$html=$data['response'][$i]['text'];
$date=$data['response'][$i]['date'];
$date=date("m.d.y, H:m:s", $date);
$id=$data['response'][$i]['id'];
$attachment=$data['response'][$i]['attachment'];
if ($id == gg("ChannelBot.ChannelID02_lastid") ){
}else{
if ($attachment['photo']){
$attach=$attachment['photo']['src_xbig'];
}else{
$attach='';
}
if ($html) {
$text="".$date." ".$html." ".$attach;
rs('send_ChannelID02',array('html'=>$text));
sg("ChannelBot.ChannelID02_lastid", $id);
}
}
}
|
CallShablon
|
Код шаблона можно вызвать через имитацию команды пользователем.
$url='http://localhost/command.php?qry='.urlencode("привет");
getURL($url,0);
|
exit
|
//$h=(int)date('G',time());
//$m=date('i',time());
//if (($h>=6) and ($h<=7)) {
//if(gg('Openclose02.status')==0){
//say('Антонина. Если вы собрались в город, не забудьте пожалуйста, кошелек, телефон, очки, и зонт если ожидается дождь ',2);
//}
//}
//if (($h>=7) and ($h<=9)) {
//if(gg('Openclose02.status')==0){
//say('Григорий. Если вы собрались в город, не забудьте пожалуйста, кошелек, телефон, очки, и зонт если ожидается дождь ',2);
//}
//}
//if (($h>=9) and ($h<=21)) {
//if(gg('Openclose02.status')==0){
//say('Прошу обратить внимание. Если вы собрались в город, не забудьте пожалуйста, кошелек, телефон, очки, и зонт если ожидается дождь ',2);
//}
//}
//
|
exitFromHome
|
Напоминание при включении света в прихожей о вещах которые необходимо взять уходя в город
Дополнительно в onNewMinute кинул строку RunScript('exitFromHome');
//$h=(int)date('G',time());
//$m=date('i',time());
//if (($h<=6) and ($h>=21)) {
if (timeBetween('06:30', '07:15')){
if((gg('Openclose02.status')==1) and (gg('Switch1.status')==1)) {
say('Антонина. Прошу обратить внимание.Если вы собрались в город, не забудьте пожалуйста, кошелек, телефон, очки, и зонт если ожидается дождь',2);
}
}
//}
if (timeBetween('07:30', '08:15')){
if((gg('Openclose02.status')==1) and (gg('Switch1.status')==1)) {
say('Григорий. Прошу обратить внимание.Если вы собрались в город, не забудьте пожалуйста, кошелек, телефон, очки, и зонт если ожидается дождь',2);
}
}
if (timeBetween('08:15', '20:00')){
if((gg('Openclose02.status')==1) and (gg('Switch1.status')==1)) {
say('Прошу обратить внимание.Если вы собрались в город, не забудьте пожалуйста, кошелек, телефон, очки, и зонт если ожидается дождь',2);
}
}
|
InFile
|
//InFile
//runScript("InFile",array("subject"=>$subj, "body"=>$body, "filename"=>$filename ));
$date = gg("ThisComputer.DateNow");
$timeNow = gg("ThisComputer.timeNow");
$subject = $params['subject'];
$body = $params['body'];
$filename = $params['filename'];
$fp = fopen($filename , "a"); // Открываем файл
$test = fwrite($fp, $date." ".$timeNow." ");
$test = fwrite($fp, $subject." ");
$test = fwrite($fp, $body."\r\n");
fclose($fp); //Закрытие файла
|
ResetActiveContecst
|
По какому-то стечению обстоятельств мог для пользователя установиться контекст некорректный и не сброcиться по истечению времени. Этот код сбрасывает активный контекст для всех пользователей.
SQLExec("UPDATE users SET ACTIVE_CONTEXT_ID=0 WHERE 1");
|
Uptime
|
Определение времени работы
$s = getGlobal('ThisComputer.uptime');
$d = floor($s/86400 );
$h = floor(($s % 86400)/3600 );
$m = floor(($s % 3600)/60 );
$uptime = "$d дней. $h часов. $m минут.";
echo "Время работы: $uptime";
sg('ThisComputer.System_uptime',$uptime);
sayReply("Время работы: $uptime",2);
|
AlarmXiaomiGateway
|
/**
* Сценарий для Majordomo
* Световой индикатор для режима "Внимание" для Xiaomi Gateway
* @author Alex Sokolov <admin@gelezako.com>
* @copyright Alex Sokolov http://blog.gelezako.com (c)
**/
sg("XiRgb01.brightness","0");
sg("XiRgb01.color","");
sg("XiRgb01.color","ff000e");
sleep(3);
for($j = 1; $j <= 3; $j++){
for ($i = 2; ; $i=$i+5) {
sg("XiRgb01.brightness",$i);
usleep(50000);
if ($i >= 100)break;
}
for ($i = 100; ; $i=$i-5) {
sg("XiRgb01.brightness",$i);
usleep(50000);
if ($i <= 0)break;
}
}
|
AlarmXiaomiYeelightLamp
|
// Лампочка
sg("color_0x00000000034853c5.rgb","");
sg("color_0x00000000034853c5.bright","1");
sg("color_0x00000000034853c5.status","1");
sg("color_0x00000000034853c5.rgb","ff000e");
sg("color_0x00000000034853c5.status","1");
for($j = 1; $j <= 3; $j++){
for ($i = 0; ; $i=$i+10) {
sg("color_0x00000000034853c5.bright",$i);
sg("color_0x00000000034853c5.status","1");
usleep(50000);
if ($i >= 100)break;
}
sleep(1);
for ($i = 100; ; $i=$i-10) {
sg("color_0x00000000034853c5.bright",$i);
sg("color_0x00000000034853c5.status","1");
usleep(50000);
if ($i <= 0)break;
}
sleep(1);
}
usleep(50000);
sg("color_0x00000000034853c5.status","0");
sleep(5);
usleep(50000);
sg("color_0x00000000034853c5.status","0");
|
AlarmXiaomiYeelightStripe
|
// Лента
sg("stripe_0x0000000003618b90.rgb","");
sg("stripe_0x0000000003618b90.bright","1");
sg("stripe_0x0000000003618b90.status","1");
sg("stripe_0x0000000003618b90.rgb","ff000e");
sg("stripe_0x0000000003618b90.status","1");
//sleep(4);
for($j = 1; $j <= 3; $j++){
for ($i = 1; ; $i=$i+10) {
sg("stripe_0x0000000003618b90.bright",$i);
sg("stripe_0x0000000003618b90.status","1");
usleep(50000);
if ($i >= 100)break;
}
sleep(1);
for ($i = 100; ; $i=$i-10) {
sg("stripe_0x0000000003618b90.bright",$i);
sg("stripe_0x0000000003618b90.status","1");
usleep(50000);
if ($i <= 0)break;
}
sleep(1);
}
usleep(50000);
sg("stripe_0x0000000003618b90.status","0");
sleep(5);
sg("stripe_0x0000000003618b90.status","0");
|
disco
|
/**
* Сценарий для Majordomo
* Xiaomi gateway disco mode
* @author Alex Sokolov <admin@gelezako.com>
* @copyright Alex Sokolov http://blog.gelezako.com (c)
* @version 0.1
**/
sg("XiRgb01.brightness","0");
for($j = 1; $j <= 3; $j++){
sg("XiRgb01.color","ff000e");
usleep(1000000);
sg("XiRgb01.color","fffff3");
usleep(1000000);
sg("XiRgb01.color","ffff2d");
usleep(1000000);
sg("XiRgb01.color","ff00f3");
usleep(1000000);
sg("XiRgb01.color","00ff25");
usleep(1000000);
sg("XiRgb01.color","0010ff");
}
sg("XiRgb01.brightness","0");
|
disco2
|
/**
* Сценарий для Majordomo
* Xiaomi gateway disco mode
* @author Alex Sokolov <admin@gelezako.com>
* @copyright Alex Sokolov http://blog.gelezako.com (c)
* @version 0.1
**/
sg("Gateway.brightness","0");
for($j = 1; $j <= 3; $j++){
sg("Gateway.rgb","ff000e");
usleep(1000000);
sg("Gateway.rgb","fffff3");
usleep(1000000);
sg("Gateway.rgb","ffff2d");
usleep(1000000);
sg("Gateway.rgb","ff00f3");
usleep(1000000);
sg("Gateway.rgb","00ff25");
usleep(1000000);
sg("Gateway.rgb","0010ff");
}
sg("Gateway.brightness","0");
|
disco_Lamp
|
sg("color_0x00000000034853c5.status","0");
sleep(1);
sg("color_0x00000000034853c5.rgb","");
sleep(1);
for($j = 1; $j <= 3; $j++){
sg("color_0x00000000034853c5.rgb","ff000e");
sg("color_0x00000000034853c5.status","1");
usleep(1000000);
sg("color_0x00000000034853c5.rgb","fffff3");
sg("color_0x00000000034853c5.status","1");
usleep(1000000);
sg("color_0x00000000034853c5.rgb","ffff2d");
sg("color_0x00000000034853c5.status","1");
usleep(1000000);
sg("color_0x00000000034853c5.rgb","ff00f3");
sg("color_0x00000000034853c5.status","1");
usleep(1000000);
sg("color_0x00000000034853c5.rgb","00ff25");
sg("color_0x00000000034853c5.status","1");
usleep(1000000);
sg("color_0x00000000034853c5.rgb","0010ff");
sg("color_0x00000000034853c5.status","1");
}
sg("color_0x00000000034853c5.status","0");
|
disco_Stripe
|
sg("stripe_0x0000000003618b90.status","0");
sleep(1);
sg("stripe_0x0000000003618b90.rgb","");
sleep(1);
for($j = 1; $j <= 3; $j++){
sg("stripe_0x0000000003618b90.rgb","ff000e");
sg("stripe_0x0000000003618b90.status","1");
usleep(1000000);
sg("stripe_0x0000000003618b90.rgb","fffff3");
sg("stripe_0x0000000003618b90.status","1");
usleep(1000000);
sg("stripe_0x0000000003618b90.rgb","ffff2d");
sg("stripe_0x0000000003618b90.status","1");
usleep(1000000);
sg("stripe_0x0000000003618b90.rgb","ff00f3");
sg("stripe_0x0000000003618b90.status","1");
usleep(1000000);
sg("stripe_0x0000000003618b90.rgb","00ff25");
sg("stripe_0x0000000003618b90.status","1");
usleep(1000000);
sg("stripe_0x0000000003618b90.rgb","0010ff");
sg("stripe_0x0000000003618b90.status","1");
}
sg("stripe_0x0000000003618b90.status","0");
|
LampWhite
|
sg("color_0x00000000034853c51.rgb","");
sg("color_0x00000000034853c51.bright","100");
sg("color_0x00000000034853c51.status","1");
sg("color_0x00000000034853c51.rgb","ffffff");
sg("color_0x00000000034853c51.status","1");
|
manageConnectService
|
Включение/выключение сервиса синхронизации через облако
include_once(DIR_MODULES.'connect/connect.class.php');
$cn=new connect();
$cn->getConfig();
if ($params['start']) {
$cn->config['CONNECT_SYNC']='1';
$cn->saveConfig();
}
if ($params['stop']) {
$cn->config['CONNECT_SYNC']='0';
$cn->saveConfig();
}
echo $cn->config['CONNECT_SYNC'];
|
manageWebCamMotion
|
Включение/выключение детектора движений на камере
if ($params['start']) {
DebMes("Starting web-cam motion detection");
getURL('http://localhost:8080/0/detection/start',0);
}
if ($params['stop']) {
DebMes("Stopping web-cam motion detection");
getURL('http://localhost:8080/0/detection/pause',0);
}
|
manageWebCamService
|
Включение/выключение вебкамеры
if ($params['start']) {
safe_exec('cp /etc/motion/motion_enabled /etc/default/motion');
safe_exec('service motion start');
}
if ($params['stop']) {
safe_exec('cp /etc/motion/motion_disabled /etc/default/motion');
safe_exec('service motion stop');
}
|
gateColorAction
|
if (isset($params['color'])) {
//sg('Rgb01.color', $params['color']);
cm('Rgb01.setColor', array('color'=> $params['color'])); //Устанавливаем цвет по требованию
setTimeout('xiColorReset', 'runScript(\'gateColorAction\');', 5); //Устанавливаем вызов скрипта через 5 сек.
return;
} elseif (gg('NobodyHomeMode.active') == 1) { //Никого нет дома
$color = '000000';
//sg('Rgb01.color', $color);
cm('Rgb01.setColor', array('color'=> $color)); //Выключаем подсветку
} elseif (gg('NobodyHomeMode.active') == 2) { //Все спят
$color = 'ff8c00';
//sg('Rgb01.color', $color);
cm('Rgb01.setColor', array('color'=> $color));
if (gg('Rgb01.brightness') != 25) {
sg('Rgb01.brightness', 25); //Яркость
}
} else {
$color = '00ff00';
$redFound = 0;
$systemColor = gg('System.stateColor');
if ($systemColor == 'red') {
$color = 'ff0000';
$redFound = 1;
}
}
if (!$redFound) {
$states = array('System', 'Communication');
foreach($states as $state) {
if (gg($state . '.stateColor') == 'yellow') {
$color = 'ffaa00';
}
}
//sg('Rgb01.color', $color);
cm('Rgb01.setColor', array('color'=> $color)); //Устанавливаем цвет в соответствии с условиями выше
if (gg('Rgb01.brightness') != 50) {
sg('Rgb01.brightness', 50); //Яркость
}
}
setTimeout('xiColorReset', 'runScript(\'gateColorAction\');', 60); //Устанавливаем вызов скрипта через 60 сек.
|
help
|
say('Здесь доступны команды ',2);
$actions=$params['actions'];
$total=count($actions);
for($i=0;$i<$total;$i++) {
say($actions[$i] ,2);
}
|
InetDataYou
|
$ProviderIP = file_get_contents('http://icanhazip.com');
if (gg('ThisComputer.ProviderIP') != $ProviderIP) {
sg('ThisComputer.ProviderIP',$ProviderIP);
} else {return;}
///////////////////////
$mode = $params['mode'];
$sayLVL = $params['sayLVL']; if ($sayLVL == "") {$sayLVL=-1;}
$ProviderName = gg('ThisComputer.ProviderName');
$ProviderURL = gg('ThisComputer.ProviderURL');
$ProviderLoc = gg('ThisComputer.ProviderLoc');
$url="http://api.2ip.ua/provider.json";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
$name_ripe=$data["name_ripe"];
$name_rus=$data["name_rus"];
$site=$data["site"];
$url="http://api.2ip.ua/geo.json?ip=".$ProviderIP;
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
$country_rus=$data["country_rus"]; // что искали
$region_rus=$data["region_rus"];
$city_rus=$data["city_rus"];
$loc = $country_rus.", ".$region_rus.", город ".$city_rus;
if ($name_rus != $ProviderName) {sg('ThisComputer.ProviderName',$name_rus);}
if ($site != $ProviderURL) {sg('ThisComputer.ProviderURL',$site);}
if ($loc != $ProviderLoc) {sg('ThisComputer.ProviderLoc',$loc);}
if ($mode != "getinfo") {
say('Текущий провайдер '.$name_rus.' ('.$loc.'). Текущий IP-адрес '.$ip,$sayLVL);
}
|
shutdownNotebookLenovo
|
Выключает ноутбук Леново
say('Выключаю ноутбук Леново');
safe_exec("smbclient //192.168.1.7/shutdown -U alice 1 -c 'prompt; mput 1.txt'");
// ЭТО ДЛЯ ЛИНУКСА
|
CalcSunSetRise
|
Вычисление восхода и захода солнца
$sun_info = date_sun_info(time(), 60.034380, 30.450278);
foreach ($sun_info as $key => $val) {
if ($key == 'sunrise') {
$sunrise = $val;
echo 'Восход: '.date("H:i", $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.LongTag',gmdate("H:i", $day_length));
}
if ($key == 'transit') {
echo 'В зените: '.date("H:i", $val).'<br>';
setGlobal('Chisinau.Transit',date("H:i", $val));
}
if ($key == 'civil_twilight_begin') {
echo 'Начало утренних сумерек: '.date("H:i:s", $val).'<br>';
setGlobal('Chisinau.civil_begin',date("H:i:s", $val));
}
if ($key == 'civil_twilight_end') {
echo 'Конец вечерних сумерек: '.date("H:i:s", $val).'<br>';
setGlobal('Chisinau.civil_end',date("H:i:s", $val));
}
}
|
CalendarTalkAlisa
|
Озвучка Алисой событий по календарю
if (file_exists('./modules/app_calendar/app_calendar.class.php'))
{
Define('TEMP_APP_CALENDAR_SOONLIMIT', '5'); //лимит дней которые проговаривает
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar -> usual($out);
$events = $out['EVENTS_TODAY'];
$say_phrase = '';
if ($events)
{
$tasks = '';
$cals = '';
$i = 0;
$j = 0;
foreach($events as $ev)
{
if ($ev['IS_TASK'] == 1 and $ev['IS_DONE'] == 0)
{
$i++;
$tasks.= $i.'. '.$ev['TITLE'].'. ';
} else {
$j++;
$cals.= $j.'. '.$ev['TITLE'].'. ';
}
}
if ($i != 0) $say_phrase.= "У вас на сегодня запланированы задачи, ".$tasks;
if ($j != 0) $say_phrase.= "Сегодняшние события, ".$cals;
}
$events = $out['CALENDAR_CATEGORIES'];
$i = 0;
$tasks = '';
if ($events)
{
foreach($events as $category)
{
$events_past = $category['EVENTS_PAST'];
if ($events_past)
{
$tasks.= 'из категории: '.$category['TITLE'].'. '; //Если нужно перед пропущенными задачами указывать категорию
foreach($events_past as $ev)
{
$i++;
$tasks.= $i.'. '.$ev['TITLE'].'. ';
}
}
}
if ($i != 0) $say_phrase.= " Напоминаю пропущенные задачи, ".$tasks;
}
$events = $out['CALENDAR_CATEGORIES'];
$tasks = '';
$i = 0;
if ($events)
{
foreach($events as $category)
{
$events_soon = $category['EVENTS_SOON'];
if ($events_soon)
{
//$say_phrase.= ' в категории: '.$category['TITLE'].'. ';
foreach($events_soon as $ev)
{
$i++;
$tasks.= " ".$ev['DAYS']." ".$ev['TITLE'].". ";
}
}
}
if ($i != 0) $say_phrase.= "Напоминаю что".$tasks;
}
if ($say_phrase)
{
//echo $say_phrase;
say($say_phrase,3);
}
}
|
Hourly
|
Выполняется каждый час
|
joke
|
include_once(DIR_MODULES . 'sayjokes/sayjokes.class.php');
$sj = new sayjokes();
$sj->getjoke(11);
|
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'));
}
|
OnlineUsers
|
$users = "";
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
$host = getGlobal($obj['TITLE'].".deviceip"); //прописать ИП телефона для всех пользователей
$fullname = getGlobal($obj['TITLE'].".fullName");
$online=ping( $host );
if ($online){
if ($users != ""){ $users .= ", "; }
$users .= $fullname;
sg($obj['TITLE'].".atHome","1");
}
else sg($obj['TITLE'].".atHome","0");
}
|
products
|
|
sayTodayAgenda
|
if (file_exists('./modules/app_calendar/app_calendar.class.php'))
{
Define('TEMP_APP_CALENDAR_SOONLIMIT', '5'); //лимит дней которые проговаривает
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar -> usual($out);
$events = $out['EVENTS_TODAY'];
$say_phrase = '';
if ($events)
{
$tasks = '';
$cals = '';
$i = 0;
$j = 0;
foreach($events as $ev)
{
if ($ev['IS_TASK'] == 1 and $ev['IS_DONE'] == 0)
{
$i++;
$tasks.= $i.'. '.$ev['TITLE'].'. ';
} else {
$j++;
$cals.= $j.'. '.$ev['TITLE'].'. ';
}
}
if ($i != 0) $say_phrase.= "У вас на сегодня запланированы задачи, ".$tasks;
if ($j != 0) $say_phrase.= "Сегодняшние события, ".$cals;
}
$events = $out['CALENDAR_CATEGORIES'];
$i = 0;
$tasks = '';
if ($events)
{
foreach($events as $category)
{
$events_past = $category['EVENTS_PAST'];
if ($events_past)
{
$tasks.= 'из категории: '.$category['TITLE'].'. '; //Если нужно перед пропущенными задачами указывать категорию
foreach($events_past as $ev)
{
$i++;
$tasks.= $i.'. '.$ev['TITLE'].'. ';
}
}
}
if ($i != 0) $say_phrase.= " Напоминаю пропущенные задачи, ".$tasks;
}
$events = $out['CALENDAR_CATEGORIES'];
$tasks = '';
$i = 0;
if ($events)
{
foreach($events as $category)
{
$events_soon = $category['EVENTS_SOON'];
if ($events_soon)
{
//$say_phrase.= ' в категории: '.$category['TITLE'].'. ';
foreach($events_soon as $ev)
{
$i++;
$tasks.= " через ".$ev['AGE']." ".$ev['DAYS']." ".$ev['TITLE'].". ";
}
}
}
if ($i != 0) $say_phrase.= "Напоминаю что".$tasks;
}
if ($say_phrase)
{
//echo $say_phrase;
say($say_phrase,3);
}
}
|
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());
|
talkTraffic
|
CallMethod('yt_settings.update');// принудительное обновление пробок.
$traffic_jam.=".Пробки по дороге домой, ".getGlobal('yt_info.level')." балла, ".getGlobal('yt_info.val');
say($traffic_jam,2); //проговаривает пробки.
|
Time
|
Проговаривает время
say(date( "H:i", time()),0);
|
TurnOff
|
$objects=getObjectsByProperty('allOffGroup','=','1');
if (is_array($objects)) {
foreach($objects as $obj) {
callMethod($obj.'.turnOff');
}
}
|
turnOffEverything
|
Выключить все приборы
$objects=array('Switch1','Switch2','Switch3');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
sayReply("Все обесточено..........., переключаюсь на режим ........все свалили из квартиры",2);
|