Для тех кто еще не знает, уже давно существует плагин Say The Weather, говорящий погоду на DLNA-совместимые устройства / Sonos / ImperiHome, но говорящий её исключительно по-английски, да и ветер в метрической системе там еще и в км/ч, что русскому человеку "режет слух".
В итоге было решено переделать плагин, дабы он говорил по-русски.
Дальше в описании и вложениях, речь идет о бета-версии переделанного плагина.
Благодарности: автору плагина JoeyD, dimis'у за идею и кусочек кода, Anzic'у за тестирование.
Возможные ограничения:
1). На UI5 работа не проверялась, под рукой уже нет такого контроллера.
2). Оригинальная функция Say location (говорящая об используемой метеостанции) заменена на приветствие, с указанием времени дня, дня недели и числа.
3). Оригинальный скрипт еще сильно не чистился от лишнего кода автора.
4). Невозможно использовать английский и русский одновременно. Если будет необходимость - доработаю этот вопрос, тогда отпадет нужна в 3 пункте.
5). Т.к. Weather Alerts судя по всему в России не используются, я их не переводил (если у кого-то вылезут - сделайте скриншот, плиз)
В остальном скрипт работает, как этого требовал автор плагина JoeyD.
Необходимые приготовления:
1) Требуется плагин Wunderground Weather App версии 1.5 или поздней и последняя версия (1.8) плагина Say The Weather App.
Следующие плагины являются опциональными, для воспроизведения на колонках Sonos, DLNA-совместимых устройствах и программе ImperiHome.
Без них плагин только готовит текстовую версию прогноза.
2) Опционально: Sonos App
3) Опционально: DLNA App
4) Опционально: Imperihome App
Установка:
1). Устанавливаем плагины Wunderground Weather App и Say The Weather.
2). На веб-морде Vera заходим в Apps > Develop Apps > Luup files
Нажимаем на Upload и загружаем следующие файлы:
Обязательно (без них ничего не будет работать) - I_SayTheWeather.xml, L_SayTheWeather.lua, D_SayTheWeather1.json
Опционально: L_DLNATTS.lua
Загрузка L_DLNATTS.lua требуется для тех, кто собирается воспроизводить погоду с помощью плагина DLNA App с помощью движка Microsoft TTS.
В скрипте я поменял битрейт на минимальный (на синтезированном голосе незаметно и дает мгновенный отклик) + сам голос изменен на более приятный мужской.
Если кому-то требуется максимальный битрейт - пересоберу второй.
Т.к. TTS от Google то работает, то нет, вот мини-инструкция, как ставить Microsoft TTS, на примере плагина DLNA App.
Для работы Microsoft TTS нам нужны
Microsoft Client Id: и
Microsoft Client Secret:
Чтобы их получить, нужно проделать шаги от 1 до 4 по нижеуказанной ссылке:
msdn.microsoft.com/en-us/library/mt146806.aspx
Полученные данные ввести в настройках плагина DLNA App
3). В плагине SayThe Weather мы видим следующие вкладки
a) Defaults -- Базовые настройки
b) Weather Alerts -- Оповещения, которые судя по всему в России не работают
c) Condition Phrases (1) -- Первые 10 фраз погодных условий
d) Condition Phrases (2) -- Вторая десятка фраз погодных условий
e) Temperature Phrases -- Фразы о температуре
f) Wind Speed Phrases -- Фразы о ветре
Параметры от "c" до "f" нужно поменять на русские фразы, это можно сделать с помощью скрипта weather.lua на мои базовые (во вложении) или вручную.
Для того чтобы поменять с помощью скрипта нужно открыть его в текстовом редакторе
и заменить в первой строчке "local STW_DEVICE=293", "293" на id Вашего плагина SayTheWeather.
Далее заходим в Apps > Develop Apps > Luup files, загружаем туда weather.lua.
Далее переходим в Apps > Develop Apps > Test Luup code (Lua), вводим туда:
local pogoda = require("weather.lua.lzo")
os.execute(pogoda)
Нажимаем GO
После этого фразы должы быть заменены.
Чтобы удалить скрипт, в Test Luup code (Lua), вводим:
os.remove("/etc/cmh-ludl/weather.lua.lzo")
Нажимаем GO
Полный синтаксис кода управления через luup запросы следующий:
Технически все параметры являются опциональными, т.к. плагин смотрит дефолтные значения, прописанные в Defaults.
P.S. не забываем, что Include Location это теперь Приветствие.
)
luup.call_action("urn:joeyd-com:serviceId:SayTheWeather1","SayTheWeather",
{DontSay = "",
RenderTargetID= "",
PrefixStatement="",
SuffixStatement="",
IncludeLocation="",
IncludeCurrentConditions="",
IncludeForecasts="",
IncludeAlerts = "",
Volume="",
SonosZone="",
SonosSameVolumeForAll="",
}
,[DeviceNumber])
DontSay="true/false" Если параметр равен true, то плагин только напишет прогноз, но не будет проговаривать его на необходимом устройстве.
RenderTargetID: ID плагина, управляющего "говорящим" устройством, например, ID DLNA App
PrefixStatement = "[любой текст]". Префикс (начальное приветствие) перед прогнозом погоды, например "Доброе утро!".
Может быть заменено параметром IncludeLocation (см. выше).
SuffixStatement = "[любой текст]". Суффикс (окончание) после прогноза погоды, например, "Хорошего дня!"
IncludeLocation="true / false". Если true - будет заменено на приветствие с текущим днем недели и числом.
IncludeCurrentConditions="true / false". Если true - добавит информацию о погоде на данный момент времени.
IncludeForecasts="01" Указывает, за какие дни требуется прогноз
0 указывает прогноз на сегодня, 1 на завтра и т.п. Плагин поддерживает запрос прогноза от 0 до 3 дней и зависит от метеостанции.
Например: чтобы получить прогноз на сегодня "0" и завтра "1" - указываем "01". Если только на послезавтра - указываем "2". На все дни - "0123", ну и т.д.
IncludeAlerts: "changes","all", or "none". Не работающие в России оповещения, будет сообщать об изменениях, все или не сообщать, соответственно.
Volume= [число от 1 до 100]. Громкость воспроизведения на устройстве. Если не указано - будет воспроизводить на громкости из вкладки Defaults.
SonosZone="[Зоны через запятую или 'ALL']" Указывает зоны Sonos'а, на которые требуется воспроизводить прогноз.
SonosSameVolumeForAll="true/false". Если true - то все зоны будут воспроизводить на одинаковом уровне громкости.
P.s. DeviceNumber это id плагина Say The Weather, а не устройства, которое будет проговаривать погоду.
Например:
luup.call_action("urn:joeyd-com:serviceId:SayTheWeather1","SayTheWeather",
{PrefixStatement="Доброе утро!"
SuffixStatement="Хорошего дня!"
IncludeLocation="false",
IncludeCurrentConditions="true",
IncludeAlerts = "ALL",
IncludeForecasts="01"
}
,[DeviceNumber])
Выдаст фразу:
Доброе утро! Сейчас на улице ясно, тепло, температура двадцать шесть градусов. Ветер слабый, четыре метра в секунду. Сегодня вероятны грозы и комфортно. Температура ночью девятнадцать градусов, днем двадцать семь градусов. Ветер умеренный, семь метров в секунду. Завтра переменная облачность и слегка прохладно. Температура ночью шестнадцать градусов, днем двадцать пять градусов. Ветер умеренный, семь метров в секунду. Хорошего дня!
Это вложение скрыто для гостей. Пожалуйста, авторизуйтесь или зарегистрируйтесь, чтобы увидеть его.
Это вложение скрыто для гостей. Пожалуйста, авторизуйтесь или зарегистрируйтесь, чтобы увидеть его.
P.S. добавил поддержку Responsive Voice взамен почившего в бозе движка от Google
Загрузить через веб-интерфейс и перезагрузить lua engine