Перейти к содержанию

Навигация

Wb-mqtt-serial driver: различия между версиями

Добавил диаграмму таймаутов опроса, взял на гитхабе
(Добавил диаграмму таймаутов опроса, взял на гитхабе)
(не показаны 22 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Драйвер wb-mqtt-serial}}
{{DISPLAYTITLE: Драйвер wb-mqtt-serial}}
'''ВНИМАНИЕ:''' драйвер ''wb-mqtt-serial'' ранее назывался ''wb-homa-modbus'', а конфигурационный файл <code>/etc/wb-mqtt-serial.conf</code> как <code>/etc/wb-homa-modbus.conf</code>. Учитывайте это, если используете устаревшие прошивки.
[[Image: wb-mqtt-serial a few protocols.png |500px|thumb|right| Драйвер wb-mqtt-serial может одновременно опрашивать устройства, работающие по разным протоколам: <br> ​1 — виртуальный порт для устройств с протоколом Modbus TCP,<br> 2  — устройство работает по протоколу Modbus RTU,<br> 3 — устройство работает по протоколу DLMS]]
 
== Описание ==
== Описание ==
Драйвер <code>wb-mqtt-serial</code> служит для работы с подключенными по шине [[RS-485|RS-485]] устройствами через систему [[MQTT|MQTT]]-сообщений.
{{note|note| Драйвер ''wb-mqtt-serial'' ранее назывался ''wb-homa-modbus'', а конфигурационный файл <code>/etc/wb-mqtt-serial.conf</code> — <code>/etc/wb-homa-modbus.conf</code>. Учитывайте это, если используете устаревшие прошивки.}}
Драйвер <code>wb-mqtt-serial</code> служит для работы с подключенными по последовательным портам, в том числе [[RS-485|RS-485]], устройствами через систему [[MQTT|MQTT]]-сообщений.


Полное описание драйвера смотрите [https://github.com/contactless/wb-mqtt-serial в репозитории на Github].
Полное описание драйвера смотрите [https://github.com/contactless/wb-mqtt-serial в репозитории на Github].


==Поддерживаемые протоколы==  
== Поддерживаемые устройства ==
Полный список поддерживаемых устройств можно посмотреть в таблице [[Поддерживаемые устройства#Протестированные устройства сторонних производителей |Протестированные устройства сторонних производителей]].
=== Перечень ===
Драйвер поддерживает некоторые устройства, который работают по протоколам:
* [[Modbus | Modbus RTU и Modbus TCP]],
* [http://smart.uniel.ru Uniel],
* [http://www.eksis.ru/catalog/measures-of-relative-humidity-and-temperature/ ИВТМ],
* [https://www.incotexcom.ru/catalogue Меркурий],
* [https://miluris.ru/ Милур],
* [[GOST MEK 61107 | Энергомера ГОСТ МЭК 61107]],
* [[GOST MEK 61107 |НЕВА МТ 32х ГОСТ МЭК 61107]],
* [[DLMS/COSEM | DLMS/COSEM, СПОДЭС (ГОСТ Р 58940-2020)]],
* [[Somfy SDN | Somfy SDN]],
* [[WinDeco | WinDeco]],
* [[Dooya DT82 | Dooya DT82]].


=== Modbus ===
Полный список поддерживаемых устройств и особенности подключения, смотрите в таблице [[Supported devices#Таблица | Поддерживаемые контроллером Wiren Board протоколы и устройства]].
* Периферийные устройства Wiren Board с интерфейсом Modbus: модули реле, диммеры, счётчики импульсов, датчики и т.п.
* Устройства сторонних производителей, работающих по протоколу [[Протокол Modbus|Modbus]].  


=== Энергомера ГОСТ МЭК 61107 ===
Учитывайте, что сторонние производители устройств могут вносить недокументированные изменения в протокол, поэтому перед покупкой устройства желательно убедиться в работоспособности выбранного решения.
Работает с настройками порта: 9600 8N1 или 9600 7E1.
 
Реализован только режим «быстрого группового чтения» без открытия сессии. Этот режим специфичен для протокола счётчиков Энергомера и не соответствует стандарту ГОСТ МЭК 61107.
 
=== НЕВА МТ 32х ГОСТ МЭК 61107 ===
Протокол работает только со следущими настройками порта: 9600 8N1 или 9600 7E1. При выборе 9600 8N1 физически обмен с счётчиками происходит в режиме 9600 7E1, в соответствии с МЭК 61107, но бит чётности эмулируется программно за счёт восьмого бита посылки. Это сделано для возможности использования счётчиков на одной шине с другими устройствами, которые работают только с восьмибитными словами.
 
Реализован режим чтения параметров по OBIS-кодам (IEC 62056-6-1:2017)
 
=== DLMS/COSEM, СПОДЭС ===
Физический адрес устройства задаётся в параметре slave_id. Опрашивается логическое устройство с адресом 1. Адрес клиента задаётся в параметре dlms_client_address, если он не задан, используется адрес 16 (публичный клиент). Тип аутентификации задаётся в параметре dlms_auth. Коммуникационный профиль задаётся в параметре dlms_interface, если он не задан, используется протокол HDLC. Поддерживается адресация по логическому имени объектов. Данные читаются по OBIS-кодам (IEC 62056-6-1:2017). OBIS-коды записываются в адресе регистра строкой, например 0.0.96.9.0.255. Поддерживается автоматический разбор данных от объектов с классом register(class_id = 3), остальные классы не поддерживаются.
 
=== Somfy SDN ===
Тип мотора(node type) можно задать через параметр устройства node_type. По умолчанию используется Sonesse 30. Для организации отправки команд можно использовать канал с типом регистра command. В этом случае заголовок пакета (MSG) задаётся в адресе регистра. Число, записываемое в такой регистр должны содержать длину в младшем байте. Например, 0x03020103 будет означать что в команду будет добавлено 3 байта: 0x01, 0x02, 0x03. Для организации запроса статуса можно использовать канал с типом регистра param. В этом случае заголовок запроса (MSG) задаётся в адресе регистра. А заголовок ответа - в параметре response_header. Поддерживается возможность указать смещение и длину данных в ответе.
 
=== WinDeco ===
Для организации отправки команд можно использовать канал с типом регистра command. В этом случае код команды задаётся в адресе регистра.
 
=== Dooya ===
Для организации отправки команд управления можно использовать канал с типом регистра command. Для организации доступа к настройкам можно использовать канал с типом регистра param. Во всех случаях адрес данных задаётся в адресе регистра.
 
=== Прочие ===
* ADICON,
* A-BUS,
* [http://smart.uniel.ru/ Uniel],
* [http://www.milur.ru/ Милур],
* [http://www.eksis.ru/catalog/measures-of-relative-humidity-and-temperature/ ИВТМ],
* [[Сounters Pulsar | Пульсар]],
* [http://www.incotexcom.ru/m230art.htm Меркурий 230].


=== Поддержка устройств различных протоколов на одной шине ===  
=== Поддержка устройств различных протоколов на одной шине ===  
Строка 49: Строка 30:
Использовать устройства с разными протоколами на одной шине возможно, но необходимо учитывать особенности конкретных протоколов.
Использовать устройства с разными протоколами на одной шине возможно, но необходимо учитывать особенности конкретных протоколов.


Например, фреймы устройств Unitel начинаются с байта <code>0xff</code>, а устройств ИВТМ — с байта <code>0x24</code>. В случае с протоколами Modbus, Меркурий 230 и Милур первым байтом фрейма является идентификатор ''slave'', поэтому при совмещении таких устройств нужно внимательно подходить к выбору ''slave id''.  
Например, фреймы устройств Uniel начинаются с байта <code>0xff</code>, а устройств ИВТМ — с байта <code>0x24</code>. В случае с протоколами Modbus, Меркурий 230 и Милур первым байтом фрейма является идентификатор ''slave'', поэтому при совмещении таких устройств нужно внимательно подходить к выбору ''slave id''.  


У устройств Милур ''slave id'' по умолчанию равен <code>0xff</code>, что приведет к конфликту с устройствами Unitel. Также устройства Милур требуют дополнительных задержек при опросе и при использовании на одной шине с другими устройствами могут снизить общую скорость опроса устройств.
У устройств Милур ''slave id'' по умолчанию равен <code>0xff</code>, что приведет к конфликту с устройствами Uniel. Также устройства Милур требуют дополнительных задержек при опросе и при использовании на одной шине с другими устройствами могут снизить общую скорость опроса устройств.


Иногда устройства, работающие на разных протоколах могут конфликтовать между собой.
Иногда устройства, работающие на разных протоколах могут конфликтовать между собой.
Учитывайте, что сторонние производители устройств могут вносить недокументированные изменения в протокол, поэтому перед покупкой устройства желательно убедиться в работоспособности выбранного решения.


=== Широковещательные сообщения ===
=== Широковещательные сообщения ===
[[Image:Broadcast Energometa CE102M.png |400px|thumb|right| Включение широковещательных сообщений в настройках счётчика Энергомера CE102M]]
Протоколы Меркурий 230, Энергомера ГОСТ МЭК 61107, НЕВА МТ 32х ГОСТ МЭК 61107 поддерживают отправку широковещательных сообщений, если не указывать идентификатор устройства, или указать вместо него пустую строку. Это можно использовать, если на шине только одно устройство такого типа, и его адрес неизвестен.  
Протоколы Меркурий 230, Энергомера ГОСТ МЭК 61107, НЕВА МТ 32х ГОСТ МЭК 61107 поддерживают отправку широковещательных сообщений, если не указывать идентификатор устройства, или указать вместо него пустую строку. Это можно использовать, если на шине только одно устройство такого типа, и его адрес неизвестен.  


Строка 64: Строка 44:
=== Доработка драйвера для поддержки новых устройств ===  
=== Доработка драйвера для поддержки новых устройств ===  


Вы можете самостоятельно добавить поддержку новых устройств, которые работают по Modbus или по другим известным драйверу протоколам, при помощи [[Драйвер wb-mqtt-serial:Примеры написания шаблонов|шаблонов]].
Вы можете самостоятельно добавить поддержку новых устройств, которые работают по Modbus или по другим известным драйверу протоколам, при помощи [[Wb-mqtt-serial templates|шаблонов]].


Если у вас возникли проблемы с составлением шаблона или выбранное вами устройство имеет свой протокол обмена данными — [https://wirenboard.com/ru/pages/contacts свяжитесь с нами] и мы постараемся помочь.
Если у вас возникли проблемы с составлением шаблона или выбранное вами устройство имеет свой протокол обмена данными — [https://wirenboard.com/ru/pages/contacts свяжитесь с нами] и мы постараемся помочь.
Строка 84: Строка 64:


== Файл конфигурации драйвера ==  
== Файл конфигурации драйвера ==  
 
[[Image: wb-mqtt-serial working diagram.png|500px|thumb|right| Диаграмма таймаутов цикла опроса]]
Перед использованием драйвер нужно настроить. Конфигурация драйвера хранится в файле <code>/etc/wb-mqtt-serial.conf</code>.  
Перед использованием драйвер нужно настроить. Конфигурация драйвера хранится в файле <code>/etc/wb-mqtt-serial.conf</code>.