Будильник

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Будильник

Сообщение Yashalta » Пт июн 22, 2018 10:14 pm

Подскажите пожалуйста что, я делаю не так?
Я почитав эту ветку "собрал" будильник из разных варинтов. И в результате у меня не работает!
Вот такой у меня шаблон

Код: Выделить всё

((В|в)ключи|(П|п)оставь|(У|у)станови|(З|з)аведи) будильник на (\d+)(\D+)(\d*)
отрабатывает такой код

Код: Выделить всё

$h=$matches[6]; 
$i=$matches[7]; 
$m=$matches[8];
$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." ".$i." ".$m." минут. Постарайтесь не проспать.",5);
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$h.':'.$m);
В коде релизованна возможност говорить вместо слова "часов" писать, говорить (часов, часа, час). (Взято из этой ввертки!)
В итоге вот что я имею при вводе команд:

Код: Выделить всё

22:01 Alice: Неизвестная команда...
22:01 Admin: Заведи будильник на 3:00
22:01 Alice: Неизвестная команда...
22:01 Admin: Установи будильник на 3:00
22:00 Alice: Неизвестная команда...
22:00 Admin: Поставь будильник на 3:00
21:59 Admin: Включи будильник на 3:00
Из чего видно, что чтолько команда "Включи будильник на 3:00" не пишет ошибку но и не включает будильник!
А саи будильники я ставлил по этой видеоинструкции https://www.youtube.com/watch?v=OLWSMNX ... 5&index=22
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Будильник

Сообщение nick7zmail » Пт июн 22, 2018 10:17 pm

Посмотрите что в переменные
$h=$matches[6];
$i=$matches[7];
$m=$matches[8];
прилетает...через тот же say.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Будильник

Сообщение fandaymon » Пт июн 22, 2018 10:23 pm

Yashalta писал(а):
Пт июн 22, 2018 10:14 pm
Подскажите пожалуйста что, я делаю не так?
Я почитав эту ветку "собрал" будильник из разных варинтов. И в результате у меня не работает!
Вот такой у меня шаблон

Код: Выделить всё

((В|в)ключи|(П|п)оставь|(У|у)станови|(З|з)аведи) будильник на (\d+)(\D+)(\d*)
Не делай (В|в) и всё будет хорошо. Тесты показывают что программе это не нравится
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Будильник

Сообщение Yashalta » Пт июн 22, 2018 10:32 pm

nick7zmail писал(а):
Пт июн 22, 2018 10:17 pm
Посмотрите что в переменные
$h=$matches[6];
$i=$matches[7];
$m=$matches[8];
прилетает...через тот же say.
Долго всматривался в переменные и привел шаблон к такому виду

Код: Выделить всё

(Включи|Поставь|Установи|Заведи) будильник на (\h+)(\i+)(\m*)
А переменные такие

Код: Выделить всё

$h=$matches[2]; 
$i=$matches[3]; 
$m=$matches[4];
$hh=$h;
...
Походу я не туда копаю!

Код: Выделить всё

22:37 Alice: Неизвестная команда...
22:37 Admin: Заведи будильник на 6:00
22:37 Alice: Неизвестная команда...
22:37 Admin: Установи будильник на 6:00
22:37 Alice: Неизвестная команда...
22:37 Admin: Поставь будильник на 6:00
22:37 Admin: Включи будильник на 6:00
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Будильник

Сообщение nick7zmail » Пт июн 22, 2018 10:58 pm

Дак чему в итоге переменные эти равны при срабатывании шаблона??
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Будильник

Сообщение fandaymon » Пт июн 22, 2018 11:02 pm

А что это за странные регулярные выражения?!

(\h+)(\i+)(\m*) ?
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Будильник

Сообщение Yashalta » Сб июн 23, 2018 9:17 pm

Yashalta писал(а):
Пт июн 22, 2018 10:14 pm
Шаблон

Код: Выделить всё

((В|в)ключи|(П|п)оставь|(У|у)станови|(З|з)аведи) будильник на (\d+)(\D+)(\d*)
отрабатывает такой код

Код: Выделить всё

$h=$matches[6]; 
$i=$matches[7]; 
$m=$matches[8];
$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." ".$i." ".$m." минут. Постарайтесь не проспать.",5);
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$h.':'.$m);
В коде релизованна возможност говорить вместо слова "часов" писать, говорить (часов, часа, час). (Взято из этой ввертки!)
Этот вариант рабочий! Не знаю как это объяснить! НО, я просто удалил свой "старый" шаблон поведения и создал заново и все работает!
Всем спасибо!
Ответить