
Будильник
Модератор: immortal
-
- Сообщения: 110
- Зарегистрирован: Вт апр 29, 2014 9:16 pm
- Благодарил (а): 7 раз
- Поблагодарили: 13 раз
Re: Будильник
Создайте Шаблон поведенияSergeyM писал(а):Коллеги!
Подскажите, а как сказать Алисе "Заведи будильник на шесть тридцать утра"?
Полазил по форуму - не нашел,
будильник (\d+) часов (.+)
Код
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$matches[1].':'.$matches[2]);
- За это сообщение автора Smolalex поблагодарили (всего 2):
- ErmolenkoM (Чт фев 19, 2015 2:57 pm) • shemnik69 (Чт фев 19, 2015 3:01 pm)
- Рейтинг: 2.33%
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Будильник
Завелось:
Шаблон:
Код:
СпойлерПоказать
Код: Выделить всё
будильник на (\d+) (.+)
Код: Выделить всё
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$matches[1].':'.$matches[2]);
say("Установила",1);
- Рейтинг: 1.16%
Моя Алиска живёт на Proxmox в Debian 12
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 532 раза
- Контактная информация:
Re: Будильник
А я тут покопался, и мне кажется так будет лучше:
Шаблон:
Код:
Такой вариант правильно отрабатывает фразы такого вида:
а также "выловит" ошибки с временем более 24 часов и минутами более 59 минут
Шаблон:
Код: Выделить всё
(поставь|установи) будильник на (\d+)(\s*)(часов|:)*(\s*)(\d*)
Код: Выделить всё
$h=$matches[2];
$m=$matches[6];
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);
Код: Выделить всё
поставь (или установи) будильник на 8 часов 30 минут
поставь (или установи) будильник на 8 часов
поставь (или установи) будильник на 8
поставь (или установи) будильник на 8:30
поставь (или установи) будильник на 8:
- Рейтинг: 1.16%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Будильник
Я еще добавил слово "заведи"Vovix писал(а):Шаблон:Код: Выделить всё
(поставь|установи) будильник на (\d+)(\s*)(часов|:)*(\s*)(\d*)
Моя Алиска живёт на Proxmox в Debian 12
-
- Сообщения: 8
- Зарегистрирован: Сб июн 27, 2015 6:50 pm
- Благодарил (а): 5 раз
- Поблагодарили: 5 раз
Re: Будильник
Я только начал вникать в систему, и у меня немало времени ушло на понимание архитектуры. Я подробно расписал шаги по созданию будильника и создание Меню для будильника - может пригодится таким же новичкам, как я сам.
Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
- Рейтинг: 5.81%
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Будильник
Для статичных материалов, есть ВиКи http://majordomo.smartliving.ru/supersuperoleg писал(а): Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Будильник
Небольшой вопрос по будильнику.
Хочу чтобы у будильника можно было выбирать громкость.
Добавил соответствующий слайдер и свойство AlarmGlobal.Volume. И включил в метод такой код:
При этом будильник срабатывает на громкости системы, и после этого громкость скачет до AlarmGlobal.Volume и возвращается на ThisComputer.volumeLevel за доли секунды. Я догадываюсь, конечно в чем проблема: код на выполнение запускается весь разом, соответственно пока алиса говорит - параллельно запускается safe_exec, и меняет громкость сперва в минус потом в плюс моментом. Временно решил эту проблему как то так:
То есть выставив в ручную задержку до выполнения основного кода, и после (чтобы успела проговорить за это время).
Но если при этом запускать радио - громкость через sleep(5) вернется в положение ThisComputer.volumeLevel.
И собственно вопрос - как заставить все-таки дождаться выполнения предыдущего кода, а потом уже запускать далее?
Хочу чтобы у будильника можно было выбирать громкость.
Добавил соответствующий слайдер и свойство AlarmGlobal.Volume. И включил в метод такой код:
Код: Выделить всё
$volume=round(65535*gg('AlarmGlobal.Volume')/100);
safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume);
say('Пора вставать! ');
if (gg('AlarmGlobal.weather') == 'Да') {
say('Температура за окном '.gg('Ekaterinburg.Temp').'. '.gg('Ekaterinburg.Type'));
}
$volume=round(65535*gg('ThisComputer.volumeLevel')/100);
safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume);
Код: Выделить всё
$volume=round(65535*gg('AlarmGlobal.Volume')/100);
safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume);
sleep(2);
say('Пора вставать! ');
if (gg('AlarmGlobal.weather') == 'Да') {
say('Температура за окном '.gg('Ekaterinburg.Temp').'. '.gg('Ekaterinburg.Type'));
}
sleep(5);
$volume=round(65535*gg('ThisComputer.volumeLevel')/100);
safe_exec('..\\apps\\nircmd\\nircmdc setsysvolume '.$volume);
Но если при этом запускать радио - громкость через sleep(5) вернется в положение ThisComputer.volumeLevel.
И собственно вопрос - как заставить все-таки дождаться выполнения предыдущего кода, а потом уже запускать далее?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<