(start|play) music
Код
runScript('playFavoriteMusic');
|
report system state
|
Включи|Выключи
Шаблон: ((В|в)ключи|(В|в)ыключи)
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Включить что?',2);
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Выключить что?',2); }
|
Звук
Шаблон: (З|з)вук|(Г|г)ромкость
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Где включить звук?',2);
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Где выключить звук?',2); }
|
В спальне
Шаблон: в (З|з)але|(С|с)пальне
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Включаю звук в спальне', 2);
brLinkCommand('TV_Zal_volume+');
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Выключаю звук в спальне', 2);
brLinkCommand('TV_Zal_Mute');
}else {
sayReply('Непонятно что звуком в спальне: '.$original, 2);
}
|
На кухне
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Включаю звук на кухне', 2);
brLinkCommand('Tv_kitchen_volume+');
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Выключаю звук на кухне', 2);
brLinkCommand('TV_Kitchen_Mute');
} else {
sayReply('Непонятно что со звуком на кухне: '.$original, 2);
}
|
|
Свет
Код
if (preg_match('/включи/isu',$original)) {
say('Где включить свет?',2);
} elseif (preg_match('/выключи/isu',$original)) {
say('Где выключить свет?',2); }
|
В спальне
Шаблон: (В|в) ((З|з)ал(|е)|(С|с)пальн(я|е|и))
Код
if (preg_match('/включи/isu',$original)) {
say('Какой свет включить в спальне?',2);
} elseif (preg_match('/выключи/isu',$original)) {
say('Какой свет выключить в спальне?',2); }
|
Весь
Код
if (preg_match('/включи/is',$original)) {
sayReply('Включаю весь свет в спальне', 2);
} elseif (preg_match('/выключи/is',$original)) {
sayReply('Выключаю весь свет в спальне', 2);
} else {
sayReply('Непонятно что со всем светом в спальне: '.$original, 2);
}
|
Компьютер
Шаблон: ((К|к)омпьютер(а|А)|(К|к)омп(а|А)
Код
if (preg_match('/включи/is',$original)) {
sayReply('Включаю свет у компьютера', 2);
} elseif (preg_match('/выключи/is',$original)) {
sayReply('Выключаю свет у компьютер', 2);
} else {
sayReply('Непонятно что со светом у компьютера: '.$original, 2);
}
|
Пианино
Шаблон: ((О|о)сновной|(О|о)бычный|(П|п)ианино)
Код
if (preg_match('/включи/isu',$original)) {
if (gg('miioRelay04.status')==0) {
cm('miioRelay04.turnOn');
sayReply("Включаю свет у пианино",2);
} else{
sayReply("Свет у пианино уже включен",2);
}
}elseif (preg_match('/выключи/isu',$original)) {
if (gg('miioRelay04.status')==1) {
cm('miioRelay04.turnOn');
sayReply("Выключаю свет у пианино",2);
} else{
sayReply("Свет у пианино уже выключен",2); }
}else {
sayReply('Непонятно что с основным светом у пианино: '.$original, 2);
}
//SetTimeOut("Lamp_Zal_on","rs('Kitchen_Off');",5);
|
|
Коридор
Шаблон: ((К|к)оридор(|е)|(П|п)рихож(ей|ая))
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Какой свет включить коридоре?',2);
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Какой свет выключить на коридоре?',2); }
|
Весь
Код
if (preg_match('/включи/is',$original)) {
sayReply('Включаю весь свет в коридоре', 2);
} elseif (preg_match('/выключи/is',$original)) {
sayReply('Выключаю весь свет в коридоре', 2);
} else {
sayReply('Непонятно что со всем светом в коридоре: '.$original, 2);
}
|
Дополнительный
Шаблон: ((Д|д)ополнительный|(В|в)спомогательный|(В|в)торой)
Код
if (preg_match('/включи/is',$original)) {
sayReply('Включаю дополнительный свет в коридоре', 2);
} elseif (preg_match('/выключи/is',$original)) {
sayReply('Выключаю дополнительный свет в коридоре', 2);
} else {
sayReply('Непонятно что с дополнительным светом в коридоре: '.$original, 2);
}
|
Основной
Шаблон: ((О|о)сновной|(О|о)бычный|(П|п)ервый)
Код
if (preg_match('/включи/is',$original)) {
sayReply('Включаю основной свет в коридоре', 2);
} elseif (preg_match('/выключи/is',$original)) {
sayReply('Выключаю основной свет в коридоре', 2);
} else {
sayReply('Непонятно что с основным светом в коридоре: '.$original, 2);
}
|
|
Кухня
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Какой свет включить на кухне?',2);
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Какой свет выключить на кухне?',2); }
|
Основной
Шаблон: ((О|о)сновной|(О|о)бычный|(П|п)ервый)
Код
if (preg_match('/включи/isu',$original)) {
if (gg('miioRelay03.status')==0) {
cm('miioRelay03.turnOn');
say("Включаю основной свет на кухне",2);
} else{
say("Свет в кухне уже включен",2);
}
}elseif (preg_match('/выключи/isu',$original)) {
if (gg('miioRelay03.status')==1) {
cm('miioRelay03.turnOff');
say("Выключаю основной свет на кухне",2);
} else{
say("Свет в кухне уже выключен",2); }
}else {
say('Непонятно что с основным светом на кухне: '.$original, 2);
}
|
|
Туалет
Шаблон: (В|в) ((Т|т)уалет(|е)|(У|у)борн(ая|ой)|(В|в)анн(ой|е))
Код
if (preg_match('/включи/isu',$original)) {
if (gg('miioRelay02.status')==0) {
cm('miioRelay02.turnOn');
say("Включаю свет в ванной комнате",2);
} else{
say("Свет в ванной уже включен",2);
}
}elseif (preg_match('/выключи/isu',$original)) {
if (gg('miioRelay02.status')==1) {
cm('miioRelay02.turnOff');
say("Выключаю свет в ванной комнате",2);
} else{
say("Свет в ванной уже выключен",2); }
}else {
say('Непонятно что со светом в ванной: '.$original, 2);
}
|
|
телевизор
Код
if (preg_match('/включи/isu',$original)) {
sayReply('Какой телевизор включить на кухне или в спальне?',2);
} elseif (preg_match('/выключи/isu',$original)) {
sayReply('Какой телевизор выключить на кухне или в спальне?',2); }
|
на кухне
Код
if (preg_match('/включи/uis',$original)) {
if (gg('Televizor_kitchen.status')<>1) {
say(getRandomLine('ok').' Отправляю команду на включение телевизора на кухне',2);
brLinkCommand('Tv_kitchen_on');
} else {
say('Нет необходимости, в данный момент телевизор на кухне был уже включен',2);
}
}elseif (preg_match('/выключи/uis',$original)) {
if (gg('Televizor_kitchen.status')==1) {
say(getRandomLine('ok').' Отправляю команду на выключение телевизора на кухне',2);
brLinkCommand('Tv_kitchen_on');
} else {
say('Нет необходимости, в данный момент телевизор на кухне был уже выключен',2);
}
}
|
В спальне
Шаблон: ((С|с)пальне|(З|з)але)
Код
if (preg_match('/включи/uis',$original)) {
if (gg('Televizor_zal.status')<>1) {
say(getRandomLine('ok').' Отправляю команду на включение телевизора в спальне',2);
brLinkCommand('Tv_zal_on');
} else {
say('Нет необходимости, в данный момент телевизор в спальне уже включен',2);
}
}elseif (preg_match('/выключи/uis',$original)) {
if (gg('Televizor_zal.status')==1) {
say(getRandomLine('ok').' Отправляю команду на выключение телевизора в спальне',2);
brLinkCommand('Tv_zal_on');
} else {
say('Нет необходимости, в данный момент телевизор в спальне уже выключен',2);
}
}
|
|
|
Громкость на ХХ процентов
Шаблон: ((установи(.*) громкость)(.*)(\s+)(\d+))|^((громкость)(.*)(\s+)(\d+))
Код
$vol=$matches[6].$matches[11];
cm('RadioSetting.Control',array('vol'=>$vol));
|
запиши
|
в список дел
Код
callMethod("TodoList.view");
callMethod("TodoList.new",array("task"=>$matches[1]));
callMethod("TodoList.view");
say(getRandomLine(DONE),1);
|
важное сообщение
Шаблон: важное сообщение (.+)
Код
setGlobal('global.Cache', $matches[1]);
say(getRandomLine(DONE),1);
say('Ваше сообщение '.$matches[1].' записано',2);
|
|
кто такой
Код
runScript('wiki', array('zapros' => $matches[1]));
//runScript('wiki2', array('zapros' => $matches[1]));
|
Напомни через
Шаблон: Напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
Код
$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);}
|
Общий контекст
|
забудь
Код
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say('Контекст забыт.');
|
Помощь
Код
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
say($actions[$i]);
}
|
|
Переключи
Код
say('Я не поняла. Что нужно '.$bases[1].'?',1);
|
В зале
Шаблон: (В|в) ((З|з)ал(|е)|(С|с)пальн(я|е|и))
|
Наш дом(зал)
Шаблон: ((Н|н)аш) ((Д|д)ом)|23
Код
brLinkCommand('Tv_zal_2'); //Нажимаем цифру 2
sleep(1);
brLinkCommand('Tv_zal_3');//Нажимаем цифру 3
sleep(1);
if (gg('Televizor_zal.status')<>1) {
brLinkCommand('Tv_zal_on');
}
sleep(5);
brLinkCommand('Tv_zal_tv');//переключаем на телевизор
sayReply('Телеканал Наш Дом в спальне, включен', 2);
|
Первый канал(зал)
Шаблон: ((П|п)ервый|(О|о)рт|(Д|д)евятьсот|900)
Код
brLinkCommand('Tv_zal_9'); //Нажимаем цифру 9
sleep(1);
brLinkCommand('Tv_zal_0');//Нажимаем цифру 0
sleep(1);
brLinkCommand('Tv_zal_0');//Нажимаем цифру 0
sleep(1);
if (gg('Televizor_zal.status')<>1) {
brLinkCommand('Tv_zal_on');
}
sleep(5);
brLinkCommand('Tv_zal_tv');//переключаем на телевизор
sayReply('Первый канал в спальне, включен', 2);
|
Россия(зал)
Код
brLinkCommand('Tv_zal_9'); //Нажимаем цифру 9
sleep(1);
brLinkCommand('Tv_zal_2');//Нажимаем цифру 2
sleep(1);
brLinkCommand('Tv_zal_2');//Нажимаем цифру 2
sleep(1);
if (gg('Televizor_zal.status')<>1) {
brLinkCommand('Tv_zal_on');
}
sleep(5);
brLinkCommand('Tv_zal_tv');//переключаем на телевизор
|
СТС(зал)
Код
brLinkCommand('Tv_zal_0'); //Нажимаем цифру 0
sleep(1);
brLinkCommand('Tv_zal_1');//Нажимаем цифру 1
sleep(1);
brLinkCommand('Tv_zal_3');//Нажимаем цифру 3
sleep(1);
if (gg('Televizor_zal.status')<>1) {
brLinkCommand('Tv_zal_on');
}
sleep(5);
brLinkCommand('Tv_zal_tv');//переключаем на телевизор
|
Супер
Код
brLinkCommand('Tv_zal_5'); //Нажимаем цифру 5
sleep(1);
brLinkCommand('Tv_zal_4');//Нажимаем цифру 4
sleep(1);
if (gg('Televizor_zal.status')<>1) {
brLinkCommand('Tv_zal_on');
}
sleep(5);
brLinkCommand('Tv_zal_tv');//переключаем на телевизор
|
|
на кухне
|
Наш дом(кухня)
Шаблон: ((Н|н)аш) ((Д|д)ом)|23
Код
brLinkCommand('Tv_kitchen_2'); //Нажимаем цифру 2
sleep(1);
brLinkCommand('Tv_kitchen_3');//Нажимаем цифру 3
sleep(1);
if (gg('Televizor_kitchen.status')<>1) {
brLinkCommand('Tv_kitchen_on');
}
sleep(5);
brLinkCommand('Tv_kitchen_tv');//переключаем на телевизор
sayReply('Телеканал Наш Дом на кухне, включен', 2);
|
Первый канал(кухня)
Шаблон: (П|п)ервый|(О|о)рт|(Д|д)евятьсот|900
Код
brLinkCommand('Tv_kitchen_9'); //Нажимаем цифру 9
sleep(1);
brLinkCommand('Tv_kitchen_0');//Нажимаем цифру 0
sleep(1);
brLinkCommand('Tv_kitchen_0');//Нажимаем цифру 0
sleep(1);
if (gg('Televizor_kitchen.status')<>1) {
brLinkCommand('Tv_kitchen_on');
}
sleep(5);
brLinkCommand('Tv_kitchen_tv');//переключаем на телевизор
sayReply('Первый канал на кухне, включен', 2);
|
Россия(кухня)
Код
brLinkCommand('Tv_kitchen_9'); //Нажимаем цифру 9
sleep(1);
brLinkCommand('Tv_kitchen_2');//Нажимаем цифру 2
sleep(1);
brLinkCommand('Tv_kitchen_2');//Нажимаем цифру 2
sleep(1);
if (gg('Televizor_kitchen.status')<>1) {
brLinkCommand('Tv_kitchen_on');
}
sleep(5);
brLinkCommand('Tv_kitchen_tv');//переключаем на телевизор
|
СТС(кухня)
Код
brLinkCommand('Tv_kitchen_0'); //Нажимаем цифру 0
sleep(1);
brLinkCommand('Tv_kitchen_1');//Нажимаем цифру1
sleep(1);
brLinkCommand('Tv_kitchen_3');//Нажимаем цифру 3
sleep(1);
if (gg('Televizor_kitchen.status')<>1) {
brLinkCommand('Tv_kitchen_on');
}
sleep(5);
brLinkCommand('Tv_kitchen_tv');//переключаем на телевизор
|
Супер
Код
brLinkCommand('Tv_kitchen_5'); //Нажимаем цифру 5
sleep(1);
brLinkCommand('Tv_kitchen_4');//Нажимаем цифру 4
sleep(1);
if (gg('Televizor_kitchen.status')<>1) {
brLinkCommand('Tv_kitchen_on');
}
sleep(5);
brLinkCommand('Tv_kitchen_tv');//переключаем на телевизор
|
|
|
Прибавь громкость
Шаблон: ((П|п)рибавь|(У|у)величь) ((Г|г)ромкость)
|
В спальне
Шаблон: (В|в) (З|з)ал(|е)|(С|с)пальн(я|е|и)
Код
brLinkCommand('Tv_zal_volume+');
sleep(1);
brLinkCommand('Tv_zal_volume+');
brLinkCommand('Tv_zal_volume+');
brLinkCommand('Tv_zal_volume+');
|
на кухне
Код
brLinkCommand('Tv_kitchen_volume+');
sleep(1);
brLinkCommand('Tv_kitchen_volume+');
brLinkCommand('Tv_kitchen_volume+');
brLinkCommand('Tv_kitchen_volume+');
|
|
Проснись
Шаблон: (говори голосом|проснись)
Код
setGlobal('minMsgLevel',0);
say('Я проснулась.');
|
Система громче
|
Система тише
|
Сохрани координаты места
Шаблон: (сохран(.+) координаты)(\s*)(.*)
Код
$pName=$matches[4];
if (time()-getGlobal('admin.CoordinatesUpdatedTimestamp')>30*60) {
say('Текущие координаты устарели (неизвестны)',1);
} else {
say(getRandomLine('ok').' Сохраняю координаты: '.$pName,1);
$tmp=explode(',',gg('admin.Coordinates'));
$rec=array();
// $rec['TITLE']='Координаты: '.$pName.' '.date("Y-d-m H:i");
$rec['TITLE']= $pName;
$rec['LAT']=$tmp[0];
$rec['LON']=$tmp[1];
$rec['RANGE']=100;
SQLInsert('gpslocations',$rec);
}
|
Спи
Шаблон: (молчи|помолчи|усни|спи)
Код
say('Хорошо, я пошла спать');
setGlobal('minMsgLevel',3);
|
Тестирование
Код
$Svet = "SwitchStatus.Svet_";
for ($i = 1; $i <= 5; $i++) {
//1 - коридор 1
//2 - коридор 2
//3 - кухня 1
//4 - ванна 1
//5 - туалет 1
$Svet2 = $Svet.$i;
$SvOn = gg($Svet2);
//sayReply($Svet2." ".$SvOn,2);
if ($i <= 1) {
$Tabl1 = array($Svet2); //массив названий
$Tabl2 = array($SvOn); //массив статусов
} else {
array_push($Tabl1, $Svet2);
array_push($Tabl2, $SvOn);
}
}
$Tabl3 = array_combine($Tabl1, $Tabl2); //объеденяет 2 массива
$Svet_On = (array_keys($Tabl3, "1")); //массив названий со значением 1 - горит
$Svet_Off = (array_keys($Tabl3, "2")); //массив названий со значением 2 - не горит
//Удаляем пустые строки в массиве
$On = array_diff($Svet_On, array('', null));
$Off = array_diff($Svet_Off, array('', null));
//кол-во элементов в массивах
$Val_On = count($On);
$Val_Off = count($Off);
//Вывод информации
if ($Val_On == 0 and $Val_Off <> 0) {
sayReply("Свет выключен везде!");
} else if ($Val_On <> 0 and $Val_Off == 0) {
sayReply("Свет включен везде!");
}
//say($Val_On."-".$Val_Off);
//перевод массива в строку и подмена данных
if ($Val_On <> 0) {
$Arr_On_Index = implode(", ", $On);
$Arr_On = str_replace("SwitchStatus.Svet_1", "корридоре 1", $Arr_On_Index);
$Arr_On = str_replace("SwitchStatus.Svet_2", "корридоре 2", $Arr_On);
$Arr_On = str_replace("SwitchStatus.Svet_3", "кухне", $Arr_On);
$Arr_On = str_replace("SwitchStatus.Svet_4", "ванной", $Arr_On);
$Arr_On = str_replace("SwitchStatus.Svet_5", "туалете", $Arr_On);
}
if ($Val_Off <> 0) {
$Arr_Off_Index = implode(", ", $Off);
$Arr_Off = str_replace("SwitchStatus.Svet_1", "корридоре 1", $Arr_Off_Index);
$Arr_Off = str_replace("SwitchStatus.Svet_2", "корридоре 2", $Arr_Off);
$Arr_Off = str_replace("SwitchStatus.Svet_3", "кухне", $Arr_Off);
$Arr_Off = str_replace("SwitchStatus.Svet_4", "ванной", $Arr_Off);
$Arr_Off = str_replace("SwitchStatus.Svet_5", "туалете", $Arr_Off);
}
//вывод наименьшей строки
if ($Val_On <> 0 and $Val_On <= $Val_Off) {
$Nach_Str_On = substr($Arr_On, 0, 10);
say($Arr_On);
say($Nach_Str_On);
if ($Nach_Str_On === "кухне"){
sayReply("Свет включен на ".$Arr_On, 2);
} else {
sayReply("Свет включен в ".$Arr_On, 2);
}
} else if ($Val_Off <> 0 and $Val_On > $Val_Off) {
$Nach_Str_Off = substr($Arr_Off, 0, 10);
if ($Nach_Str_Off === "кухне"){
sayReply("Свет выключен на ".$Arr_Off, 2);
} else {
sayReply("Свет выключен в ".$Arr_Off, 2);
}
}
//sayReply(array_sum($Tabl2)); сумма
|
Убавь громкость
Шаблон: ((У|у)бавь|(У|у)меньши|(У|у)меньшить) ((Г|г)ромкость)
|
на кухне
Код
brLinkCommand('Tv_kitchen_volume-');
brLinkCommand('Tv_kitchen_volume-');
brLinkCommand('Tv_kitchen_volume-');
brLinkCommand('Tv_kitchen_volume-');
|
В спальне
Шаблон: (В|в) (З|з)ал(|е)|(С|с)пальн(я|е|и)
Код
brLinkCommand('Tv_zal_volume-');
brLinkCommand('Tv_zal_volume-');
brLinkCommand('Tv_zal_volume-');
brLinkCommand('Tv_zal_volume-');
|
|
что такое (.+)
Код
runScript('wiki', array('zapros' => $matches[1]));
//runScript('wiki2', array('zapros' => $matches[1]));
|