Страница 1 из 2

Алиса говорит ночью

Добавлено: Сб июл 25, 2015 8:51 pm
slgeo
Меня жена скоро выгонит из дома )
Дело в том, что Алиса начинает проговаривать время при переключении режимов времени суток, а конкретно в объекте DarknessMode в методе modeChanged на данной строке:

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

say("Режим ".$this->getProperty('title')." выключен."); 
Произносит именно текущее время, учитывая что рассвет нынче в 4-5 утра, это совсем не радует.
В истории выглядит так:
04:57 Алиса: Сейчас 4 часа 57 минут
04:57 Алиса: Режим Темное время суток выключен.
Откуда она его берет я никак не могу понять?
Если закомментировать вышеприведенную строку или убрать из нее $this->getProperty('title'), то время не произносится.
Куда копать?

Re: Алиса говорит ночью

Добавлено: Вс июл 26, 2015 8:25 am
Amarok
Сделать следующее:
1. Поправить строку оповещения

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

say("Режим ".$this->getProperty('title')." выключен.", 0); 
2. ThisComputer.minMsgLevel установить в 1

Re: Алиса говорит ночью

Добавлено: Вс июл 26, 2015 7:44 pm
slgeo
К сожалению это не помогает. Эмулирую рассвет:
выставил вручную у объекта ThisComputer свойства isDark = 1, minMsgLevel = 1, SunRise = 19:33
OperationalModes.modeChanged:

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

$this->setProperty("updated",time());
$this->setProperty("updatedTime",date('H:i'));
$ptitle = $this->getProperty('title');
if ($this->getProperty('active')) {
 say("Режим '.$ptitle.' активирован.",0);
} else {
 say("Режим ".$ptitle." выключен.",0);
} 
Стандартный кусок кода из OnNewMinute:

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

 if (timeBetween(getGlobal('ThisComputer.SunRise'),getGlobal('ThisComputer.SunSet')) && getGlobal('isDark')=="1") {
  setGlobal("isDark",0);
  callMethod('DarknessMode.deactivate');  
 } elseif (!timeBetween(getGlobal('ThisComputer.SunRise'),getGlobal('ThisComputer.SunSet')) && getGlobal('isDark')!="1") {
  setGlobal("isDark",1);
  callMethod('DarknessMode.activate');    
 }
 
  if (timeIs(getGlobal('ThisComputer.SunRise'))) {
  say('Всходит солнце');
 }
 if (timeIs(getGlobal('ThisComputer.SunSet'))) {
  say('Солнце заходит');
 }
Итого в истории получаю:

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

19:33 Алиса: Всходит солнце
19:33 Алиса: Сейчас 19 часов 33 минуты
19:33 Алиса: Режим Темное время суток выключен. 
И Алиса произносит время. Откуда она берет команду say(timeNow) уму непостижимо.
Искал по всей базе в поиске по слову "сейчас", тоже нигде не встречается.

Re: Алиса говорит ночью

Добавлено: Вт июл 28, 2015 5:14 pm
liv
проверьте шаблоны, у вас скорее всего есть шаблон с ключевым словом "время".

Алиса пишет "Режим Темное время суток выключен." и тут же срабатывает шаблон "время"

У меня самого такое было, тоже спрашивал на тут форуме.

Re: Алиса говорит ночью

Добавлено: Вс авг 09, 2015 11:33 pm
slgeo
Благодарю, действительно был шаблон "скажи время" и вероятнее всего он и срабатывал, поскольку в команде say переопределялся minMsgLevel.
Вопрос закрыт! Хотя такое срабатывание кажется немного некорректным.

Re: Алиса говорит ночью

Добавлено: Пн авг 10, 2015 3:28 pm
sergejey
В одном из обновлений была добавлена опция для шаблона поведения игнорировать системные сообщения, как раз для подобных случаев.

Re: Алиса говорит ночью

Добавлено: Пн авг 10, 2015 4:26 pm
liv
Сергей, я вот не обновляюсь, все жду... жду... когда будет реализована возможность работы сайта по протоколу https.

Я уже ранее писал, что доработки кода минимальные.
Может быть есть хотя бы в планах реализовать данный функционал?

через vpn тоже вариант, но все же хочется https, не всегда у провайдера возможен доступ через vpn

Re: Алиса говорит ночью

Добавлено: Пт сен 25, 2015 9:27 pm
nick7zmail
Внесу свои пару копеек в тему)). Помимо редких разговоров ночью - какого то фига винда издавала какие-то звуки ровно в 6 утра. Типа оповещений, но хз на что. Одним словом немного надоело, решил по-химичить.
Перво-наперво решаем как хотим все это дело контролировать. Я, например, создал вот такие компоненты в меню.
11.jpg
Пункты меню
11.jpg (48.51 КБ) 11696 просмотров
Далее выбираем объект, который будет использован для этого функционала. Я взял DarknessMode из OperationalModes, т.к. больше он у меня нигде не используется. Правильнее все таки создать/использовать название NightMode наверное). Такой тоже есть в последних версиях. У объекта создаем свойства DarknessMode.timeon, DarknessMode.timeoff, и DarknessMode.volumebefore (чуть позже поясню зачем).
22.jpg
Свойства
22.jpg (71.72 КБ) 11696 просмотров
Ну и наконец настраиваем методы activate

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

sg('DarknessMode.volumebefore', gg('ThisComputer.volumeLevel'));//Записываем текущую громкость в DarknessMode.volumebefore
CallMethod('ThisComputer.VolumeLevelChanged', array('VALUE'=>0)); //Выставляем системную громкость на 0   
и deactivate.

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

CallMethod('ThisComputer.VolumeLevelChanged', array('VALUE'=>gg('DarknessMode.volumebefore'))); //Возвращаем громкость на уровень до включения режима  
И наконец исполнительный код в OnNewMinute

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

//Ночной режим
if (timeIs(getGlobal('DarknessMode.timeon'))) {
  callMethod('DarknessMode.activate');
}
if (timeIs(getGlobal('DarknessMode.timeoff'))) {
  callMethod('DarknessMode.deactivate');
} 
Лучше все делать в классе OperationalModes, т.к. там подготовлены методы (activate/deactivate/modechanged) и свойства (active, title, updated). В итоге получаем что-то типа
33.jpg
Результат
33.jpg (21.73 КБ) 11696 просмотров

Re: Алиса говорит ночью

Добавлено: Пт сен 25, 2015 10:30 pm
skysilver
А что за звуки-то в 6 утра?! Прям интрига. :)

Re: Алиса говорит ночью

Добавлено: Сб сен 26, 2015 9:59 am
nick7zmail
skysilver писал(а):А что за звуки-то в 6 утра?! Прям интрига. :)
Знал бы я)) Что то формата отключилось/подключилось устройство. Возможно просто уведомление вылазило, ибо недавно обнаружил в центре уведомлений опрос - "какова вероятность, что вы порекомендуете windows 10" (да у меня сервак на 10ке =D...не спрашивайте зачем, сам не знаю). Возможно этот опрос как раз и напоминал о себе. Вставать смотреть было не вариант, ибо спал)).