((В|в)ключи|(В|в)ыключи)
Код
global $session; //Обращаемся к глобальной переменной
sayTo("Что именно?",1, $session->data['TERMINAL']);
|
((Р|р)адио|(П|п)риемник)
Код
global $session; //Обращаемся к глобальной переменной
sayTo("Какую радиостанцию вы хотите послушать?",1, $session->data['TERMINAL']);
|
(Ш|ш)ансон
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио шансон",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'шансон'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
ENERGY
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио ENERGY",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'ENERGY'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
авторадио
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио авторадио",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'авторадио'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
милицейская волна
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио милицейская волна",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'милицейская волна'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
на кухне
|
радио русские песни
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио радио русские песни",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'радио русские песни'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
русское FM
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио русское FM",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'русское FM'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
русское радио
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио русское радио",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'русское радио'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
юмор
Код
cm('RadioSetting.Control',array('cmd'=>'stop'));
sleep(1);
global $session; //Обращаемся к глобальной переменной
sayTo("Включаю радио юмор FM",1, $session->data['TERMINAL']);
sleep(4);
cm('RadioSetting.Control',array('sta'=>'юмор FM'));
cm('RadioSetting.Control',array('cmd'=>'play'));
setGlobal("RadioSetting.RadioLedOn",1);
|
|
(С|с)вет
Код
global $session; //Обращаемся к глобальной переменной
sayTo("Где именно?",1, $session->data['TERMINAL']);
|
|
|
(start|play) music
Код
runScript('playFavoriteMusic');
|
(Д|д)авай приготовим (.+)
Код
$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;
}
|
(ё|е)лочка потух(.*)
Код
setGlobal('Sonoff1.gpiout12',0);
|
report system state
|
wikipedia
Шаблон: ((Ч|ч)|(К|к))то так(ое|ой) (.+)
Код
//устанавливаем кодировки
header("Content-type: text/html;charset=utf-8");
mb_internal_encoding("UTF-8");
$word = $request = $matches[5]; //получаем искомое слово
$space_replace = preg_match_all("#\s#isu", $request, $s); //проверяем, есть ли пробелы в запросе
if ($space_replace === 1) { //если есть
$request = preg_replace("#\s#", '_', $request); //меняем их на _
}
$url = 'https://ru.wikipedia.org/w/api.php?action=opensearch&search='.$request.'&format=xml'; //формируем запрос
$ch = curl_init(); //инициируем curl
curl_setopt($ch, CURLOPT_URL, $url); //передаем url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //возвращаем результат в виде строки
curl_setopt($ch, CURLOPT_USERAGENT, 'MyBot/1.0 (http://www.mysite.com/)'); //имитируем браузер
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //отключаем проверку ssl-сертификата узла
$result = curl_exec($ch); //выполяем curl
$data = fopen('test.xml', 'w'); //открываем файл для записи
fputs($data, $result); //записываем результат выполнения
fclose($data); //закрываем
$file = 'test.xml'; //указываем файл
$data_xml = simplexml_load_file($file); //загружаем его и раскладываем на массив
$text = $text1 = $data_xml->Section[0]->Item[0]->Text[0]; //получаем первый найденный вариант
$description = $data_xml->Section[0]->Item[0]->Description[0]; //получаем определение слова
$description = mb_convert_encoding($description, 'UTF-8', 'UTF-8'); //конвертируем utf-8 без bom в простой utf-8
if (empty($description)) { //если ничего не нашлось
global $session; //Обращаемся к глобальной переменной
sayTo("Я не знаю такого слова",1, $session->data['TERMINAL']);
//sayReply("Я не знаю такого слова",1);
} elseif (!empty($description)) { //иначе
$text = preg_replace("#ё#", 'е', $text); //меняем "ё" на "е"
$text = mb_strtolower($text, 'utf-8'); //меняем регистр всех букв на нижний
if ($word === $text) { //если первый результат равен введенному слову
function utf8_str_split($str) {
// переводим каждый символ в массив строк
$split=1;
$array = array();
for ( $i=0; $i < strlen( $str ); ){
$value = ord($str[$i]); //возвращаем ASCII-код сиволов и проверяем их на корректность
if($value > 127){
if($value >= 192 && $value <= 223)
$split=2;
elseif($value >= 224 && $value <= 239)
$split=3;
elseif($value >= 240 && $value <= 247)
$split=4;
}else{
$split=1;
}
$key = NULL;
for ( $j = 0; $j < $split; $j++, $i++ ) {
$key .= $str[$i];
}
array_push( $array, $key );
}
return $array;
}
/**
* Функция вырезки
* @param $str
* @return
*/
function clearstr($str){
$sru = 'ёйцукенгшщзхъфывапролджэячсмитьбю';
$s1 = array_merge(utf8_str_split($sru), utf8_str_split(strtoupper($sru)), range('A', 'Z'), range('a','z'), range('0', '9'), array('&',' ','#',';','%','?',':','(',')','-','_','=','+','[',']',',','.','/','\\'));
$codes = array();
for ($i=0; $idata['TERMINAL']);
//sayReply($tracking,1);
} elseif ($word != $text){ //если искомое слово не найдено в первом варианте
$text2 = $data_xml->Section[0]->Item[1]->Text[0]; //получаем второе совпадение
$text3 = $data_xml->Section[0]->Item[2]->Text[0]; //получаем третье совпадение
$say = "По Вашему запросу совпадений не найдено. Похожие результаты: ";
//$say.=$text1 .", " .$text2 ." и " .$text3 .".";
$say.=$text1; //первый похожий резальтат
if ($text2 ==='') { //если во втором результате пусто
$say.="."; //ставим точку
} else { //иначе
$say.= ", " .$text2; //ставим запятую и дописываем второй вариант
if ($text3 === '') { //если в третьем результате пусто
$say.="."; //ставим точку
} else { //иначе
$say.=" и " .$text3; //ставим запятую и дописываем третий вариант
}
}
global $session; //Обращаемся к глобальной переменной
sayTo($say,1, $session->data['TERMINAL']);
//sayReply($say,1);
}
}
|
Громкость на ХХ процентов
Шаблон: ((установи(.*) громкость)(.*)(\s+)(\d+))|^((громкость)(.*)(\s+)(\d+))
Код
$vol=$matches[6].$matches[11];
cm('RadioSetting.Control',array('vol'=>$vol));
|
Напомни через
Шаблон: (Н|н)апомни через (.+) минут(|у|ы) (.+)
Код
$rnumber = 1;
while (1) {
$rname = "Remind_$rnumber";
if (!timeOutExists($rname)) break;
$rnumber++;
}
if ($matches[2] =='одну' or $matches[2] =='1') {$matches[2]='1';
setTimeOut($rname,'sayReply("Напоминаю: '.$matches[4].'");',$matches[2]*60,2);
sayReply("Принято напоминание - напомнить через одну минуту: $matches[4]",2);
}
elseif ($matches[2] =='две' or $matches[2] =='2') {$matches[2]='2';
setTimeOut($rname,'sayReply("Напоминаю: '.$matches[4].'");',$matches[2]*60,2);
sayReply("Принято напоминание - напомнить через две минуты: $matches[4]",2);
}
elseif ($matches[2] =='три' or $matches[2] =='3') {$matches[2]='3';
setTimeOut($rname,'sayReply("Напоминаю: '.$matches[4].'");',$matches[2]*60,2);
sayReply("Принято напоминание - напомнить через три минуты: $matches[4]",2);
}
elseif ($matches[2] =='четыре' or $matches[2] =='4') {$matches[2]='4';
setTimeOut($rname,'sayReply("Напоминаю: '.$matches[4].'");',$matches[2]*60,2);
sayReply("Принято напоминание - напомнить через четыре минуты: $matches[4]",2);
}
else {
setTimeOut($rname,'sayReply("Напоминаю: '.$matches[4].'");',$matches[2]*60,2);
sayReply("Принято напоминание - напомнить через $matches[2] минут: $matches[4]",2);
}
|
помощь
Шаблон: ((п|П)омощь|(п|П)омоги|(с|С)писок команд|я хз|а что можно)
Код
say ("Вы просили помочь",5);
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
say($actions[$i],5);
}
|
раз два три (е|ё)лочка гори
Код
setGlobal('Sonoff1.gpiout12',1);
|