Використання modbus в openhab 3 на прикладі українського розумного реле ION CS-8

Stas Dovgodko
6 min readOct 15, 2022

--

Disclaimer — Реле мені для огляду надав виробник, за що йому дякую, жодних додаткових умов окрім статті про інтеграцію в openhab не оговорювалось, тому надалі лише моє особисте враження від пристрою, його плюси і звичайно мінуси.

Реле виробляється нашою рідненькою українською компанією, що не може не тішити. Я досить давно на нього дивився але ніяк не доходили руки купити погратися, а тут все співпало.

Електричну частину раніше розбирав шановний Kirich, кому цікаво почитайте

Modbus та openhab

Якщо у вас в openhab вже заведений modbus — можете сміливо переходити до наступного розділу, скоріш за все нічого нового в цьому ви не дізнаєтеся.

Є декілька способів завести modbus в openhab (як і в інші системи автоматизації) але найпростішій та найдешевший це usb/rs485 донгл за 5-10$. На ринку є декілька перевірених пристроїв, більшість із них базовані на одному універсальному драйвері CH340, я використовував наступні і не мав із ними жодних проблем:

Перевірені адаптери rs485 що працюють із openhab

Ці донгли на виході мають двопроводний RS485 інтерфейс який є фізичним рівнем для modbus протоколу, на один фізичний порт донгла (в термінології modbus — master) можна включити декілька клієнтських пристроїв (slave), також є ряд нюансів підключення пристроїв в лінію RS485, особливо якщо ця лінія довга. У компанії ion на сайті є досить цікавий документ на цю тему, якщо у вас лінія десяток+ метрів або декілька modbus слейвів дуже раджу ознайомитися.

Отже, мінімальний набор для підключення реле ION CS-8 до openhab це usb донгл та кусок двухпроводного кабеля. Далі інструкція як цей донгл підключити до ubuntu/debian де в вас працює openhab.

Найперший нюанс, якщо ви, як і я, використовуєте опенхаб як контейнер в proxmox ve та плануєте використовувати USB пристрої — я наполегливо раджу робити контейнер в privileged режимі (см скрін нижче), це збереже вам массу часу та нервів. В інтернеті є рецепти як піднімати USB і в дефолтних unprivileged контейнерах, але з двох моїх спроб тільки одна закінчилась успіхом і то не дуже зрозуміло чому.

privileged контейнер в proxmox 7+

Після підключення USB донгла перевіряємо шо він опознаний операційною а отже фізично працює:

Перевірка що linux фізично бачить USB пристрій

Фактично на цьому етапі донгл вже можна використовувати але я наполегливо раджу зробити трошки лінуксової магії та навчити ОС маунтити пристрій в один аліас незалежно від порту/наявності інших пристроїв. Розлога інструкція наприклад тут, для мого адаптера це виглядає так:

Налаштування аліасу для modbus usb

Слід зазначити що у випадку proxmox це варто робити на стороні ноди та не забути в контейнер пробросити цей аліас як ресурс, повна інструкція тут

Отже, у вас є адаптер, ваш лінукс його бачить як /dev/usbModbus (це ім`я з мого прикладу вище), тепер треба зробити трошки магії яка дозволить openhab теж побачити ваш адаптер і, відповідно, працювати з ним:

/etc/default/openhab

Після чого openhab треба рестартувати, у випадку proxmox просто рестартуємо контейнер.

Активуємо в openhab стандартний вбудований modbus бондінг, в нього дуже розлога та цікава документація, яка покриває цікаві та нестандартні кейси, але в нашому випадку все буде досить стандартно.

Реле ion CS8

Вигляд 8 канального реле iOn CS-8

Перед нами компактне (3 юніти шириною) 8 канальне реле яке управляється та конфігурується за допомогою, як вже мабуть здогадалися, modbus. Тобто це реле яке можна або законфігурувати один раз, поставити в щит і воно має роками автономно працювати, або приєднати до умного дому і керувати ним за необхідності, при цьому залита конфігурація буде також продовжувати працювати, навіть якщо вумний будинок перестане працювати.

Але це в теорії, як на практиці будемо зараз перевіряти :)

Для експериментів я зібрав мінімальний “макет”, виглядає трошки страшно але дозволить мені перевірити все що я хочу.

Макет ion CS-8 + modbus

На цьому макеті я перевірив що всі входи замаплені жорстко на виходи та відпрацьовують, але це очікувано, що мене турбує в першу чергу і що я хочу перевірити:

  1. чи вдастся інтегрувати реле в OH до того рівня щоб його прямо там конфігурувати
  2. чи можна управляти саме виходами реле напряму, без необхідності імітувати натискання входів

Документація по всім регістрам яке підтримує реле знаходиться в документації тут — https://smart-ion.com/content/files/docs/CS-8_addr-1.62___ua.pdf.
Тут перший камінець в огород розробників — документація з одного боку досить вичерпна з іншого написана якось дивно, наприклад всі номера регістрів в шістнадцятирічному форматі, довелося посидіти із калькулятором, а типи регістрів місцями доводилося вгадувати. Більша проблема документації в тому шо основна штука — як керувати реле напряму в ній не розкрита, я це знайшов сам і абсолютно на інтуїції, дока не може розраховувати на інтуїцію.

UPD. виявилося керування виходами задокументоване але в іншому документі, не думаю що це правильно але як вже є

Я витратив декілька годин але переніс майже всі регістри в openhab, їх вийшло аж 81 і це мій абсолютний особистий рекорд в перерахунку на одну залізяку.

Якщо ви все правильно зробили то в інтерфейсі з’являться пристрої, деякі фактично відповідають окремим каналам реле а деякі можуть бути використані для його конфігурації

Що виявилось в процесі переносу:

  1. У реле не має можливості мапити входи та виходи в довільному порядку, тобто 1 на 5 а 5 на 3 і тд. Ця можливість дозволила би в щіті комутувати так як зручніше а не так як вимагає реле.
  2. Реле розділяє факт натискання на кнопку та факт відпрацювання цього натискання, я поки що не придумав нащо це потрібно але забавно
  3. Сказати шо конфігурація реле — заумна, не сказати нічого ) опцій багато, деякі потребують невеличкого мозкового штурму щоб зрозуміти призначення.
  4. Реле кльове :)

Отже, реле я завів в OH і можу з ним трошки погратися

Я зробив мінімальний сет айтемів які дозволять мені провести мінімальний але цікавий експеримент:

А також додав 1 правило з магією яка можлива, мабуть, тільки для цього реле:

В інтерфейсі це все виглядає так, якщо нижній перемикач вимкнуто то всі входи реле замаплені на виходи (дефолтний стан), якщо перемикач в стані як на фото то 1 і 8 входи від'єднано від виходів.

При цьому 2 і 3 контакти інтерфецсу показують стан 1 і 8 входів реле відповідно.

Макет експерименту

Цей макет дозволив виявити що:

  1. Незалежно від прив’язки — керування виходом зберігається, це дуже кльово і те шо мені потрібно
  2. Що перемикання мапінгу відпрацьовує одразу, без необхідності перезагружати реле, це теж дуже кльово
  3. Що реле працює максимально корректно і так я очікую, на відміну, наприклад від поробок Shelly

В сухому залишку реле дуже сподобалося, хоч і заумне в конфігурації, є нюанси але з ними можна жити. Буду купляти ще ) Слава Україні!

--

--

Stas Dovgodko
Stas Dovgodko

Written by Stas Dovgodko

Разрабатыватель всяких штук в энтом вашем интернете и латентный солипсист парт-тайм

Responses (1)