- Цена: $4.50
Устал ждать поддержку Aqara bulb в HomeAssistant через Xiaomi gateway — настроил через Zigbee2mqtt. Обзор из серии «Смотрите, что я сделал по инструкции».
Серьезно, быстро не нашел ПРОСТОЙ инструкции, как прошить CC2530 без cc debugger (через обычный USB-to-TTL не прошивается). Описанное ниже делается за 30 мин и сразу все работает.
Итак, в наличии сам CC2530, ESP32 и Raspberry 3B. Опционально USB-to-TTL. Ну и проводки, 7шт.
(Актуально для любого ARM одноплатника например OrangePi)
Прошивка сс2530
Шаги ниже сделаны согласно инструкциям с myzigbee.ru — проверено на Win10.
Качаем некий VLK DIY Multi Flasher. Вообще прога — обертка над esptool и задумывалась для прошивки ZESP — эдакий шлюз-координатор с WebUI, крутящийся на ESP32 — но мы будем ставить Zigbee2mqtt, очень уж он дружит с HomeAssistant.
Качаем Zigbee2mqtt прошу для CC2530. Я выбрал стабильную Stack 1.2 source_routing с поддержкой zigbee хабов.
Качаем дрова для ESP32 и ставим.
Соединяем выводы есп32 и сс2530 по таблице:
Подключаем к компу ESP32 к компу.
VLK DIY Multi Flasher находит ESP — скажем на COM4. Переходим на вкладку ZESP.
Нажимаем Erase chip.
Кнопка… — выбираем CC2530ZNP-Prod.hex прошивку.
Нажимаем Write Full flash.
Все — CC2530 прошит — ESP32 больше не нужна!
Подключение CC2530 к малинке
Все отсоединяем и присоединяем к малинке. Можно напрямую на пины малинки, но тогда надо выключить UART и пропадет BT. У меня есть простой USB-to-TTL — соединю через него (если надо — дополню про прямое соединение).
Подключаем USB-to-TTL в малинку — появится ttyUSB0. Наконец-то закончили с железом.
raspberrypi:~ $ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Dec 8 11:57 /dev/ttyUSB0
Настройка софта на малинке
HomeAssistant/HASSIO был поставлен в докере согласно www.home-assistant.io/hassio/installation/#alternative-install-on-a-generic-linux-host
В малинке нам нужен HomeAssistant/HASSIO и Mosquitto. Последнего можно ставить пакетом, а можно плагином для HASSIO. Я ставил пакетом:
raspberrypi:~ $ sudo apt-get install -y mosquitto mosquitto-clients
Открываем HomeAssistant, Настройки — Интеграции — Добавить — MQTT. Смотрим на собственный IP, порт 1883, ставим галку «Разрешить автодобавление устройств».
Шаги ниже сделаны согласно инструкциям с www.zigbee2mqtt.io
Открываем HomeAssistant, Hass.io — вкладка ADD-ON STORE — добавляем репу github.com/danielwelch/hassio-zigbee2mqtt
В списке находим Zigbee2mqtt — ставим.
Вкладка Dashboard — выбираем Zigbee2mqtt. Ниже в json конфиге меняем
"permit_join": true
"server": "свой IP"
"port": "/dev/ttyUSB0"
Перезагружаем add-on — в логах в самом низу страницы видим строчки
zigbee2mqtt:warn 2019-12-08T19:54:46: Allowing new devices to join. (новый конфиг подхватился)
zigbee2mqtt:info 2019-12-08T19:54:46: Connected to MQTT server (MQTT подхватился)
Наконец переходим к лампе — сбрасываем настройки — 5 раз включить/выключить с задержкой в 1сек — лампа пропульсирует. Сразу же в логах Zigbee2mqtt видим строчку:
zigbee2mqtt:info 2019-12-08T19:54:46: 0x00158d0002d6f384 (0x00158d0002d6f384): ZNLDP12LM - Xiaomi Aqara smart LED bulb device has successfully been paired.
Т.о. благодаря permit_join=true у Zigbee2mqtt новые устройства пускаются в сеть. А благодаря галке «Разрешить автодобавление устройств» у MQTT — HomeAssistant сам создаст устройство на основании первого MQTT сообщения от Zigbee2mqtt.
Профит
Переходим на /states — вот ты какая, лампа Акарыча:
Всё пока!