NEWS
Хочу написать драйвер…
-
Предыстория: "Сидел" на Fhem'e.
Решил перейти на IoBroker. Естественно появилась масса вопросов. Хочу подключить отопительное оборудование.
Источник данных- шина EBUS (Vaillant). С шиной работает демон https://github.com/john30/ebusd. Все параметры нужных мне подсистем (Vaillant) могу получить через telnet или netcat от указанного демона. Пока начал грызть адаптер Wolf и адаптер KNX/EIBD. Подскажите уважаемые профессионалы:
1. Почему адаптер Wolf работает "сам", т.е без постороннего сокет-сервера как в случае KNX/EIBD?
2. Если нет ни одного подключения браузера к IoBroker'у, может ли модуль адаптера вести обмен с другим сокет-сервером, и записывать данные значения/состояния в базу Redis (CouchDB)?
-
Предыстория: "Сидел" на Fhem'e.
Решил перейти на IoBroker. Естественно появилась масса вопросов. Хочу подключить отопительное оборудование.
Источник данных- шина EBUS (Vaillant). С шиной работает демон https://github.com/john30/ebusd. Все параметры нужных мне подсистем (Vaillant) могу получить через telnet или netcat от указанного демона. Пока начал грызть адаптер Wolf и адаптер KNX/EIBD. Подскажите уважаемые профессионалы:
1. Почему адаптер Wolf работает "сам", т.е без постороннего сокет-сервера как в случае KNX/EIBD? `
Для каждого драйвера применяется разный подход. Если протокол сложный (zwave, knx), то имеет смысл использовать готовый сервис и к нему подключится.
Есть сложные протоколы, но для них есть node.js решения (sonos, s7, mqtt). Лучше использовать node.js модули, т.к. драйвера получаются мультиплаттформенными.
Если простой протокол (wolf, modbus, megad), то можно запрограммировать всё в node.js, что бы упростить установку драйвера и разработку.
> 2\. Если нет ни одного подключения браузера к IoBroker'у, может ли модуль адаптера вести обмен с другим сокет-сервером, и записывать данные значения/состояния в базу Redis (CouchDB)?
Да. Конечно. Это не php или perl.Кстати пока базы нет. Используется inmemory самописная база данных, но хочу её вернуть.
-
Bluefox спасибо за ответ, подскажите как бы Вы поступили с этой задачей.
Демон шины EBUS работает в таких режимах:
-
при получении команды find выдает полную таблицу параметров (и значений параметров) системы отопления в виде "ИмяПодсистемы";"ИмяПараметра";"ЗначениеПараметра"
-
при получении команды read "ИмяПодсистемы" "ИмяПараметра" выдает только одно "ЗначениеПараметра"
-
при получении команды write "ИмяПодсистемы" "ИмяПараметра" "ЗначениеПараметра" принимает и записывает только одно "ЗначениеПараметра"
-
при получении команды listen выдает с интервалом 1-5 сек те значения параметров которые изменились и которые указаны в настройках демона как <u>оперативные</u>, т. е. время, температуры по контурам, темп. подачи, обратки, вкл.выкл насосов по контурам и пр., но при этом (находясь в режиме listen) параллельно демон может обрабатывать также и read/write.
Предварительно склоняюсь к мысли что нужен tcp сокет-сервер. Не ясно куда писать значения параметров оперативные/настроечные и как это все связать с визуализацией, и управлением (т.е write для демона при изменении настроечных параметров).
Спасибо!
-
-
Ну демон вроде как не простой, то имеет смысл его отдельно запускать и подсоединяться из драйвера уже к нему.
Может из драйвера им управлять? Запускать и останавливать.
А какой интерфейс у него для коммуникации? Command line interface?
> при получении команды listen
через что он её получает? -
Danke Bluefox! Временно отсутствовал.
Демон работает все время и "слушает" шину EBUS отопительной системы (т.е. читает все так называемые телеграммы на шине, декодирует их, переводит в вид "ИмяПодсистемы";"ИмяПараметра";"ЗначениеПараметра"). Демон имеет также внутри себя tcp сервер, который слушает заданный при запуске порт. Таким образом я имею на localhost:8888 доступ к этому демону по CLI Command line interface через telnet или netcat.
Интересным является еще такой момент. Через telnet (netcat) localhost:8888 можно подключиться например трижды. Открываю три окна терминала и в каждом запускаю telnet (netcat) localhost:8888, тогда в одном окне терминала я выдаю команду listen и вижу изменющиеся оперативные параметры/их значения, в другом окне терминала могу делать read, а в третьем write в виде (см. пост 1).
Какая идеология драйвера (адаптера) IoBroker была бы оптимальной/разумной?
Спасибо.