RSS блога
Подписка
Сетевой координатор Zigbee или первый шаг к резервированию сервера Home Assistant
Ранее, в статье Делаем безоблачный умный дом на базе Home Assistant я описывал, как сделать USB координатор сети Zigbee в системе Home Assistant. С тех пор на рынке появилось множество готовых координаторов, к примеру Sonoff Zigbee Dongle-P на базе чипа TI CC2652P и Sonoff Zigbee Dongle-E на базе чипа EFR32. Эти устройства не требуют дополнительных программаторов и процедуры прошивки. И казалось бы вот оно наступило счастье, но у такой конфигурации есть проблема — при выключении/зависании сервера умного дома переключиться на резервный сервер с другим координатором нельзя. Решение лежит на поверхности — нужен сетевой координатор. И ребята из ZigStar это сделали
Схема резервирования проста, ее настройку планирую описать в следующих статьях. В нормальном режиме работы вся логика умного дома выполняется на основном сервере, резервный сервер периодически пингует основной (для примера, есть несколько вариантов). Аддоны Zigbee2mqtt запущены на обоих серверах к одному и тому же сетевому координатору. Команды к координатору отправляет основной сервер.
В аварийном режиме работы резервный сервер определяет, что основной не доступен и берет на себя выполнение логики умного дома, в том числе и отправку команд на сетевой координатор.
Существует несколько вариантов сетевых координаторов:
ZigStar LAN Gateway работает по LAN, но требует питание по USB
ZigStar LilyZig POE поддерживает два режима работы координатора: LAN или USB, питание так же либо по USB, либо POE (по сетевому кабелю Ethernet)
Второй вариант оказался для меня наиболее интересен, так как позволяет размещать координатор практически в любом месте без привязки к розеткам. Я было дернулся его заказать, но товар в РФ не доставляется, а значит будем делать сами по инструкции автора на GitHub
Итак, характеристики устройства:
— питание 802.3af PoE или USB C (нельзя подключать одновременно POE и USB)
— чип CC2652P TI усиление +20дБ
— 2 режима работы: LAN/POE координатор или USB координатор/маршрутизатор
— передача состояния устройства по MQTT (температура, )
— поддержка Zigbee2mqtt и ZHA
— обновление прошивки с помощью программы ZigStar Multi Tool без необходимости прямого доступа к устройству.
Сборка устройства
Основой выступает готовая плата LILYGO® TTGO T-Internet-POE На на ней распаян LAN/POE и WiFi модуль ESP32, обеспечивающий сетевые функции LAN, WiFi, передачи состояния устройства по MQTT и веб интерфейс
Вторым этажом идет Zigbee плата
Плату можно заказать на производстве. Ссылка на Gerber файл для заказа
На плате необходимо распаять:
Модуль Zigbee RF-STAR RF-BM-2652P1/P2 Автор рекомендует именно этот модуль и под него вверху ссылка на плату, но есть вариант с Ebyte E72-2G4M20S1E
— порт USB Type C
— чип USB to UART и обвязку к нему CH340B. Внимание, чип нужен со встроенным кварцем, в данном случае с литерой B
— датчик температуры с обвязкой DS18B20
— DC-DC преобразователь на 3.3V AMS 1117
— SMA разъем антенны Размер разъема выбирается в зависимости от толщины платы. В моем случае это 1,6мм
Ссылка на весь BOM лист. В теории его можно загрузить на LCSC, но доставка в РФ опять же сейчас не работает, поэтому идем на Алиэкспресс.
Пайка не представляет большой сложности, все SMD компоненты типоразмера 0806 и 1210, которые спокойно паяются даже обычным паяльником.
Прошивка
В готовое устройство необходимо залить две прошивки: для чипа ESP32 и для чипа RF-STAR RF-BM-2652P1/P2
Для заливки прошивки в ESP32 необходимо установить джампер в позицию, указанную на фото и подключить ВЕРХНИЙ USB к компьютеру.
Я использую NodeMCU-PyFlasher. Открываем программу, выбираем порт и файл ZigStarGW_v0.6.8.full.bin. Версия прошивки может отличаться.
Для заливки прошивки в RF-Star необходимо установить джампер в позицию, указанную на фото и подключить ВЕРХНИЙ USB к компьютеру.
Используем программу ZigStar Multi Tool. Открываем программу, выбираем порт и файл
CC1352P2_CC2652P_launchpad_coordinator_20220219.hex (дата может отличаться). Устанавливаем галочки Erase, Write, Verify и нажимаем Start.
После окончания прошивки, для использования устройства в режиме LAN необходимо установить джампер в следующую позицию.
Перезагружаем устройство и переходим в веб интерфейс. на главной странице показан статус устройства, количество подключенных клиентов zigbee2mqtt, ip адрес и атрибуты LAN подключения, статус подключения по MQTT
Подключение к Zigbee2Mqtt
Подключаем устройство в сеть, заходим в веб интерфейс ZigStar в раздел Serial. Нас интересует открытый сетевой порт. По умолчанию это 6638
Переходим в HomeAssistant, аддон Zigbee2Mqtt. В настройках прописываем сетевой адрес и порт устройства.
Внимание, при смене координатора в подавляющем большинстве случаем придется перепривязывать устройства.
Перезапускаем аддон, привязываем устройства.
Передача статуса и состояния ZigStar в Home Assistant
Устройство передает параметры состояния по MQTT, аналогично главной странице веб интерфейса. Для этого необходимо настроить MQTT подключение к брокеру умного дома.
В Home Assistant автоматически появится устройство Zig Star. Возможные команды и сенсоры показаны на скриншоте
В итоге я показал, как сделать устройство, способное работать в режиме LAN координатора с возможностью размещения в любом месте без привязки к розеткам или серверу и обеспечивающее возможность резервирования и повышения отказоустойчивости сервера умного дома Home Assistant
В заключении небольшое видео подключения устройств к сетевому координатору.
Схема резервирования проста, ее настройку планирую описать в следующих статьях. В нормальном режиме работы вся логика умного дома выполняется на основном сервере, резервный сервер периодически пингует основной (для примера, есть несколько вариантов). Аддоны Zigbee2mqtt запущены на обоих серверах к одному и тому же сетевому координатору. Команды к координатору отправляет основной сервер.
В аварийном режиме работы резервный сервер определяет, что основной не доступен и берет на себя выполнение логики умного дома, в том числе и отправку команд на сетевой координатор.
Существует несколько вариантов сетевых координаторов:
ZigStar LAN Gateway работает по LAN, но требует питание по USB
ZigStar LilyZig POE поддерживает два режима работы координатора: LAN или USB, питание так же либо по USB, либо POE (по сетевому кабелю Ethernet)
Второй вариант оказался для меня наиболее интересен, так как позволяет размещать координатор практически в любом месте без привязки к розеткам. Я было дернулся его заказать, но товар в РФ не доставляется, а значит будем делать сами по инструкции автора на GitHub
Итак, характеристики устройства:
— питание 802.3af PoE или USB C (нельзя подключать одновременно POE и USB)
— чип CC2652P TI усиление +20дБ
— 2 режима работы: LAN/POE координатор или USB координатор/маршрутизатор
— передача состояния устройства по MQTT (температура, )
— поддержка Zigbee2mqtt и ZHA
— обновление прошивки с помощью программы ZigStar Multi Tool без необходимости прямого доступа к устройству.
Сборка устройства
Основой выступает готовая плата LILYGO® TTGO T-Internet-POE На на ней распаян LAN/POE и WiFi модуль ESP32, обеспечивающий сетевые функции LAN, WiFi, передачи состояния устройства по MQTT и веб интерфейс
Вторым этажом идет Zigbee плата
Плату можно заказать на производстве. Ссылка на Gerber файл для заказа
На плате необходимо распаять:
Модуль Zigbee RF-STAR RF-BM-2652P1/P2 Автор рекомендует именно этот модуль и под него вверху ссылка на плату, но есть вариант с Ebyte E72-2G4M20S1E
— порт USB Type C
— чип USB to UART и обвязку к нему CH340B. Внимание, чип нужен со встроенным кварцем, в данном случае с литерой B
— датчик температуры с обвязкой DS18B20
— DC-DC преобразователь на 3.3V AMS 1117
— SMA разъем антенны Размер разъема выбирается в зависимости от толщины платы. В моем случае это 1,6мм
Ссылка на весь BOM лист. В теории его можно загрузить на LCSC, но доставка в РФ опять же сейчас не работает, поэтому идем на Алиэкспресс.
Пайка не представляет большой сложности, все SMD компоненты типоразмера 0806 и 1210, которые спокойно паяются даже обычным паяльником.
Прошивка
В готовое устройство необходимо залить две прошивки: для чипа ESP32 и для чипа RF-STAR RF-BM-2652P1/P2
Для заливки прошивки в ESP32 необходимо установить джампер в позицию, указанную на фото и подключить ВЕРХНИЙ USB к компьютеру.
Я использую NodeMCU-PyFlasher. Открываем программу, выбираем порт и файл ZigStarGW_v0.6.8.full.bin. Версия прошивки может отличаться.
Для заливки прошивки в RF-Star необходимо установить джампер в позицию, указанную на фото и подключить ВЕРХНИЙ USB к компьютеру.
Используем программу ZigStar Multi Tool. Открываем программу, выбираем порт и файл
CC1352P2_CC2652P_launchpad_coordinator_20220219.hex (дата может отличаться). Устанавливаем галочки Erase, Write, Verify и нажимаем Start.
После окончания прошивки, для использования устройства в режиме LAN необходимо установить джампер в следующую позицию.
Перезагружаем устройство и переходим в веб интерфейс. на главной странице показан статус устройства, количество подключенных клиентов zigbee2mqtt, ip адрес и атрибуты LAN подключения, статус подключения по MQTT
Подключение к Zigbee2Mqtt
Подключаем устройство в сеть, заходим в веб интерфейс ZigStar в раздел Serial. Нас интересует открытый сетевой порт. По умолчанию это 6638
Переходим в HomeAssistant, аддон Zigbee2Mqtt. В настройках прописываем сетевой адрес и порт устройства.
Внимание, при смене координатора в подавляющем большинстве случаем придется перепривязывать устройства.
Перезапускаем аддон, привязываем устройства.
Передача статуса и состояния ZigStar в Home Assistant
Устройство передает параметры состояния по MQTT, аналогично главной странице веб интерфейса. Для этого необходимо настроить MQTT подключение к брокеру умного дома.
В Home Assistant автоматически появится устройство Zig Star. Возможные команды и сенсоры показаны на скриншоте
В итоге я показал, как сделать устройство, способное работать в режиме LAN координатора с возможностью размещения в любом месте без привязки к розеткам или серверу и обеспечивающее возможность резервирования и повышения отказоустойчивости сервера умного дома Home Assistant
В заключении небольшое видео подключения устройств к сетевому координатору.
Самые обсуждаемые обзоры
+29 |
640
36
|
+64 |
2023
50
|
+26 |
1631
51
|
Если сделать диск-зеркало загрузочным диском для второго сервера, теоретически проблема решается.
Насколько мне известно, 100% зеркальное резервирование серверов — вполне стандартный процесс. Тем более — для производственных АСУ. Только там сервера зеркалируются в горячем резерве.
Завесить его довольно просто. Если он останется без связи на пару часов, то уходит в коматоз. Пару раз проверено лично. Причины могут быть разные: нарушение сетевой связности, падение сервера, свича, падение электричества в разных местах.
Вы этой публикацией процитировали один из старых уроков Алекса Квазиса по отказоусточивости. У него же есть и про резервирование координатора. Правда оно срабатывает не полностью. У меня часть устройств не переключалась.
Я пишу статьи, основываясь на своем опыте. Видимо он совпал с опытом Алекса.
Zigbee lan coordinator прекрасно работает как «удлиннитель» свистка (чем по сути и является). Например его удобно расположить в точке выгодного радиопокрытия, либо покрыть ещё одним координатором дополнительное помещение. В таких сценариях он прекрасно работает. Пытаться натянуть на него ещё роль резервирования… ну такое себе.
Резервирование вполне возможно и без него. Две малинки, два одинаковых свистка (с одинаковыми id). Вторая стоит в слейве и молчит. RTO минуты, потом на слейве поднимается zigbe2mqtt и работа восстанавливается на резервном сервере. RPO нас не особо интересует, конфиги синхрим при изменении. На статсистику пофиг.
Но по сути появляется томагочи, за которой надо приглядывать. Гораздо проще и правильнее повысить отказоустойчивость сервера HA. Взять вместо малинки старенький ноут. В нем и батарейка какая-никакая есть — резервируется питание. И сама платформа помощнее и понадежнее. И запас производительности есть на всякие прочие домашние нужды.
Итог: устройства не подключились.
Можно будет попробовать на CC2652, но это видимо позже.
1)Перепривязка при сдыхании центрального контроллера
2)Отсутствие более-менее приличного функционала при биндинге (т.е при прямом управлении актуатора датчиком без центрального контроллера)- максимум это связать например кнопку выключателя с лампочкой или реле например, либо термодатчик с реле, которое например при +25 будет отрубаться. Большей гибкости не видел (в том же древнем knx гораздо гибче функционал общения устройств между собой настраивается- там часто центральный контроллер особо и не нужен)
3)мягко скажем так странная логика разработчиков в большинстве устройств- есть определенное количество намертво прибитых регистров и дальше не прыгнешь. Порой встречаешь устройства куда понапихали кучу всяких функций в регистрах, которые никому никогда не понадобятся (ну нафига например реле для штор считать сколько электроэнергии потратила штора на открытие и сколько углекислоты выбросила электростанция при открытии шторы). При этом забыть про функцию- задать жестко время открытия/закрытия, а не использовать контроль по току (действительно, кроме приводов с механическими концевиками других то не существует). Я до сих пор эту историю с кучей матов вспоминаю в сторону разрабов.
4)Вопрос к удобству монтажа и безопасности устройств, например которые прячуться в подрозетники- по удобству- зачем думать как монтажник будет прятать «умное» реле в подрозетник и расключать нули и фазы чтобы подать например ноль на реле и на лампочку, а фазу на реле, на контакт реле и на кнопку- куда я те же ваги буду впихивать, если все место релюшка с кнопкой заняли??? Глубже подрозетники не предлагать (куда уж глубже))). По безопасности- вопрос к качеству клемм часто возникает (что, разработчики вообще не в курсе что скорее всего в их хлам будут пихать кабель в 2,5 квадрата например, но при этом поставим самый лютый дешман в который больше 0,75 не забьешь без молотка, но шаг контактов такой, что и нормальные клеммы можно впаять было), к тому как сделана трассировка, к тому что релюшка внутри например на 10 ампер (и то китайских) а кто-нибудь розетку захочет коммутировать и т.д и прочее.
Короче не люблю я беспровод, очень не люблю.
В большей части устройств не реализован выбор действия после подачи питания. В большинстве встраиваемых релюшек и диммеров нет возможности выбрать тип подключаемого выключателя (с фиксацией, без фиксации) и как реагировать на выключатель с фиксацией (повторять состояние, инвертировать или флипать каждое изменение). У большей части диммеров нет переключения диммирования по переднему/заднему фронту, задания минимальной яркости. У тех же диммеров управление с логикой, сделанной чужими для хищников — нет возможности из выключенного состояния сразу включить минимальный или максимальный уровень яркости, у особо упоротых с кнопочным интерфейсом — нет смены направления яркости при отпускании клавиши (понизить яркость можно только после включения на максимальную яркость). Про совместимость (вернее, её отсутствие) между разными устройствами даже и вспоминать не хочется.
В итоге получаем, что KNX — очень дорого и требуется закладывать ещё на этапе электрики. Решения на ПЛК — максимально гибко и по деньгам сравнимо с Zigbee, но также требуется проектирование на этапе прокладывания электрики. Ну и единая точка отказа в виде самого ПЛК. Zigbee -достаточно дёшево, но всё оборудование нужно выбирать крайне тщательно и всё равно потом костылять в процессе настройки. Несмотря на распределённость и теоретическую возможность локального управления без единой точки отказа, на практике, выстроить что-то приличное, что будет переживать отказ сервера, не так-то просто. Возможно, у Z-Wave ситуация с совместимостью оборудования лучше, но с учётом разницы цен с zigbee аналогами в 2-3 раза, привлекательность резко падает. Ну и функционал не факт, что сильно лучше там (сам не работал с этим протоколом никогда).
По плк- видел тот щиток ваш, да:))) Шамановский стиль:))) Кстати, у меня квартирой в полуэкспериментальном режиме плк от Beckhoff рулит:)) По сути 750 ваги от бекхоффа и произошли:))) У меня правда модули уже по современной ethercat шине с плк общаются, а не по старой k-bus шине. Но пока кроме освещения особо ничего не заведено. Хотя как-нибудь отоплением, вентиляцией, увлажнением и прочими вещами займусь.
А по зигби- я все-таки хочу поэкспериментировать, но не в качестве рабочего решения, а так, чисто на столе поиграться, хотя есть некоторое желание реализовать одну задачку, используя зигби (но при этом мне нужно 100% уверенность, что я смогу при необходимости перенести управление с одного контроллера на другой без перепривязки, т.к у меня не будет доступа к устройствам после отладки- а точнее будет весьма затруднен). А так- тут на днях друг спрашивал по оборудованию для решения своей задачки- ему надо в паре комнат поддерживать температуру, регулируя игольчатым клапаном на батареях и нет при этом возможности проложить провода- короче изучали что по головкам и по их умению работать с внешними термодатчиками (пусть и через контроллер)- в общем, теоретически рабочее решение с большинством головок будет через одно место по факту. Посмотрим что выйдет в итоге.
В zigbee2mqtt EFR еще в статусе экспериментальной поддержки. Я его тестировал и часть устройств просто не смог подключить
Дальность в квартирных условиях метров 10. Из одного угла квартиры в другой может не добить. Надо посередине ставить.
Не забывайте, это mesh сеть. Если есть роутеры, то через них сеть расширяется сама.
github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator