О Z-Wave
Казалось бы, что может проще, чем узнать какая сейчас погода – для этого достаточно просто выглянуть в окно или выйти на улицу, но компьютеру поступить также весьма затруднительно. Здесь и возникают вопросы – в интерфейсе UI5 контроллера умного дома VeraLite эти данные не присутствуют по умолчанию, нельзя просто взять и указать источник данных. Требуется специальный погодный плагин или физические устройства, большинство которых не создано для работы в сети Z-Wave, а через дополнительные плагины подключаются к VeraLite.
Но зачем нужна информация о погоде за окном дома? Можно использовать эти данные в различных сценариях домашней автоматизации, например, включать кондиционер в зависимости от температуры и состояния погоды (солнечно, дождливо, …); приоткрывать окно, для того чтобы проветрить комнату, когда повышается уровень углекислого газа в комнате; закрывать шторки в солнечный день, вариантов может быть много.
Было найдено пять решений получения погодных данных в VeraLite, начиная от бесплатного плагина и погодных станций, которые работают сразу из коробки до наборов сделай сам (DIY), информация приведена ниже в таблице 1.
|
Источники данных о погоде |
||||
Параметры |
Wunderground Weather Plugin |
RfxCom RFXtrx433 + Oregon Scientific |
Netatmo Weather Station |
MySensors |
AirPi |
1 |
2 |
3 |
4 |
5 |
6 |
Тип устройства |
виртуальный плагин |
трансивер + погодные датчики |
готовое решение, погодная станция |
DIY, требуются радиотехнические навыки |
DIY, требуются радиотехнические навыки, продается в виде набора |
Погодные параметры |
|||||
Температура |
да |
да |
да |
да |
да |
Влажность |
да |
да |
да |
да |
да |
Атмосферное давление |
нет |
да |
да |
да |
да |
Количество осадков |
нет |
да |
да |
частично (только индикация есть или нет) |
нет |
Скорость и направление ветра |
да |
да |
нет |
да |
нет |
Дополнительные параметры |
|||||
Углекислый газ (CO2) |
нет |
нет |
да |
да |
да |
Ультрафиолетовое излучение |
нет |
да |
нет |
да |
да |
Освещенность |
нет |
нет |
нет |
да |
да |
Задымленность |
нет |
нет |
нет |
да |
да |
Шум |
нет |
нет |
да |
да |
да |
Общие сведения |
|||||
Отображение информации в VeraLite |
да |
да |
да |
да |
на текущий момент нет |
Класс водозащиты устройства |
не требуется |
только у уличных датчиков |
только у уличных датчиков |
частично, только у некоторых датчиков |
нет |
Сайт |
*1 |
*2 |
*3 |
*4 |
*5 |
Компоненты цены |
нет |
90$ за RFXtrx433 + стоимость датчиков Oregon Scientific |
150$ базовая версия + 50$ за датчик дождя |
любой из датчиков стоит менее 4$, но датчик CO2 – 80$, датчик скорости ветра – 50$, если их не использовать, то итоговая цена самая низкая из представленных в таблице |
90$ за комплект AirPi со всеми датчиками +стоимость Raspberry Pi 40$ |
Итоговая цена |
бесплатно |
~300$ |
200$ |
~170$ |
~130$ |
Таблица 1. Сводная информация о источниках погодных данных в контроллере VeraLite.
В первой части обзора будет рассмотрен программный плагин и его применение, во второй части обзора – устройства, получающие информацию с собственных датчиков.
1. Бесплатный источник погодных данных – дополнение Wunderground Weather Plugin из магазина приложений
Если искать слово «погода» в магазине приложений MiOS, то результаты не порадуют, поскольку там присутствует только один погодный плагин «Wunderground Weather Plugin», который получает погодные данные с одноименного сайта. Простая установка этого дополнения не принесет желаемого результата – данные о погоде не появятся в интерфейсе умного дома, ведь для того, чтобы начать получать данные с этого сервиса необходимо, помимо установки плагина, зарегистрироваться в качестве разработчика на сайте Weather Wunderground, получить ключ к API и только после ввода ключа в интерфейсе UI5 VeraLite плагин будет показывать информацию.
Weather Wunderground - американская компания из Калифорнии, которая специализируется на предоставлении информации в коммерческих целях.
Рис. 1. Логотип Weather Wunderground
Давайте разберемся, откуда сервис берет данные в России. Просматривая их сайт, можно сделать вывод, что источник информации – метеослужбы, расположенные в аэропортах городов, поскольку в прогнозе идет ссылка на код METAR. METAR (METeorological Aerodrome Report) – авиационный метеорологический код для передачи сводок о фактической погоде на аэродроме. Сводки в коде METAR содержат данные о скорости и направлении ветра, видимости, дальности видимости на взлетно-посадочной полосе, атмосферных явлениях, облачности, температуре воздуха, температуре точки росы, атмосферном давлении, прогнозе на посадку типа «Тренд» (на ближайшие 2 часа).
Приступим к выполнению шагов, для того чтобы погода появилась в UI5 VeraLite. Начать надо с регистрации на их сайте. Создаем учетную запись по ссылке (http://www.wunderground.com/weather/api/d/login.html), рис. 2.
Рис. 2. Начало регистрации в качестве разработчика на Weather Wunderground
После того, как вы введете адрес своей электронной почты, пароль и отображаемое имя на указанный адрес электронной почты вы получите ссылку для активации профиля, пройдите по ней для активации, но переход заканчивается ошибкой! Просто заходите под заново созданным логином и паролем на сайт (http://www.wunderground.com/weather/api/d/login.html) и переходите в раздел цен (http://www.wunderground.com/weather/api/d/pricing.html), где можете выбрать любой тарифный план, рис. 3, если не планируете генерировать более 500 запросов к сайту в день, что более чем достаточно для работы плагина.
Рис. 3. Выбор тарифного плана на Weather Wunderground с нулевой оплатой
После этого вам будет предложено заполнить форму проекта для получения нами искомого ключа API, рис. 4. Здесь можно указать любую информацию, главное, чтобы все поля были заполнены, например, как на рис. 4 ниже.
Рис. 4. Форма проекта для получения ключа API
Сразу после этого автоматически генерируется ключ, который можно сохранить для дальнейшего использования. Длина ключа 16 символов.
Половина дела сделана, переходим к настройке VeraLite. Для начала настроим наше местонахождение, если оно еще не задано. Переходим в "Установка / Местонахождение" в интерфейсе VeraLite и указываем текущий город, если он не был задан, рис. 5.
Рис. 5. Настройка текущего местоположения
Далее, предварительно выполнив в ход в систему под своим именем (иначе он не даст доступ к магазину приложений) переходим Приложения / Установить приложения и устанавливаем плагин Wunderground Weather Plugin. Плагин создаст виртуальное устройство World Weather, в которое надо вписать ключ API Weather Wunderground, рис. 6. Также в этом окне можно выбрать метрическую систему мер и изменить период проверки погоды в секундах (параметр Polling).
Рис. 6, 7. Окна настройки виртуального устройства World Weather
После этого наслаждаемся отображением погоды в контроллере, рис. 8.
Рис. 8. Внешний вид Wunderground Weather Plugin в интерфейсе UI5 VeraLite
1.1. Продвинутый уровень использования погодных данных Wunderground Weather Plugin
Теперь через LUUP можно получать статусы погоды и использовать их в своих сценариях, опираясь на температуры, направления ветра и погоду. Всего в плагине существует 27 погодных состояний и 17 направлений ветра, отображенных соответственно в таблице 2 и 3 приложения к данной статье.
Рассмотрим конкретный пример управления. Допустим, что установлены мультисенсор FGMS-001 компании FIBARO *6, устройство управления кондиционерами Remoteс ZXT-120 *7, устройство открывания окон Fakro Chain Drive ZWS230 компании FAKRO *8 и любой кондиционер (номера устройств в сети Z-Wave приведены на рис. 7,9,10) и вы хотите поддерживать комфортную температуру в помещении. Для того, чтобы это сделать, надо прописать определенные правила на контроллере. Логика будет следующая: утром, скажем в 11 часов, проверяется ряд условий: внешняя температура, температура внутри помещения и состояние погоды (солнечно, ветрено, ясно, … см. таблицу 2). Если внешняя температура больше 25 градусов Цельсия, на улице солнечно или ясно, температура внутри помещения также больше 25 градусов, то включается кондиционер. А если направление ветра восточное, или немного от него отличается (см. таблицу 3), то дополнительно открывается окно.
Создадим две отдельные сцены: одна на включение кондиционера и открытие окна, вторая на выключение кондиционера.
Рис. 09, 10. Номера устройств для дальнейшего использования в коде LUUP
Для создания обоих сцен идем во вкладку Автоматизация / Новая сцена / LUUP и вставляем следующий, снабженный комментариями, код (во избежание ошибок рекомендуется скачать на компьютер файл, прилагаемый после данного кода):
--Управление кондиционером и открывание окна--ВКЛ по расписанию в NN часов
local outsideTemp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 21) --внешняя температура из плагина Wunderground Weather Plugin, номер устройства 21
outsideTemp = tonumber (outsideTemp)
local WeatherConditionGroup = luup.variable_get("urn:upnp-micasaverde-com:serviceId:Weather1", "ConditionGroup", 20) --считываем состояние погоды, как в таблице 2 статьи
local WeatherWindDirection = luup.variable_get("urn:upnp-micasaverde-com:serviceId:Weather1", "WindDirection", 20) --считываем направление ветра, как в таблице 3 статьи
local Temp1 = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 12) --температура с датчика FGMS-001 компании FIBARO
Temp1 = tonumber(Temp1)
local TempZXT120 = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 81) --температура с устройства управления кондиционерами Remoteс ZXT-120
TempZXT120 = tonumber(TempZXT120)
if outsideTemp > 25 and ((WeatherConditionGroup == "clear") or (WeatherConditionGroup == "sunny")) and Temp1>25 and TempZXT120>25 then
luup.call_action("urn:upnp-org:serviceId:SwitchPower1","SetTarget",{ newTargetValue="1" },81) --включаем кондиционеры
end
if WeatherWindDirection == "West" or WeatherWindDirection == "WNW" or WeatherWindDirection == "WSW" then
luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget", {newLoadlevelTarget = "1"}, 90) --открываем окно
end
--ВЫКЛ кондиционера по срабатыванию двериlocal outsideTemp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 21) --внешняя температура из плагина Wunderground Weather Plugin
outsideTemp = tonumber (outsideTemp)
local WeatherConditionGroup = luup.variable_get("urn:upnp-micasaverde-com:serviceId:Weather1", "ConditionGroup", 20)
if outsideTemp > 25 and ((WeatherConditionGroup == "clear") or (WeatherConditionGroup == "sunny")) then
luup.call_action("urn:upnp-org:serviceId:SwitchPower1","SetTarget",{ newTargetValue="0" },81) --выключаем кондиционерыend
Далее обязательно надо нажать Сохранить lua и можно переходить к триггерам – когда именно должен сработать код: например, включение кондиционера и открытие окна происходит в определённое время, а вторая сцена запускается после того как срабатывает датчик входной двери.
Как можно увидеть, контроллер Vera позволяет очень гибко, в соответствии с потребностями, реализовывать любые правила при наличии исполнительных устройств и исходных параметров, требующихся для принятия управленческих решений в умном доме.
Итоги:
В первой части статьи мы подробно познакомились с настройкой бесплатного плагина для интерфейса UI5 Vera3 и VeraLite, используя который можно получать погодные данные, но если вам нужна точность и достоверность, то необходимо использовать собственные погодные решения. Ожидайте публикации обзора «Достоверная погода в доме, управляемом VeraLite», из которого вы сможете узнать о:
• получение уличных данных с помощью связки, состоящей из трансивера RfxCom RFXtrx433 и датчиков Oregon Scientific;
• точных данных не только о погоде, но и состоянии внутри дома с помощью погодной станции Netatmo Weather Station;
• том, как, не переплачивая за лишние функции, получить только необходимую информацию о погоде с проектом MySensors на базе Arduino;
• о сборке конструктора для погоды внутри дома на базе Raspberry Pi;
• и о том, как сохранять и обрабатывать поступающую с разных датчиков информацию.
Ссылки, упоминаемые в статье:
*1. http://code.mios.com/trac/mios_weather
*2. http://www.rfxcom.com/oregon.htm
*3. https://www.netatmo.com/
*4. http://www.mysensors.org/store
*5. https://www.tindie.com/products/tmhrtly/airpi-kit/
*6 http://www.z-wave.ru/shop/category/datchiki/multisensory/datchik-dvizheniya-osveshchennosti-temperatury.html
*7 http://www.z-wave.ru/shop/category/termostaty/z-wave-ac-ir-preobrazovatel.html
*8 http://www.fakro.ru/htmlru/sistemi-avtamaticheskogo-otkrivaniya/z-wave/
Приложения.
Таблица 2. Погодные состояния параметра WeatherConditionGroup в коде LUUP.
№ |
Состояние погоды |
Значения параметра WeatherConditionGroupв коде LUUP |
Картинка |
1. |
Chance of Flurries |
chanceflurries |
|
2. |
Chance of Rain |
chancerain |
|
3. |
Chance Rain |
chancerain |
|
4. |
Chance of Freezing Rain |
chancesleet |
|
5. |
Chance of Sleet |
chancesleet |
|
6. |
Chance of Snow |
chancesnow |
|
7. |
Chance of Thunderstorms |
chancetstorms |
|
8. |
Chance of a Thunderstorm |
chancetstorms |
|
9. |
Clear |
clear |
|
10. |
Cloudy |
cloudy |
|
11. |
Flurries |
flurries |
|
12. |
Fog |
fog |
|
13. |
Haze |
hazy |
|
14. |
Mostly Cloudy |
mostlycloudy |
|
15. |
Mostly Sunny |
mostlysunny |
|
16. |
Partly Cloudy |
partlycloudy |
|
17. |
Partly Sunny |
partlysunny |
|
18. |
Freezing Rain |
sleet |
|
19. |
Rain |
rain |
|
20. |
Sleet |
sleet |
|
21. |
Snow |
snow |
|
22. |
Sunny |
sunny |
|
23. |
Thunderstorms |
tstorms |
|
24. |
Thunderstorm |
tstorms |
|
25. |
Unknown |
unknown |
|
26. |
Overcast |
cloudy |
|
27. |
Scattered Clouds |
partlycloudy |
Таблица 3. Направление ветра, параметр WindDirection в коде LUUP.
№ |
Направление ветра |
Значения параметра WindDirection в коде LUUP |
1. |
East |
East |
2. |
East-northeast |
ENE |
3. |
East-southeast |
ESE |
4. |
Northeast |
NE |
5. |
North-northeast |
NNE |
6. |
North-northwest |
NNW |
7. |
North |
North |
8. |
Northwest |
NW |
9. |
Southeast |
SE |
10. |
South |
South |
11. |
South-southeast |
SSE |
12. |
South-southwest |
SSW |
13. |
Southwest |
SW |
14. |
Variable |
Variable |
15. |
West |
West |
16. |
West-northwest |
WNW |
17 |
West-southwest |
WSW |
Информация актуальна на дату написания статьи: декабрь 2014 года.
Автор: Михаил Шардин