Страница 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 (48.51 КБ) 11696 просмотров
Далее выбираем объект, который будет использован для этого функционала. Я взял DarknessMode из OperationalModes, т.к. больше он у меня нигде не используется. Правильнее все таки создать/использовать название NightMode наверное). Такой тоже есть в последних версиях. У объекта создаем свойства DarknessMode.timeon, DarknessMode.timeoff, и DarknessMode.volumebefore (чуть позже поясню зачем).

- Свойства
- 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 (21.73 КБ) 11696 просмотров
Re: Алиса говорит ночью
Добавлено: Пт сен 25, 2015 10:30 pm
skysilver
А что за звуки-то в 6 утра?! Прям интрига.

Re: Алиса говорит ночью
Добавлено: Сб сен 26, 2015 9:59 am
nick7zmail
skysilver писал(а):А что за звуки-то в 6 утра?! Прям интрига.

Знал бы я)) Что то формата отключилось/подключилось устройство. Возможно просто уведомление вылазило, ибо недавно обнаружил в центре уведомлений опрос - "какова вероятность, что вы порекомендуете windows 10" (да у меня сервак на 10ке =D...не спрашивайте зачем, сам не знаю). Возможно этот опрос как раз и напоминал о себе. Вставать смотреть было не вариант, ибо спал)).