Будильник

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

Модератор: immortal

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

Re: Будильник

Сообщение shemnik69 » Чт фев 19, 2015 10:52 am

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

Re: Будильник

Сообщение Smolalex » Чт фев 19, 2015 2:47 pm

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%
SergeyM
Сообщения: 100
Зарегистрирован: Вт ноя 11, 2014 5:16 pm
Откуда: Шатура
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Будильник

Сообщение SergeyM » Чт фев 19, 2015 3:49 pm

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

Re: Будильник

Сообщение Amarok » Пт фев 20, 2015 6:42 am

Завелось:
Clipboard01.jpg
Clipboard01.jpg (11.94 КБ) 12527 просмотров
СпойлерПоказать
Clipboard02.jpg
Clipboard02.jpg (33 КБ) 12527 просмотров
Шаблон:

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

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

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

setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$matches[1].':'.$matches[2]);
say("Установила",1); 
За это сообщение автора Amarok поблагодарил:
SergeyM (Пт фев 20, 2015 12:06 pm)
Рейтинг: 1.16%
Моя Алиска живёт на Proxmox в Debian 12
SergeyM
Сообщения: 100
Зарегистрирован: Вт ноя 11, 2014 5:16 pm
Откуда: Шатура
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Будильник

Сообщение SergeyM » Пт фев 20, 2015 12:06 pm

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

Re: Будильник

Сообщение Vovix » Пн фев 23, 2015 11:55 pm

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

Шаблон:

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

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

Re: Будильник

Сообщение Amarok » Вт фев 24, 2015 5:23 am

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

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

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

Re: Будильник

Сообщение supersuperoleg » Чт июл 23, 2015 9:14 pm

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

Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
За это сообщение автора supersuperoleg поблагодарили (всего 5):
skysilver (Чт июл 23, 2015 9:46 pm) • pdmitry2 (Пт июл 24, 2015 12:54 am) • kawkay (Вс июл 26, 2015 11:08 pm) • mirsum (Пн авг 24, 2015 12:21 am) • rtroyakov (Пн янв 11, 2016 9:49 am)
Рейтинг: 5.81%
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Будильник

Сообщение ErmolenkoM » Пт июл 24, 2015 12:49 pm

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

Re: Будильник

Сообщение nick7zmail » Чт авг 27, 2015 10:47 am

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

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

$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: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить