Використання modbus в openhab 3 на прикладі українського розумного реле ION CS-8
Disclaimer — Реле мені для огляду надав виробник, за що йому дякую, жодних додаткових умов окрім статті про інтеграцію в openhab не оговорювалось, тому надалі лише моє особисте враження від пристрою, його плюси і звичайно мінуси.
Реле виробляється нашою рідненькою українською компанією, що не може не тішити. Я досить давно на нього дивився але ніяк не доходили руки купити погратися, а тут все співпало.
Електричну частину раніше розбирав шановний Kirich, кому цікаво почитайте
Modbus та openhab
Якщо у вас в openhab вже заведений modbus — можете сміливо переходити до наступного розділу, скоріш за все нічого нового в цьому ви не дізнаєтеся.
Є декілька способів завести modbus в openhab (як і в інші системи автоматизації) але найпростішій та найдешевший це usb/rs485 донгл за 5-10$. На ринку є декілька перевірених пристроїв, більшість із них базовані на одному універсальному драйвері CH340, я використовував наступні і не мав із ними жодних проблем:
Ці донгли на виході мають двопроводний RS485 інтерфейс який є фізичним рівнем для modbus протоколу, на один фізичний порт донгла (в термінології modbus — master) можна включити декілька клієнтських пристроїв (slave), також є ряд нюансів підключення пристроїв в лінію RS485, особливо якщо ця лінія довга. У компанії ion на сайті є досить цікавий документ на цю тему, якщо у вас лінія десяток+ метрів або декілька modbus слейвів дуже раджу ознайомитися.
Отже, мінімальний набор для підключення реле ION CS-8 до openhab це usb донгл та кусок двухпроводного кабеля. Далі інструкція як цей донгл підключити до ubuntu/debian де в вас працює openhab.
Найперший нюанс, якщо ви, як і я, використовуєте опенхаб як контейнер в proxmox ve та плануєте використовувати USB пристрої — я наполегливо раджу робити контейнер в privileged режимі (см скрін нижче), це збереже вам массу часу та нервів. В інтернеті є рецепти як піднімати USB і в дефолтних unprivileged контейнерах, але з двох моїх спроб тільки одна закінчилась успіхом і то не дуже зрозуміло чому.
Після підключення USB донгла перевіряємо шо він опознаний операційною а отже фізично працює:
Фактично на цьому етапі донгл вже можна використовувати але я наполегливо раджу зробити трошки лінуксової магії та навчити ОС маунтити пристрій в один аліас незалежно від порту/наявності інших пристроїв. Розлога інструкція наприклад тут, для мого адаптера це виглядає так:
Слід зазначити що у випадку proxmox це варто робити на стороні ноди та не забути в контейнер пробросити цей аліас як ресурс, повна інструкція тут
Отже, у вас є адаптер, ваш лінукс його бачить як /dev/usbModbus (це ім`я з мого прикладу вище), тепер треба зробити трошки магії яка дозволить openhab теж побачити ваш адаптер і, відповідно, працювати з ним:
Після чого openhab треба рестартувати, у випадку proxmox просто рестартуємо контейнер.
Активуємо в openhab стандартний вбудований modbus бондінг, в нього дуже розлога та цікава документація, яка покриває цікаві та нестандартні кейси, але в нашому випадку все буде досить стандартно.
Реле ion CS8
Перед нами компактне (3 юніти шириною) 8 канальне реле яке управляється та конфігурується за допомогою, як вже мабуть здогадалися, modbus. Тобто це реле яке можна або законфігурувати один раз, поставити в щит і воно має роками автономно працювати, або приєднати до умного дому і керувати ним за необхідності, при цьому залита конфігурація буде також продовжувати працювати, навіть якщо вумний будинок перестане працювати.
Але це в теорії, як на практиці будемо зараз перевіряти :)
Для експериментів я зібрав мінімальний “макет”, виглядає трошки страшно але дозволить мені перевірити все що я хочу.
На цьому макеті я перевірив що всі входи замаплені жорстко на виходи та відпрацьовують, але це очікувано, що мене турбує в першу чергу і що я хочу перевірити:
- чи вдастся інтегрувати реле в OH до того рівня щоб його прямо там конфігурувати
- чи можна управляти саме виходами реле напряму, без необхідності імітувати натискання входів
Документація по всім регістрам яке підтримує реле знаходиться в документації тут — https://smart-ion.com/content/files/docs/CS-8_addr-1.62___ua.pdf.
Тут перший камінець в огород розробників — документація з одного боку досить вичерпна з іншого написана якось дивно, наприклад всі номера регістрів в шістнадцятирічному форматі, довелося посидіти із калькулятором, а типи регістрів місцями доводилося вгадувати. Більша проблема документації в тому шо основна штука — як керувати реле напряму в ній не розкрита, я це знайшов сам і абсолютно на інтуїції, дока не може розраховувати на інтуїцію.
UPD. виявилося керування виходами задокументоване але в іншому документі, не думаю що це правильно але як вже є
Я витратив декілька годин але переніс майже всі регістри в openhab, їх вийшло аж 81 і це мій абсолютний особистий рекорд в перерахунку на одну залізяку.
Якщо ви все правильно зробили то в інтерфейсі з’являться пристрої, деякі фактично відповідають окремим каналам реле а деякі можуть бути використані для його конфігурації
Що виявилось в процесі переносу:
- У реле не має можливості мапити входи та виходи в довільному порядку, тобто 1 на 5 а 5 на 3 і тд. Ця можливість дозволила би в щіті комутувати так як зручніше а не так як вимагає реле.
- Реле розділяє факт натискання на кнопку та факт відпрацювання цього натискання, я поки що не придумав нащо це потрібно але забавно
- Сказати шо конфігурація реле — заумна, не сказати нічого ) опцій багато, деякі потребують невеличкого мозкового штурму щоб зрозуміти призначення.
- Реле кльове :)
Отже, реле я завів в OH і можу з ним трошки погратися
Я зробив мінімальний сет айтемів які дозволять мені провести мінімальний але цікавий експеримент:
А також додав 1 правило з магією яка можлива, мабуть, тільки для цього реле:
В інтерфейсі це все виглядає так, якщо нижній перемикач вимкнуто то всі входи реле замаплені на виходи (дефолтний стан), якщо перемикач в стані як на фото то 1 і 8 входи від'єднано від виходів.
При цьому 2 і 3 контакти інтерфецсу показують стан 1 і 8 входів реле відповідно.
Цей макет дозволив виявити що:
- Незалежно від прив’язки — керування виходом зберігається, це дуже кльово і те шо мені потрібно
- Що перемикання мапінгу відпрацьовує одразу, без необхідності перезагружати реле, це теж дуже кльово
- Що реле працює максимально корректно і так я очікую, на відміну, наприклад від поробок Shelly
В сухому залишку реле дуже сподобалося, хоч і заумне в конфігурації, є нюанси але з ними можна жити. Буду купляти ще ) Слава Україні!