Пытаюсь подружить провод Somfy ST30 RS485 c Wirenboard. Из того, что понял, формат общения с Somfy никак не подружить с базовой функциональностью шаблонов для mqtt.
Формат общения с приводом Somfy согласно документации: Baud Rate : 4800 Start bit: Logical Level 0 Data bits: 8 Parity: Odd Logical Level: 1
Исходя из того, что понял с других документаций Somfy сначала надо по инструкции создать RAW формат команды, затем сделать ‘XOR FF’ для каждого байта инструкции, а потом только посчитать CHECKSUM и добавить в конец команды.
Таким образом у меня получилась такая команда, например, для опускания шторы:
3D A5 F9 - это Node Id привода в формате LSBF (Last Significant Byte First)
К сожалению, привод никак не хочет реагировать на мои команды, которые я ему пытаюсь подать через утилиту “serial_tool -b 4800 -p O /dev/ttyAPP1”
Может есть идеи что делаю не так и что еще стоит проверить?
Не планируете добавить generic конструктор сообщений в mqtt? Somfy де-факто лидер в области приводов для штор/жалюзи т.п.
PS: Есть также необходимость прикруть управление A/V ресивером Pioneer по протоколу IP Control используя RS-232. Это также сейчас не реализуемо используя драйвер mqtt?
Что вы понимаете под “драйером mqtt” и “generic конструктор сообщений в mqtt”?
Идей нет, но через serial_tool конечно придётся научиться работать с железкой, прежде чем прикручивать дальше. А где вы про xor прочитали? сходу не нашёл в документации.
``[quote=“EvgenyBoger, post:4, topic:492”]
Что вы понимаете под “драйером mqtt” и “generic конструктор сообщений в mqtt”?
[/quote]
Чтобы можно было в шаблоне устройства задавать формат сообщения для общения с устройством на шине и перечень команд устройста. Даже научившись работать с устройством через serial_tool, я же не смогу потом замапить эти команды к Widget’ам?!
В этой документации нет. Это было мое предположение, что все устройства somfy с RS-485 работают по схожему принципу. См. [Somfy RS-485 RTS Transmitter](http://files.domoticaforum.eu/uploads/Somfy/Somfy RS485 RTSTransmitter.pdf)
Там есть такой пример:
Не сможете. Проблема в том, что нельзя сделать декларативный язык для такого. Вот даже в вашем примере, тут нужно чексумму считать, адрес устройства где-то брать, ответы разбирать и т.д. Эта логика где-то должна быть реализована, и правильное место для неё - это драйвер wb-mqtt-serial. Там C++ конечно, но тут уже ничего не поделаешь.
Если у вас очень специальный случай и вам достаточно послать заранее сформированную последовательность байт и не разбирать ответы, то можно это сделать например через движок правил и шелл-команды, пример есть в документации по wb-rules.