Модуль работы с Vera lite

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Модуль работы с Vera lite

Сообщение SergNB » Вс ноя 29, 2015 11:51 pm

Поскольку сеть z-wave с контроллером Vera lite у меня есть, а возможностей на Vera реализовать все свои хотелки у меня нет, то я начал искать, что вообще есть по умным домам и нашел MJD. Проект мне очень понравился, огромнейшее спасибо
Сергею за проделанную работу!
Сам я ни разу не программист, если не считать, что в детстве видел Basic... на ZX-Spectrum... издалека... на этом мое программирование заканчивается. В общем-то из-за этого я не могу реализовать свои желания на Vera, хотя технически для этого там все есть, можно самому писать плагины или модифицировать имеющиеся и даже вроде бы все описывается обычным xml-ем.
Но, для любой внешней интеграцией (даже с тем же погодным сайтом) нужен плагин и далеко не для всего они есть, а писать свой, я пока не готов. Поэтому, поставил MD и пробую настраивать.

Для интеграции MD с Vera можно использовать http-запросы. Т.е. все, что сконфигурировано в Vera легко управляется по http.

Например (пробел вставлен чтобы ссылка не укорачивалась):
http:// 192.168.1.34:3480/data_request?id=lu_action&DeviceNum=19&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1

http:// 192.168.1.34:3480/data_request?id=lu_action&DeviceNum=19&serviceId=urn:upnp-
org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0
Установить значение устройства 19 (реле на свет) 1 или 0, где 1 - включить, 0 - выключить

Или
http://192.168.1.34:3480/data_request?i ... lTarget=30
Установить диммеру с номером 23, значение 30 (30% яркости)

Или
http://192.168.1.34:3480/data_request?i ... eviceNum=7
Получить данные с устройства 7 (температурный датчик)
В ответ приходит:
{ "Device_Num_7": { "states": [ { "id": 80, "service": "urn:upnp-org:serviceId:TemperatureSensor1", "variable": "CurrentTemperature", "value": "24" }...

В целом, интеграция выглядит несложно, но поскольку, как я уже сказал, что далеко не программист, то дается мне это крайне тяжко.
За вчерашний вечер я научился получать http-запросом температуру и вписывать её во вкладку климат. Для этого использовал веб-переменные, где переменная устанавливается http-запросом, а дальше отображается в меню. Насколько это рационально, пока не понял.

За сегодняшний вечер научился управлять диммером, опять же через меню управления и элемент "Выключатель". Самое сложное было найти подходящий пример кода, который отправляет http-запрос.
Эх, почти час ушел на поиск вот этих волшебных строк
getURL("http://192.168.0.67/cgi-bin/master?op=s ... in').";",0);
$this->setProperty("status",1);

Ну а дальше, поскольку читать переменные с устройства и посылать управляющие запросы получилось, то осталось только масштабировать это на все имеющиеся устройства в z-wave.
Отсюда и вопрос, может быть я изобретаю велосипед? Может быть до меня это уже все сделано, а я не нашел нужной темы?
Если уже есть, подскажите пожалуйста.

А если еще нет, то вопрос к Сергею, насколько сложно создать http-интеграцию с Vera?
Вся конфигурация Vera выгружается в xml файл, а управляются все устройства однотипно.

Типов устройств не так много, вот все основные примеры. http://wiki.micasaverde.com/index.php/L ... ts#actions

Sends a UPnP action.
To call the action for a single device, use DeviceNum.
To call the action for all devices in the same category, use Category.
Examples:
Turn off a light:
http://ip_address:3480/data_request?id=action&output_format=xml&DeviceNum=6&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0
Set a dimmable light to 30%:
http://ip_address:3480/data_request?id=action&output_format=json&DeviceNum=7&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=30
Run a scene:
http://ip_address:3480/data_request?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=<SceneNum>
Turn off all lights:
http://ip_address:3480/data_request?id=action&output_format=xml&Category=999&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0
Arm all sensors:
http://ip_address:3480/data_request?id=action&output_format=xml&Category=4&serviceId=urn:micasaverde-com:serviceId:SecuritySensor1&action=SetArmed&newArmedValue=1
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль работы с Z-Wave устройствами

Сообщение sergejey » Пн ноя 30, 2015 11:07 am

Мне кажется, что модуль интеграции с VeraLight был бы идейно более правильный, нежели прямая работа с каждым устройством по http. Я могу попробовать написать такой модуль, но надо на это время :) Пока даже не знаю, что ответить, когда именно смог бы заняться... Возможно, на этой неделе смог бы что-то набросать. А у контроллера есть какой-нибудь механизм обратной связи, чтобы можно было знать что сработал какой-то датчик движения, к примеру?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение SergNB » Пн ноя 30, 2015 11:25 pm

Сергей, очень рад оперативному ответу!
Если будет модуль, то будет супер и вероятно многие владельцы Vera скажут огромное спасибо!
По срокам я не тороплюсь, понимаю, что твоя занятость огромна и это далеко не приоритетный модуль (раз он еще не появился за столько лет). Все равно жду из Китая RPi где и будет развернута постоянная версия Majordomo.

По поводу обратной связи.
При выполнении запроса с активным действием к Vera на ней создается Job, который это действие и пытается выполнить. Если устройство в данный момент online (а это все устройства с постоянным питанием, диммеры, реле, краны...), то джоб сразу же выполняется, а если устройство спит (а это большинство устройств на батарейках, термостаты, датчики...), то джоб становится в очередь и ждет, пока устройство проснется.

Т.е. для получения обратной связи необходимо:
1) Либо запросить состояние джоба через некоторое время
2) Либо напрямую запросить статус устройства к которому отправлялась команда.

Пример
На активное действие
http:// 192.168.1.34:3480/data_request?id=action&output_format=json&DeviceNum=19&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=30

создается джоб и в ответе приходит его ID.

Приходит такой ответ JSON
{ "u:SetLoadLevelTargetResponse": { "JobID": "3462" } }

или такой XML (смотря что задано в запросе)
<u:SetLoadLevelTargetResponse xmlns:u="urn:schemas-upnp-org:service:Dimming:1">
<JobID>3465</JobID>
</u:SetLoadLevelTargetResponse>

После этого можно запросить статус джоба
http://192.168.1.34:3480/data_request?i ... s&job=3465
И будет такой ответ
{ "status": -1 }

где возвращаются следующие err_codes
-1: No job, i.e. job doesn't exist.
0: Job waiting to start.
1: Job in progress.
2: Job error.
3: Job aborted.
4: Job done.
5: Job waiting for callback. Used in special cases.
6: Job requeue. If the job was aborted and needs to be started, use this special value.
7: Job in progress with pending data. This means the job is waiting for data, but can't take it now.

Я предполагал, что будет ответ 4, но видимо после выполнения джоб сразу вытирается из памяти, поэкспериментирую еще на длинных джобах.

Либо, можно сразу запросить статус устройства.
http:// 192.168.1.34:3480/data_request?id=variableget&DeviceNum=19&serviceId=urn:upnp-org:serviceId:Dimming1&Variable=LoadLevelStatus

Получив в ответ статус
30
SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение SergNB » Пн ноя 30, 2015 11:37 pm

Для корректной проверки того, что http запрос успешно доставлен до Vera и она его выполнит, достаточно в ответе распарсить наличие "JobID". Если это выключатели или диммеры, то результат будет виден пользователю мгновенно (т.е. задержка меньше секунды).

У меня только одно исполняющее устройство с длительным временем сна (300 сек) и это термостат Danfoss Living Connect. Т.е. если посылать команду ему, то имеет смысл проверить успешность её исполнения только через 300 сек, а в остальных случаях, либо через 5-60 сек (для батарейных устройств), либо через 1 секунду в случае запитанных устройств.

Для всех интересующихся, чтобы не плодить темы, могу здесь же ответить на разные вопросы по опыту работы с Z-wave (если Сергей будет не против, а то это все таки немного оффтопик).
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль работы с Vera lite

Сообщение sergejey » Вт дек 01, 2015 1:31 pm

А можно будет организовать доступ к этому http-интерфейсу извне для тестирования?
Ещё, может где-то есть полная документация по API? По ссылкам есть примеры, но не полный список поддерживаемых команд. Или они из XML вытягиваютя?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль работы с Vera lite

Сообщение SergNB » Вт дек 01, 2015 5:58 pm

Доступ попробую вечером организовать, судя по описанию там есть нюансы при доступе из локальной сети и из внешней сети (аналогично MD).

На этой странице вроде бы перечислены все возможные команды API
http://wiki.micasaverde.com/index.php/Luup_Requests

Если чего-то не хватает, то можно будет дополнить позже, но по беглой оценке, указанные команды покрывают весь функционал.
SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль работы с Vera lite

Сообщение SergNB » Вт дек 01, 2015 6:04 pm

Подумал тут еще ночью, что для полного и быстрого взаимодействия MD и Vera необходима двусторонняя интеграция.
Для этого теоретически можно в Vera настроить отсылку http запроса в MD при изменении состояния какого-либо устройства. В этом случае, если физическим выключателем включили свет, то информация об этом сразу отобразится как в Vera, так и в MD.

Для начала это можно сделать для датчиков движения, диммеров и реле. Для остальных датчиков (температура, влажность, освещенность) такая быстрая реакция не требуется, если на эти параметры не завязаны какие-либо сцены.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль работы с Vera lite

Сообщение sergejey » Вт дек 01, 2015 6:10 pm

SergNB писал(а):Подумал тут еще ночью, что для полного и быстрого взаимодействия MD и Vera необходима двусторонняя интеграция.
Для этого теоретически можно в Vera настроить отсылку http запроса в MD при изменении состояния какого-либо устройства. В этом случае, если физическим выключателем включили свет, то информация об этом сразу отобразится как в Vera, так и в MD.

Для начала это можно сделать для датчиков движения, диммеров и реле. Для остальных датчиков (температура, влажность, освещенность) такая быстрая реакция не требуется, если на эти параметры не завязаны какие-либо сцены.
А у Vera есть такая опция? (обратной связи)
Как вариант, опрашивать состояние всех устройств, но это не мгновенная реакция на изменение, как вы понимаете.

По той ссылке не вся документация -- там примеры основных команд, но, к примеру, есть команда выключения света, но нет включения. Исходя из вида ссылки, можно понять, как изменить параметры, но это всё-таки не формальная документация, где описаны все параметры и их возможные значения.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль работы с Vera lite

Сообщение SergNB » Вт дек 01, 2015 9:51 pm

К сожалению более подробной информации по командам я не нашел.
Но, вот наткнулся на страницу с описанием различных устройств и их переменных
http://wiki.micasaverde.com/index.php/L ... nd_Actions
SergNB
Сообщения: 15
Зарегистрирован: Вс ноя 29, 2015 11:13 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль работы с Vera lite

Сообщение SergNB » Вт дек 01, 2015 9:57 pm

sergejey писал(а): А у Vera есть такая опция? (обратной связи)
Напрямую нет. Поэтому я и предлагаю в Vera реализовать необходимые донастройки (это я сам сделаю), например насоздавать триггеров на изменение состояния устройств с выполнением кода отсылки своего состояния http запросом в MD.

Т.е. будет триггер, который активируется, когда диммер включения света изменил свое состояние и при активации триггера выполняется LuuP Code (LUA), в котором считывается новое состояние диммера и собранная инфа по http отсылается в MD.
Ответить