У меня, собственно, как и у многих, знакомство с zigbee началось именно с шлюза Xiaomi, нескольких кнопок и датчиков. При всех его плюсах быстро обнаружились и недостатки, невозможность добавлять в сеть устройства других производителей, привязка к китайскому облаку и т.д. Поэтому появилась идея сделать модернизацию шлюза, в попытке избавить его от недостатков.
Как альтернатива этому шлюзу появились координаторы в виде USB «стиков» второй или третьей версии. Свободные от недостатков шлюза Xiaomi, но требующие для своей работы дополнительное аппаратное и программное обеспечение. Но время не стоит на месте, появились проекты автономных шлюзов на ESP32, это ZESP от @DJONvl и SLS от @avenit. Эти проекты дали толчок к идее модернизации оригинального шлюза Xiaomi, путем замены платы управления на собственную.
Разборка шлюза не составляет особых проблем при наличии специального инструмента (можно использовать отвертку с прямым шлицем, в котором надо сделать пропил)
Разобранный шлюз выглядит так. Видно две платы, одна с блоком питания и светодиодами, вторая с модулем WiFi+процессор от Marvell, за zigbee отвечает JN5169. Ее и будем менять.
В основе новой схемы лежит модуль ESP32-Wrover-B, со стороны zigbee предусмотрен выбор из нескольких готовых модулей, СС2538+СС2592, E75-2G4M10S, E75-2G4M20S, E18-MS1PA1-PCB. На плате разведен USB-UART на CH340E, который можно использовать как для прошивки ESP32, так и для взаимодействия с модулями zigbee напрямую, выбор осуществляется распайкой перемычек. Так же на плате есть аудио усилитель SSM2211 для использования штатного динамика. Для построения шлюза в минимальной конфигурации, достаточно распаять только ESP32 и модуль zigbee, прошивку ESP32 можно осуществить внешним USB-UART адаптером через соответствующий разъем. Для прошивки модулей необходимы cc-debugger SmartRF04EB для СС2530 и JTAG программатор для СС2538Плату проектировал в EasyEDA
Заказывал на jlcpcb (5 плат с доставкой $8)
Примерка, с размерами нет проблем.Все направляющие и защелки на своих местах.
Первая встреча с оригиналом
Можно приступать к пайке
Проверка результата
На модулях есть антенны на платах и разъемы ipx, если нужно улучшить условия приема/передачи. Удобно использовать антенны такого типа, гибкие на самоклеющейся основе.
Для тестов в плату была загружена прошивка шлюза SLS. Интерфейс с подключенными устройствами выглядит так в текущей версии реализована локальная логика, т.е. можно настроить взаимодействие между устройствами zigbee разных производителей без использования УД.
Примеры
- single, lamp_1, state, TOGGLE — Для кнопки, при одиночном нажатии переключает режим lamp_1
- ON, 0x00158D00007350D9, state, OFF; OFF, 0xABCD, state, ON — Для выключателя, инвертирует режим для реле
- single, door_lock, state, LOCK; double, door_lock, state, UNLOCK — Закрывает замок при клике, открывает при двойном
- torsher_lamp — Передает в torsher_lamp текущее состояние
- <40, humidifier, state, ON; >60, humidifier, state, OFF — Для датчика влажности, включает увлажнитель если влажность меньше 40% и выключает если больше 60%
Для связи с серверами «умного дома» используется протокол MQTT. Данный протокол поддерживается практически всеми системами ориентированными на управление IoT.
Например в MajorDoMo, стараниями @Dmitrii_Sannikov в его модуле ваши устройства через этот шлюз будут выглядеть так
Пара коротких видео с демонстрацией. Родные светодиоды работают, можно использовать цветовые схемы в различных сценариях.
Можно оценить качество звука
На базе этой платы можно собрать несколько устройств, распаяв на плате одну из комбинаций деталей.
- ESP32+zigbee модуль = универсальный шлюз zigbee
- Модуль zigbee+usb-uart = координатор zigbee для использования с zigbee2mqtt, ioBroker и т.д.
- ESP32 + усилитель = Интернет-радио, светильник RGB
Для желающих повторить, gerber файлы и ВОМ можно взять здесь.
На текущий момент проверена работа с модулями на чипах СС2538 и СС2530.
Устройство можно обсудить в профильном чате телеграм.