Будильник

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

Модератор: immortal

Аватара пользователя
shemnik69
Сообщения: 590
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov

Re: Будильник

Сообщение shemnik69 »

msh555 спасибо за код. Точно пригодится. Даже знаю где... :D
Smolalex
Сообщения: 110
Зарегистрирован: Вт апр 29, 2014 9:16 pm

Re: Будильник

Сообщение Smolalex »

SergeyM писал(а):Коллеги!
Подскажите, а как сказать Алисе "Заведи будильник на шесть тридцать утра"?
Полазил по форуму - не нашел,
Создайте Шаблон поведения

будильник (\d+) часов (.+)

Код

setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$matches[1].':'.$matches[2]);
SergeyM
Сообщения: 100
Зарегистрирован: Вт ноя 11, 2014 5:16 pm
Откуда: Шатура

Re: Будильник

Сообщение SergeyM »

Smolalex:
так уже пробовал, не идет, говорит неизвестная команда.
Windows, Debian 8, 1-Wire
Connect
Аватара пользователя
Amarok
Сообщения: 1434
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Контактная информация:

Re: Будильник

Сообщение Amarok »

Завелось:
Clipboard01.jpg
Clipboard01.jpg (11.94 КБ) 12832 просмотра
SPOILERSPOILER_SHOW
Clipboard02.jpg
Clipboard02.jpg (33 КБ) 12832 просмотра
Шаблон:

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

будильник на (\d+) (.+) 
Код:

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

setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$matches[1].':'.$matches[2]);
say("Установила",1); 
Моя Алиска живёт на Proxmox в Debian 12
SergeyM
Сообщения: 100
Зарегистрирован: Вт ноя 11, 2014 5:16 pm
Откуда: Шатура

Re: Будильник

Сообщение SergeyM »

Спасибо!
так заработало.
Windows, Debian 8, 1-Wire
Connect
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Контактная информация:

Re: Будильник

Сообщение Vovix »

А я тут покопался, и мне кажется так будет лучше:

Шаблон:

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

(поставь|установи) будильник на (\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:
а также "выловит" ошибки с временем более 24 часов и минутами более 59 минут
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
Amarok
Сообщения: 1434
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Контактная информация:

Re: Будильник

Сообщение Amarok »

Vovix писал(а):Шаблон:

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

(поставь|установи) будильник на (\d+)(\s*)(часов|:)*(\s*)(\d*)
 
Я еще добавил слово "заведи"
Моя Алиска живёт на Proxmox в Debian 12
supersuperoleg
Сообщения: 8
Зарегистрирован: Сб июн 27, 2015 6:50 pm

Re: Будильник

Сообщение supersuperoleg »

Я только начал вникать в систему, и у меня немало времени ушло на понимание архитектуры. Я подробно расписал шаги по созданию будильника и создание Меню для будильника - может пригодится таким же новичкам, как я сам.

Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Контактная информация:

Re: Будильник

Сообщение ErmolenkoM »

supersuperoleg писал(а): Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
Для статичных материалов, есть ВиКи http://majordomo.smartliving.ru/
aka msh555
Cubian на Cubietruck, Connect
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: Будильник

Сообщение nick7zmail »

Небольшой вопрос по будильнику.
Хочу чтобы у будильника можно было выбирать громкость.
Добавил соответствующий слайдер и свойство AlarmGlobal.Volume.
111.jpg
111.jpg (34.55 КБ) 11639 просмотров
И включил в метод такой код:

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

$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); 
При этом будильник срабатывает на громкости системы, и после этого громкость скачет до AlarmGlobal.Volume и возвращается на ThisComputer.volumeLevel за доли секунды. Я догадываюсь, конечно в чем проблема: код на выполнение запускается весь разом, соответственно пока алиса говорит - параллельно запускается safe_exec, и меняет громкость сперва в минус потом в плюс моментом. Временно решил эту проблему как то так:

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

$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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить