(start|play) music
Code
runScript('playFavoriteMusic');
|
(Д|д)авай приготовим
Pattern: (Д|д)авай приготовим (.+)
Code
$queryString = $matches[2];
/*
$findParams = array(
'aerogrill' => '22', // Рецепты для аэрогриля
'waffle' => '27', // Для вафельницы
'yoghurt' => '28', // Для йогуртиницы
'multivarka' => '25', //Рецепты для мультиварки
'steamer' => '15', //Для пароварки
'pressureCooker' => '46', //Для скороварки
'breadMaker' => '23', //Для хлебопечки
'fondue' => '24' //Рецепты фондю
);
*/
$findParams = array();
$recipeNumber = rand(0, 5);
$recipesList = findRecipes($queryString, $findParams);
if (!empty($recipesList)) {
$recipe = getRecipes($recipesList[$recipeNumber]['link']);
$recipe['link'] = $recipesList[$recipeNumber]['link'];
$recipe['name'] = $recipesList[$recipeNumber]['text'];
sayRecipe($recipe);
} else {
say('Я не знаю такого рецепта.', 1);
}
function OpenRecipeURL($link) {
$rec=array();
$rec['EVENT_TYPE']='openurl'; // команда может быть ещё newwindow
$rec['WINDOW']='alice';
$rec['TERMINAL_TO']='*'; //здесь можно конкретный терминал указать
$rec['ADDED']=date('Y-m-d H:i:s');
$rec['EXPIRE']=date('Y-m-d H:i:s', time()+10);
$rec['DETAILS']=$link;
$rec['ID']=SQLInsert('events', $rec);
}
function sayRecipe($recipe) {
OpenRecipeURL($recipe['link']);
say($recipe['name'], 1);
if (!empty($recipe['description'])) {
foreach ($recipe['description'] as $e) {
say($e, 1);
}
}
$ingrstr = 'Нам понадобится: ';
foreach ($recipe['ingredients'] as $e) {
$ingrstr .= $e . ', ';
}
say($ingrstr, 1);
say('Способ приготовления:', 1);
foreach ($recipe['preparing'] as $e) {
say($e, 1);
}
}
function getRecipes($recipeLink) {
if (empty($recipeLink)) {
return FALSE;
}
$html = @file_get_contents($recipeLink);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$ingredients = array();
$description = array();
$ingredientsDom = $xpath->query('//table[@class="rec-ingred-table"]/tr');
if ($ingredientsDom->length > 0) {
foreach ($ingredientsDom as $item) {
$ingredients[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
$descriptionDom = $xpath->query('//div[@class="b-page_block__outside"]/p');
foreach ($descriptionDom as $item) {
$description[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
} else {
$ingredientsDom = $xpath->query('//div[@class="b-page_block__outside"]/p');
foreach ($ingredientsDom as $item) {
$ingredients[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
}
$preparingDom = $xpath->query('//div[@class="b-list__clause__text"]/p');
$preparing = array();
foreach ($preparingDom as $item) {
$preparing[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
$recipe = array(
'description' => $description,
'ingredients' => $ingredients,
'preparing' => $preparing
);
return $recipe;
}
function findRecipes($queryString, $params) {
if (empty($queryString)) {
return FALSE;
}
$url = 'http://www.edimdoma.ru/search?utf8=%E2%9C%93&asset=recipes&index=title_search&query=' . urlencode($queryString) . '&search%5Bmain_category_id%5D=&search%5Bcuisine_id%5D=';
if (!empty($params)) {
foreach ($params as &$value) {
$url .= '&cooking_method_ids%5B%5D=' . $value;
}
}
$url .= '&user_name=';
$html = @file_get_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$articles = $xpath->query('//div[@class="b-page_block__header"]');
$links = array();
foreach ($articles as $container) {
$arr = $container->getElementsByTagName("a");
foreach ($arr as $item) {
if ($item->parentNode->tagName == "h2") {
$href = $item->getAttribute("href");
$text = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
$links[] = array(
'link' => $href,
'text' => $text
);
}
}
}
return $links;
}
|
report system state
|
Включи телевизор в комнате
Code
brLinkCommand('TV_Power_25');
|
Включи телевизор на кухне
Code
brLinkCommand('TV Phillips кухня_667');
|
Выключи телевизор на кухне
Code
brLinkCommand('TV Phillips кухня_670');
|
выключить всё
|
гисметео
|
Дверь
|
дела
Code
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];
$say_phrase='';
if (is_array($events)) {
$total=count($events);
$tasks=array();
$cals=array();
for($i=0;$i<$total;$i++) {
if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
$tasks[]=$events[$i]['TITLE'];
} elseif ($events[$i]['IS_TASK']!='1') {
$cals[]=$events[$i]['TITLE'];
}
}
$total_tasks=count($tasks);
if ($total_tasks) {
$say_phrase.="У вас на сегодня запланированы задачи. ";
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$tasks[$i].". ";
}
} else {
// say("Сегодня никаких дел не запланировано.",1);
}
$total_cals=count($cals);
if ($total_cals) {
$say_phrase.=("Сегодняшние события. ");
for($i=0;$i<$total_cals;$i++) {
$say_phrase.=$cals[$i].'. ';
}
}
}
$events=$out['EVENTS_PAST'];
if ($events[0]['TITLE']) {
$say_phrase.=" Так же напоминаю о пропущенных задачах. ";
$total_tasks=count($events);
for($i=0;$i<$total_tasks;$i++) {
$say_phrase.=($i+1).". ".$events[$i]['TITLE'].". ";
}
}
if ($say_phrase) {
say($say_phrase);
}
|
какая погода
|
Напомни через
Pattern: Напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
Code
$u=2;
$naptime=mb_strtolower($matches[1]);
$request=mb_strtolower($matches[6]);
$chislo=array('один'=>'1','одну'=>'1','два'=>'2','две'=>'2','три'=>'3','четыре'=>'4','пять'=>'5','шесть'=>'6','семь'=>'7','восемь'=>'8','девять'=>'9');
foreach($chislo as $key=>$value) {$naptime=str_replace($key,$value,$naptime);}
if($request!=''){
$su=0;
$naptime=str_replace(' на ',' ',$naptime);
if(stristr($naptime,'сегодня')!=FALSE) {$naptime=str_replace('сегодня ','',$naptime);$su=0;}
if(stristr($naptime,'послезавтра')!=FALSE) {$naptime=str_replace('послезавтра ','',$naptime);$su=2;}
if(stristr($naptime,'завтра')!=FALSE) {$naptime=str_replace('завтра','', $naptime);$su=1;}
$a=$su*86400+recognizeTime($naptime,$b);
if(time()<($a-30)){
$nday=date('j',$a);
$MonthNames=array('января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
$nmes=date('n',$a)-1;
$nmonth=$MonthNames[$nmes];
$ntime=date('H:i',$a);
$chisl=array(1=>'первое',2=>'второе',3=>'третье',4=>'четвертое',5=>'пятое',6=>'шестое',7=>'седьмое',8=>'восьмое',9=>'девятое',10=>'десятое',11=>'одиннадцатое',12=>'двенадцатое',13=>'тринадцатое',14=>'четырнадцатое',15=>'пятнадцатое',16=>'шестнадцатое',17=>'семнадцатое',18=>'восемнадцатое',19=>'девятнадцатое',20=>'двадцатое',30=>'тридцатое',21=>'двадцать',31=>'тридцать');
if($nday<21||$nday==30){$chtext=$chisl[$nday];} else {$chtext=$chisl[(int)($nday/10)*10+1].' '.$chisl[$nday%10];}
AddScheduledJob($request,"say('Вы просили напомнить ".$request."',".$u.");",$a,60);
say('Задание напомнить '.$request.' установлено на '.$chtext.' '.$nmonth.' в '.$ntime,$u);}
else
{say('Назначить напоминание на заданное время невозможно!',$u);}}
else
{say('Непонятно, что напомнить?!',$u);}
|
начать уборку
Code
sg('MiVacuumCleaner.command','app_start');
|
Отмени напоминание
Pattern: Отмени напоминание (.+)
Code
$u=5;
$naptime=mb_strtolower($matches[2]);
ClearScheduledJob($naptime);
say('Напоминание '.$naptime.' отменено!',$u);
|
Повтори
Code
sayReply(gg('ThisComputer.lastSayMessage'),2);
|
погода
|
привет
Code
|
Режим управления
Pattern: ((К|к)омандный режим|(Р|р)ежим управления)
Code
sayReply("Режим управления.",100);
|
Включение ночного режима
Pattern: (В|в)ключ(и|ить) ночной режим
Code
callMethod('NightMode.activate');
sayReply("Включаю ночной режим!",100);
|
Включение экономного режиме
Pattern: (В|в)ключ(и|ить) экономный режим
Code
callMethod('EconomMode.activate');
sayReply("Включаю экономный режим!",100);
|
Минимальный уровень
Pattern: (М|м)инимальный уровень (\d+)
Code
$l=$matches[2];
setGlobal('minMsgLevel',$l);
sayReply("Минимальный уровень теперь ".$l,100);
|
Минимальный уровень
Pattern: (М|м)инимальный уровень (\d+)
Code
$l=$matches[2];
setGlobal('minMsgLevel',$l);
sayReply("Минимальный уровень теперь ".$l,100);
|
Отключение ночного режима
Pattern: (О|о)тключ(и|ить) ночной режим
Code
callMethod('NightMode.deactivate');
sayReply("Отключаю ночной режим!",100);
|
Отключение экономного режима
Pattern: (В|в)ыключ(и|ить) экономный режим
Code
callMethod('EconomMode.deactivate');
sayReply("Отключаю экономный режим!",100);
|
|
сеть
Code
return;
$mode = $params['mode'];
$sayLVL = $params['sayLVL']; if ($sayLVL == "") {$sayLVL=-1;}
$ProviderName = gg('ThisComputer.ProviderName');
$ProviderURL = gg('ThisComputer.ProviderURL');
$ProviderLoc = gg('ThisComputer.ProviderLoc');
$ProviderIP = gg('ThisComputer.ProviderIP');
$url="http://api.2ip.com.ua/provider.json";
//Работаем со строкой JSON
$data = json_decode(file_get_contents($url), true);
$ip=$data["ip"]; // что искали
$name_ripe=$data["name_ripe"];
$name_rus=$data["name_rus"];
$site=$data["site"];
$url="http://api.2ip.com.ua/geo.json?ip=".$ip;
//Работаем со строкой 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 ($ip != $ProviderIP) {sg('ThisComputer.ProviderIP',$ip);}
if ($mode != "getinfo") {
say('Текущий провайдер '.$name_rus.' ('.$loc.'). Текущий IP-адрес '.$ip,$sayLVL);
}
|
синоптик
|
система
Code
//CPU temp
$cpu_temp=exec('cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input') / 1000;
$cpu_temp=round($cpu_temp,1);
//CPU usage
$cpu_usage=exec("top -bn 1 | awk '{print $9}' | tail -n +8 | awk '{s+=$1} END {print s}'");
//System uptime
$sys_uptime = exec('uptime');
$sys_uptime = explode(' up ', $sys_uptime);
$sys_uptime = explode(',', $sys_uptime[1]);
$sys_uptime = trim($sys_uptime[0]);
//Memory usage/total
$mem_total=exec("cat /proc/meminfo | grep MemTotal | awk '{print $2}'");
$mem_usage=$mem_total - exec("cat /proc/meminfo | grep MemFree | awk '{print $2}'");
$sys_memory=$mem_usage . " / " . $mem_total;
//HDD /dev/sda temp
$hdd_temp=exec("hddtemp /dev/sda");
//ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$hdd_temp,$arr);
preg_match('/[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)/',$hdd_temp,$arr);
$hdd_temp = trim($arr[1]);
$hdd_temp = str_replace('+','',$hdd_temp);
//HDD free space
$hdd_freespace=exec("df -h | grep /dev/sda1 | awk '{print $4}'");
if(gg('SysUptime')!=$sys_uptime){sg("SysUptime",$sys_uptime);}
if(gg('SysMemUsed')!=$mem_usage){sg("SysMemUsed",$mem_usage);}
if(gg('SysMemTotal')!=$mem_total){sg("SysMemTotal",$mem_total);}
if(gg('HDDFree')!=$hdd_freespace){sg("HDDFree",$hdd_freespace);}
//if(gg('HDDtemp')!=$hdd_temp){sg("HDDtemp",$hdd_temp);}
if(gg('CPUtemp')!=$cpu_temp){sg("CPUtemp",$cpu_temp);}
if(gg('CPUusage')!=$cpu_usage){sg("CPUusage",$cpu_usage);}
|
Спасибо
Code
$thanks = getRandomLine(thanks);
sayReply($thanks, 1);
|
сценарий
Code
say("Запускаю сценарий ".$matches[1]);
runScript($matches[1]);
|
торшер
|
цикл телеграмм остановлен
Pattern: цикл телеграмм остановлен
Code
sg('ThisComputer.cycle_telegramControl','restart');
|