(start|play) music
Код
runScript('playFavoriteMusic');
|
report system state
|
Авторадио
Код
cm('RadioSetting.Control', array('sta'=>'Авторадио', 'cmd'=>'play', 'vol'=>100));
|
вальер
Код
callMethod('Relay18.turnon');
|
ванна
Код
callMethod('Relay12.turnon');
callMethod('Relay13.turnon');
|
видео YouTube
Код
cm('RadioSetting.Control', array('sta'=>'yotube 4k', 'cmd'=>'play', 'vol'=>50));
|
вики
Код
//устанавливаем кодировки
header("Content-type: text/html;charset=utf-8");
mb_internal_encoding("UTF-8");
$word = $request = $matches[1]; //получаем искомое слово
$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)) { //если ничего не нашлось
say ("Я не знаю такого слова",2);
} 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; $iSection[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; //ставим запятую и дописываем третий вариант
}
}
say($say,2);
}
}
|
Включи или выключи
Шаблон: (^включи|^выключи)
Код
//say('Что именно '.$original.'',1);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
(музыку|радио)
Код
//say('Включаю музыку',1);
// runScript('Europa Plus');
if (preg_match('/включи/uis',$original)) {
say('Включаю радио',0);
runScript('playPause');
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю радио',2);
runScript('playPause');
} else {
say('Непонятно: '.$original,2);
}
|
подсветку в зале
Код
//callmethod("Relay01.switch");
//say("включил или выключила подсветку в зале на втором этаже точно не знаю но что то сделала",2);
if (preg_match('/включи/uis',$original)) {
say('Включаю подсветку в зале второго этажа',2);
callMethod("Relay01.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю подсветку в зале второго этажа',2);
callMethod("Relay01.turnOff");
} else {
say('Непонятно что со светом в зале второго этажа: '.$original,2);
}
|
подсветку в прихожей
Код
//callmethod("Relay01.switch");
//say("включил или выключила подсветку в зале на втором этаже точно не знаю но что то сделала",2);
if (preg_match('/включи/uis',$original)) {
say('Включаю подсветку в прихожей второго этажа',2);
callMethod("Relay10.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю подсветку в прихожей второго этажа',2);
callMethod("Relay10.turnOff");
} else {
say('Непонятно что со светом в зале второго этажа: '.$original,2);
}
|
розетку
Код
//callmethod("Relay06.turnOn");
//say("включаю розетку",2);
if (preg_match('/включи/uis',$original)) {
say('Включаю розетку',2);
callMethod("Relay06.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю розетку',2);
callMethod("Relay06.turnOff");
} else {
say('Непонятно что со светом в зале второго этажа: '.$original,2);
}
|
свет
Код
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
в ванной
Код
//callmethod("Relay04.switch");
//say("включаю свет в ванной",2);
if (preg_match('/включи/uis',$original)) {
say('включаю свет в ванной',2);
callMethod("Relay04.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('выключаю свет в ванной',2);
callMethod("Relay04.turnOff");
} else {
say('Непонятно что со светом в зале первого этажа: '.$original,2);
}
|
в зале на втором этаже
Код
//callmethod("Switch1.turnOn");
//say("включаю свет в зале на втором этаже",2);
if (preg_match('/включи/uis',$original)) {
say('Включаю свет в зале второго этажа',2);
callMethod("Switch1.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю свет в зале второго этажа',2);
callMethod("Switch1.turnOff");
} else {
say('Непонятно что со светом в зале второго этажа: '.$original,2);
}
|
в зале на первом этаже
Код
//callmethod("Relay08.turnOn");
//say("включаю свет в зале на первом этаже",2);
if (preg_match('/включи/uis',$original)) {
say('включаю свет в зале на первом этаже',2);
callMethod("Relay08.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('выключаю свет в зале на первом этаже',2);
callMethod("Relay08.turnOff");
} else {
say('Непонятно что со светом в зале первого этажа: '.$original,2);
}
|
в прихожей на втором этаже
Код
//callmethod("Relay10.turnOn");
//say("включаю свет в зале на первом этаже",2);
if (preg_match('/включи/uis',$original)) {
say('включила свет в прихожей на втором этаже',2);
callMethod("Relay11.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('выключила свет в прихожей на втором этаже',2);
callMethod("Relay11.turnOff");
} else {
say('Непонятно что со светом в зале первого этажа: '.$original,2);
}
|
везде
Код
//callmethod("Relay09.turnOn");
//say("включаю свет на кухне",2);
if (preg_match('/включи/uis',$original)) {
say('включаю свет во дворе, в прихожей второго этажа и в ванной на втором этаже',2);
callMethod("Relay10.turnOn");
callMethod("Relay11.turnOn");
callMethod("Relay12.turnOn");
callMethod("Relay13.turnOn");
callMethod("Relay14.turnOn");
callMethod("Relay15.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('выключаю свет во дворе, в прихожей второго этажа и в ванной на втором этаже',2);
callMethod("Relay10.turnOff");
callMethod("Relay11.turnOff");
callMethod("Relay12.turnOff");
callMethod("Relay13.turnOff");
callMethod("Relay14.turnOff");
callMethod("Relay15.turnOff");
} else {
say('Непонятно что со светом: '.$original,2);
}
|
во дворе
Код
//callmethod("Relay10.turnOn");
//say("включаю свет в зале на первом этаже",2);
if (preg_match('/включи/uis',$original)) {
say('включила свет во дворе',2);
callMethod("Relay14.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('выключила свет во дворе',2);
callMethod("Relay14.turnOff");
} else {
say('Непонятно что со светом во дворе: '.$original,2);
}
|
у собак
Код
//callmethod("Relay18.turnOn");
//say("включаю свет в вальере",2);
if (preg_match('/включи/uis',$original)) {
say('включаю свет в вальере',2);
callMethod("Relay18.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('выключаю свет в вальере',2);
callMethod("Relay18.turnOff");
} else {
say('Непонятно что со светом в зале первого этажа: '.$original,2);
}
|
|
|
время
Код
|
входная дверь
Код
callMethod("Motion02.motionDetected");
callMethod("Motion02.setUpdatedText");
say("входная дверь",2);
|
вырубай всё
Код
callMethod('Relay03.turnoff');
callMethod('Relay02.turnoff');
callMethod('Relay01.turnoff');
callMethod('Relay18.turnoff');
callMethod('Relay04.turnoff');
callMethod('Relay12.turnoff');
callMethod('Relay10.turnoff');
callMethod('Relay11.turnoff');
callMethod('Relay14.turnoff');
callMethod('Relay15.turnoff');
callMethod('Relay13.turnoff');
callMethod('Relay08.turnoff');
|
двор
Код
callMethod('Relay14.turnon');
|
демонстрация
|
европа плюс
Код
cm('RadioSetting.Control', array('sta'=>'Europa Plus', 'cmd'=>'play', 'vol'=>100));
|
как дела
Код
|
кто дома
Код
//проверяем кто дома
$user=getObjectsByClass("Users");
$total=count($user);
for($i=0;$i<$total;$i++) {
$user[$i]['isHome']=getGlobal($user[$i]['TITLE'].'.isHome');
$user[$i]['user']=getGlobal($user[$i]['TITLE'].'.NAME');
if ($user[$i]['isHome']) {
$res_user[]=$user[$i]['user'];
}
}
if ($res_user){
$isHomeText="Сейчас домо: ".implode(", ",$res_user);
}else{
$isHomeText="Если и есть кто, то я его не знаю.";
}
say($isHomeText,10);
|
кто такой (.+)
Код
runScript('wiki', array('zapros' => $matches[1]));
//runScript('wiki2', array('zapros' => $matches[1]));
|
новости
|
поставь будильник
Шаблон: ((В|в)ключи|(П|п)оставь|(У|у)станови) будильник на (\d+)(\s*)(часов|:)*(\s*)(\d*)
Код
$h=$matches[5];
$m=$matches[9];
$hh=$h;
if ($h<10) {$h="0".$h;}
if ($h>24) {
say("Непонятно на который час завести будильник, определитесь и сообщите снова.",5);
return;
}
if (($m>59)|(!$m)) {
say("Непонятно на сколько минут завести будильник, поэтому пусть будет ровно 00.",5);
$m="00";
}
say("Ставлю будильник на ".$h." часов ".$m." минут. Постарайтесь не проспать.",5);
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$h.':'.$m);
|
прихожая
Код
callMethod('Relay11.turnon');
|
расскажи о погоде
Код
//Запускаем обновленние данных с сервиса
include_once(DIR_MODULES . 'app_openweather/app_openweather.class.php');
$openweather = new app_openweather();
$openweather->get_weather(gg('ow_city.id'));
//Температура
$tempw=round(gg("ow_fact.temperature"));
if($tempw >= 11 and $tempw <= 14){
$degree=" градусов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if($tempw == 0 or $tempw >= 5 and $tempw <= 9){
$degree= градусов ; }
if($tempw == 1){
$degree= градус ; }
if($tempw >= 2 and $tempw <= 4){
$degree= градуса ; }
}
$tNew = abs((float)getGlobal('ow_fact.temperature'));
//влажность
$tempw2=round(gg("ow_fact.humidity"));
if($tempw2 >= 11 and $tempw2 <= 14){
$tempcels=" процентов ";
}
else{
while ($tempw2 > 9){
$tempw2=$tempw2-10;
}
if($tempw2 == 0 or $tempw2 >= 5 and $tempw2 <= 9){
$tempcels= процентов ; }
if($tempw2 == 1){
$tempcels= процент ; }
if($tempw2 >= 2 and $tempw2 <= 4){
$tempcels= процента ; }
}
//давление
$pressure=(float)gg("ow_fact.pressure_mmhg");
if ($pressure<728) {
$stp=" Атмосферное давление пониженное. ";
} elseif ($pressure>768) {
$stp=" Атмосферное давление повышенное. ";
} else {
$stp=" Атмосферное давление нормальное. ";
}
//ветер
$WindSpeed=(float)gg("ow_fact.wind_speed");
if ($WindSpeed<1) {
$stw.=" Ветра нет.";
} elseif ($WindSpeed<3) {
$stw.=" Ветер слабый.";
} elseif ($WindSpeed<6) {
$stw.=" Ветер сильный.";
} elseif ($WindSpeed<9) {
$stw.=" Ветер очень сильный.";
} else {
$stw.=" Ожидается ураган ";
}
$status.="Погода в ".gg("ow_city.name")." на на данный момент: ".gg("ow_fact.weather_type").". "." Температура: ".round(gg("ow_fact.temperature"))." ".$degree." цельсия. "." Относительная влажность: ".round(gg("ow_fact.humidity"))." ".$tempcels.". ".$stp.$stw;
say($status,2);
|
релакс
Код
cm('RadioSetting.Control', array('sta'=>'Relax', 'cmd'=>'play', 'vol'=>100));
|
свет везде
Код
callMethod('Relay01.turnon');
callMethod('Relay03.turnon');
callMethod('Relay02.turnon');
callMethod('Relay18.turnon');
callMethod('Relay08.turnon');
callMethod('Relay04.turnon');
callMethod('Relay12.turnon');
callMethod('Relay10.turnon');
callMethod('Relay11.turnon');
callMethod('Relay14.turnon');
callMethod('Relay15.turnon');
callMethod('Relay13.turnon');
|
статус системы
Код
$res='';
if (gg('Security.stateColor')=='green' && gg('System.stateColor')=='green' && gg('Communication.stateColor')=='green') {
$res='Все системы работают в штатном режиме';
} else {
if (gg('Security.stateColor')!='green') {
$res.=" Проблема безопасности: ".getGlobal('Security.stateDetails');
}
if (gg('System.stateColor')!='green') {
$res.=" Системная проблема: ".getGlobal('System.stateDetails');
}
if (gg('Communication.stateColor')!='green') {
$res.=" Проблема связи: ".getGlobal('Communication.stateDetails');
}
}
say($res,5);
|
телевизор в зале
Код
callmethod("Relay05.switch");
say("как скажите",2);
|
температура во дворе
|
температура на втором этаже
|
температура на первом этаже
|
фотон
Код
callMethod("Motion01.motionDetected");
$Rezim = gg("Motion01.status");
//режим автосвета по времени с 17-00 до 06-30 при условии что режим системы автосвет.
if ($Rezim == 1 && timeBetween('19:30','23:30'))
{
clearTimeOut("Relay10");
callMethod("Relay10.turnOn");
say('Освещение в прихожей включено',0);
SetTimeOut("Relay10",'callMethod("Relay10.turnOff");', 50);
}
|
что сейчас происходит дома
Код
rs("interval_mode",array("mode" => "NobodyHomeMode"));
rs("interval_mode",array("mode" => "SecurityArmedMode"));
rs("interval_mode",array("mode" => "SleepMode"));
//проверяем наличие в помещениях
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
for($i=0;$i<$total;$i++) {
$Rooms[$i]['Title']=getGlobal($Rooms[$i]['TITLE'].'.Title');
$Rooms[$i]['SomebodyHere']=getGlobal($Rooms[$i]['TITLE'].'.SomebodyHere');
if ($Rooms[$i]['SomebodyHere']==1) {
$res_SomebodyHere[]=$Rooms[$i]['Title'];
}
}
if ($res_SomebodyHere){
$SomebodyHereText="Движуха: ".implode(", ",$res_SomebodyHere);
}else{
$SomebodyHereText="Все тихо. Никакой движухи";
}
say($SomebodyHereText,10);
//проверяем кто дома
$user=getObjectsByClass("Users");
$total=count($user);
for($i=0;$i<$total;$i++) {
$user[$i]['isHome']=getGlobal($user[$i]['TITLE'].'.isHome');
$user[$i]['user']=getGlobal($user[$i]['TITLE'].'.NAME');
if ($user[$i]['isHome']) {
$res_user[]=$user[$i]['user'];
}
}
if ($res_user){
$isHomeText="Сейчас дома: ".implode(", ",$res_user);
}else{
$isHomeText="Если и есть кто, то я его не знаю.";
}
say($isHomeText,10);
//проверяем устройства пользователей
$Device=getObjectsByClass("HomeDevice");
$total=count($Device);
for($i=0;$i<$total;$i++) {
$Device[$i]['Online']=getGlobal($Device[$i]['TITLE'].'.Online');
$Device[$i]['Text']=getGlobal($Device[$i]['TITLE'].'.statusText');
if ($Device[$i]['Online']=="1") {
$res_Device[]=$Device[$i]['Text'];
}
}
if ($res_Device){
$DeviceText="В сети следующие устройства: ".implode(", ",$res_Device);
}else{
$DeviceText="Все устройства пользователей отключены.";
}
say($DeviceText,10);
//проверяем освещение
$Rooms=getObjectsByClass("Rooms");
$total=count($Rooms);
for($i=0;$i<$total;$i++) {
$Rooms[$i]['Title']=getGlobal($Rooms[$i]['TITLE'].'.Title');
$Rooms[$i]['light']=getGlobal($Rooms[$i]['TITLE'].'.light');
if ($Rooms[$i]['light']==1) {
$res_Rooms[]=$Rooms[$i]['Title'];
}
}
if ($res_Rooms){
$LightText="Включено освещение: ".implode(", ",$res_Rooms);
say($LightText,10);
}
//проверяем освещение
$ElectricSocket=getObjectsByClass("ElectricSocket");
$total=count($ElectricSocket);
for($i=0;$i<$total;$i++) {
$ElectricSocket[$i]['statusText']=getGlobal($ElectricSocket[$i]['TITLE'].'.statusText');
$ElectricSocket[$i]['status']=getGlobal($ElectricSocket[$i]['TITLE'].'.status');
if ($ElectricSocket[$i]['status']==1) {
$res_ElectricSocket[]=$ElectricSocket[$i]['statusText'];
}
}
if ($res_ElectricSocket){
$ElectricSocketText="Включены следующие розетки: ".implode(", ",$res_ElectricSocket);
say($ElectricSocketText,10);
}
//читаем температуру
say("Средняя температура дома".getGlobal('Sensor_temp09.value').'°C, влажность воздуха '.getGlobal('Sensor_humidity04.value').'%.',10);
|
Юмор ФМ
Код
cm('RadioSetting.Control', array('sta'=>'Юмор FM', 'cmd'=>'play', 'vol'=>100));
|