Страница 4 из 9

Re: Будильник

Добавлено: Чт фев 19, 2015 10:52 am
shemnik69
msh555 спасибо за код. Точно пригодится. Даже знаю где... :D

Re: Будильник

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

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

Код

setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$matches[1].':'.$matches[2]);

Re: Будильник

Добавлено: Чт фев 19, 2015 3:49 pm
SergeyM
Smolalex:
так уже пробовал, не идет, говорит неизвестная команда.

Re: Будильник

Добавлено: Пт фев 20, 2015 6:42 am
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); 

Re: Будильник

Добавлено: Пт фев 20, 2015 12:06 pm
SergeyM
Спасибо!
так заработало.

Re: Будильник

Добавлено: Пн фев 23, 2015 11:55 pm
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 минут

Re: Будильник

Добавлено: Вт фев 24, 2015 5:23 am
Amarok
Vovix писал(а):Шаблон:

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

(поставь|установи) будильник на (\d+)(\s*)(часов|:)*(\s*)(\d*)
 
Я еще добавил слово "заведи"

Re: Будильник

Добавлено: Чт июл 23, 2015 9:14 pm
supersuperoleg
Я только начал вникать в систему, и у меня немало времени ушло на понимание архитектуры. Я подробно расписал шаги по созданию будильника и создание Меню для будильника - может пригодится таким же новичкам, как я сам.

Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.

Re: Будильник

Добавлено: Пт июл 24, 2015 12:49 pm
ErmolenkoM
supersuperoleg писал(а): Кстати неплохо было бы закреплять темы с готовыми решениями в топе страницы, а в заголовки тем, где получен ответ на вопрос, добавлять "Решено". Это сильно бы сэкономило время.
Для статичных материалов, есть ВиКи http://majordomo.smartliving.ru/

Re: Будильник

Добавлено: Чт авг 27, 2015 10:47 am
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.
И собственно вопрос - как заставить все-таки дождаться выполнения предыдущего кода, а потом уже запускать далее?