Налаштовуємо віддалене керування декількома Zigbee LAN-координаторами

Усім привіт, на зв’язку Богдан Свердлюк. У цій статті розглянемо, як приєднати декілька Zigbee LAN координаторів у локальній або загальнодоступній мережі (через публічну IP-адресу) до одного серверу Home Assistant.

Останній варіант дозволяє віддалено керувати мережею пристроїв у іншому місті чи навіть країні. Це дуже корисно, коли потрібно дистанційно увімкнути електроприлад, відкрити двері гаража, закрити штори чи керувати безпекою (датчики протікання, відкриття та аналогічні) в іншій локації. Російський військовий корабель, іди нах***!

LAN координатор — це Zigbee пристрій нового покоління. На відміну від подібних USB координаторів, він не має фізично підключатись до порту комп’ютера (сервера). Натомість використовує Ethernet кабель від роутера. Це дозволяє передавати дані у локальній мережі на відстань до 100 метрів без додаткового обладнання, а також підключати координатор з будь-якої точки світу.

Для чого використовувати декілька координаторів

Використання декількох координаторів може знадобитись, якщо крім пристроїв вдома є необхідність керувати пристроями, наприклад, вдома у батьків чи інших родичів, в офісі або на дачі. Для цього не потрібен додатковий комп’ютер, лише координатор та роутер. Усі пристрої та сутності доступні в Home Assistant.

Якщо потрібно покрити велику територію або об’єднати декілька приміщень чи будинків, можна використати Ethernet кабель + PoE, або WI-FI. При необхідності є можливість перепрошити координатор в режим роутера, що дозволить збільшити покриття однієї Zigbee мережі, а не створювати кілька.
Немає обмежень, скільки і які координатори використовувати. Проте координатор може мати обмеження на кількість одночасно підключених пристроїв. В такому випадку зручно мати декілька координаторів.

Мати кілька мереж корисно, коли певні пристрої порушують стабільність. Такі пристрої можна перенести на інший координатор.

Розглянемо підключення на прикладі двох гібридних координаторів української розробки SMLIGHT SLZB-06.

Координатор підключається через інтерфейси Ethernet та USB Type-C. Підтримує функцію Power over Ethernet (PoE). Присутня оптоелектронна ізоляція — одночасне приєднання до Type-C, та Ethernet PoE. За інформацією на сайті виробника підтримка роботи через WI-FI в процесі реалізації. Має вебінтерфейс та підтримку оновлення повітрям (OTA).

USB Підключення

У всіх прикладах використовується Zigbee2MQTT версії 1.28.2-1 та HA 2022.10.5 Для підключення координатора потрібно встановити додаток та інтеграцію MQTT broker та додаток Zigbee2MQTT.

Для використання в USB-режимі координатор підключається за допомогою кабелю Type-C до USB-порту сервера.

В Home Assistant перейти в налаштування >> Система >> Устаткування >> верхнє праве меню >> Все обладнання. У стрічці пошуку ввести «usb» та знайти порт підключення координатора.

Приклад конфігурації Zigbee2MQTT для LAN координатора в режимі USB:

data_path: /config/zigbee2mqtt
socat:
  enabled: false
  master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777
  slave: tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
  options: "-d -d"
  log: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://core-mosquitto
  user: mqtt
  password: mqtt
serial:
  port: /dev/ttyUSB0
advanced:
  log_level: info
  last_seen: ISO_8601
  pan_id: 6754
  channel: 11

Остання секція (advanced) не обов’язкова, проте вона дає більший контроль за мережею:

  • Log level — рівень логування;
  • Last seen — час останньої появи пристрою в мережі;
  • Pan ID — унікальний ідентифікатор мережі Zigbee;
  • Chanel канал мережі Zigbee. Найкращі канали — Zigbee 11, 15 20 та 25. Оскільки вони не перетинаються з каналами Wi-Fi.

Якщо у Zigbee2MQTT не запускається, потрібно перевести координатор в режим USB. Має загорітись синій світлодіод. Для цього можна коротко натиснути кнопку на корпусі або приєднати мережевий кабель та змінити режим роботи в налаштуваннях через вебінтерфейс.

Локальне LAN-підключення

Для використання координатора в режимі LAN потрібно перевести його в цей режим (має згаснути синій світлодіод). Коротко натиснути кнопку на корпусі або змінити режим роботи в налаштуваннях.

За замовчуванням усім мережевим пристроям видається адреса автоматично (по DHCP). Щоб адреса не змінилась з часом, необхідно її закріпити у вебінтерфейсі роутера, або LAN-координатора.

Для зміни в інтерфейсі координатора необхідно перейти в розділ Ethernet, прибрати галочку DHCP. Змінити ip адресу на бажану. В якості Gateway вказати ip-адресу роутера. Маску мережі можна не змінювати. Натиснути Save та Reboot для збереження змін. Переглянути, або змінити порт координатора можна у розділі Serial.

Приклад конфігурації Zigbee2MQTT для першого LAN-координатора.

data_path: /config/zigbee2mqtt
socat:
  enabled: false
  master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777
  slave: tcp-listen:8486,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
  options: "-d -d"
  log: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://core-mosquitto
  user: mqtt
  password: mqtt
serial:
  port: tcp://192.168.1.104:6638
advanced:
  log_level: info
  last_seen: ISO_8601
  pan_id: 6803
  channel: 15

У конфігурації необхідно змінити ip-адресу та порт на власні.

Локальне підключення двох LAN-координаторів

Тепер спробуємо одночасно під’єднати два LAN-координатори. Загалом, архітектура підключення виглядає так:

Для цього необхідно встановити ще одну копію Zigbee2MQTT. Перейти в Home Assistant >> Конфігурація >> Додатки >> Магазин доповнень >> у верхній лівій частині натиснути три крапки >> Репозиторії>> додати URL репозиторію в поле знизу.

Щоб додати один і той самий репозиторій декілька разів, необхідно змінити хоча б один символ в URL-адресі. Тоді Home Assistant сприйматиме її як нову. Ось кілька перевірених варіантів написання:

https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
http://github.com/zigbee2mqtt/hassio-zigbee2mqtt
http://github.com/zigbee2mqtt/hassio-zigbee2mqtt/
http://www.github.com/zigbee2mqtt/hassio-zigbee2mqtt/

Після перезавантаження сторінки магазину буде доступно декілька версій Zigbee2MQTT. Встановлені додатки підсвічуються блакитною лінією зверху.

Після потрібно встановити новий (другий) додаток.

У цьому тесті одночасно підключаються два LAN-координатори. Проте можна під’єднати будь-які типи координаторів. Наприклад, один через USB, інший — через LAN, а третій віддалено через Internet. Кількість одночасно підключених координаторів теоретично не лімітована і залежить від можливості системи запустити відповідну кількість Zigbee2MQTT.

Приклад конфігурації Zigbee2MQTT для першого LAN-координатора.

data_path: /config/zigbee2mqtt_lan2
socat:
  enabled: false
  master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777
  slave: tcp-listen:8486,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
  options: "-d -d"
  log: false
mqtt:
  base_topic: zigbee2mqtt_lan2
  server: mqtt://core-mosquitto
  user: mqtt
  password: mqtt
serial:
  port: tcp://192.168.1.110:6638
advanced:
  log_level: info
  last_seen: ISO_8601
  pan_id: 6540
  channel: 20

Де з ключових індивідуальних налаштувань — це:

  • data_path: /config/zigbee2mqtt_lan2 — папка з конфігураційним файлом даної копії Zigbee2MQTT;
  • mqtt: base_topic: zigbee2mqtt_lan2 — гілка в MQTT для публікації повідомлень з Zigbee мережі в MQTT та далі відповідно до Home Assistant;
  • serial: port: tcp://192.168.1.110:6638 — IP адреса та порт доступу вашого LAN Zigbee координатора;
  • pan_id: 6540 — унікальний номер Zigbee-мережі, 4 довільні цифри;
  • channel: 20 — номер каналу Zigbee-мережі.

Щоб створити нову мережу Zigbee необхідно в налаштуваннях другої копії Zigbee2MQTTзмінити ці дані на ваші:

  • адресу директорії data_path;
  • порт відкриття додатка;
  • base_topic;
  • ip та порт координатора;
  • pan ID та канал Zigbee-мережі.

Іноді Zigbee2MQTT створює мережі зі стандартним pan ID 6754 та каналом 11. Така помилка не дозволяє додавати нові пристрої. Для її виправлення потрібно:

  • зупинити проблемний Zigbee2MQTT;
  • за допомогою додатка File editor перейти в директорію config/zigbee2mqtt (назва як у data path);
  • додати конфігурацію у файл configuration.yaml;
  • видалити файл coordinator_backup.json;
  • запустити додаток.

Перевірити номер мережі та каналу можна в журналі додатка Zigbee2MQTT або в налаштуваннях (Settings >> Advanced).

Віддалене підключення LAN-координатора

Для організації зв’язку з координатором в іншій мережі, на віддаленому роутері має бути налаштована публічна статична IP-адреса. Уточніть в інтернет-провайдера, чи надає він її. Часто це окрема послуга.

Віддалене підключення аналогічне до локального. Відмінність лише в IP-адресі: з віддаленим підключенням IP-адреса публічна (на кшталт 91.233.151.17), з локальним — локальна (на кшталт 192.168.1.5).

У віддаленому місці необхідно приєднати координатор за допомогою LAN-порту. Далі бажано закріпити IP-адресу за координатором. Наступним кроком — створити правило переадресації порту. На роутерах це може називатись forwarding, port forwarding, virtual server.

Зробити це доволі просто. Ось інструкція для роутерів TP-Link, Asus та Tenda. Таким чином, ми надамо прямий доступ із зовнішніх мереж до координатора.

  • Зовнішній порт — довільний порт після публічної ip-адреси. Наприклад 6750.
  • Внутрішній порт — порт координатора, те ж саме що socket port. Стандартно 6638.
  • IP адреса — локальна ip-адреса координатора.
  • TCP/UDP — транспортний протокол. Потрібно обрати TCP.

Перевірити, чи все правильно виконано можна через сервіс перевірки доступності порту або, вказавши WAN-адресу та зовнішній порт в стрічці браузера.

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

Приклад конфігурації Zigbee2MQTT для віддаленого координатора:

data_path: /config/zigbee2mqtt_lan3
socat:
  enabled: false
  master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777
  slave: tcp-listen:8487,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
  options: "-d -d"
  log: false
mqtt:
  base_topic: zigbee2mqtt_lan3
  server: mqtt://core-mosquitto
  user: mqtt
  password: mqtt
serial:
  port: tcp://176.36.187.210:6750
advanced:
  log_level: info
  last_seen: ISO_8601
  pan_id: 6850
  channel: 25

Запустивши декілька копій Zigbee2MQTT, ми створили кілька мереж. Для користувача Home Assistant не має значення, у якій мережі знаходяться пристрої. Усі вони доступні в інтерфейсі без обмежень відстані чи кількості локацій.

Сподобалась стаття? Подякуй донатом на спільний збір DOU та KOLO для купівлі 80 дронів «Азову»!

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

How many devices can on coordinator handle? I am waiting for the Silicon Labs version to arrive, as I want to switch from an USB dongle to this one.

I have about 60 devices right now.

Thank you.

The official website states that one CC2652P module can connect about 150 devices.

The coordinator is based on this chip. Therefore, the coordinator supports 150 devices

But the SLZB-06M is based on the EFR32MG21 chip for Zigbee?

There are 2 versions of these Zigbee coordinators:
1) SLZB-06 is based on CC2652P (150 devices)
2) SLZB-06M is based on EFR32 (200 + devices)

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

В SLZB-06 у меню є пункт безпека. Там можна налаштувати вхід за логіном та паролем

вхід на «веб-морду» конфігуратора ? чи на TCP порт ?
у мене є LAN координатор проекта ZigStar. там також веб-сервер можна з паролем зробити, але z2m підключається ж по port: tcp://192.168.2.144:6638 . а він ніяк не прикритий :(

Я не займаюсь кібербезпекою, але це цікаве запитання. Відразу напрошуються декілька запитань:
Існують атаки на порт?
Чи можу я підключитись до білої адреси z2m координатора іншої людини?
6638 це стандартний порт, його можна змінити на менш відомий?

I dont use Home Assistant ( I use Mqtt / InfluxDB / Grafana properly)
Can someone help to install 2 instances of 2ZM ? ( first for usb key , second for lan key)
Thanks a lot
Stef

I didn’t install zigbee2mqtt as 2 docker containers, but maybe this option works for you www.zigbee2mqtt.io/...​stallation/02_docker.html. Try to install the first Z2M container according to the instructions, and change the container name and device address in the second one

Дякую за статтю! Саме задумався про те, що не хочеться знову морочити голову з Raspberry, краще б мати сервер з віртуалкою. Тоді USB-координатор не підійде, тож мав шукати LAN альтернативи

Віддалено нагадує VPN. Але так і не зрозуміла, чи вимагає пристрій «білий» IP чи буде працювати і на «сірих» ?

Мені самому цікаво. Думаю що це можливо. Треба спробувати через динамічний DNS, або Cloudflare.

Підписатись на коментарі