Прикручиваем датчики Zigbee к домотикзу в обход Xiaomi шлюза
Источник "вдохновения": Данные летят в Китай? Только ты не допускай!
Порядок действий:
0. Хорошенько думаем, надо ли оно нам
1. Покупаем "железо"
2. Прошиваем CC2531
3. Устанавливаем софт передающий состояния ZegBee датчиков в MQTT
4. Привязываем устройства
5. Устанавливаем Node-RED
6. Настраиваем взаимодействие MQTT >>> Domoticz
Приступим...
0. Хорошенько думаем, надо ли оно нам
Похоже что датчики нельзя привязать одновременно к шлюзу Xiaomi и "юсб-свистку". Либо там, либо там. Это сильно печалит, так-как нет возможности дублирования систем. С другой стороны, эта система может выйти в два раза дешевле шлюза (если брать уже прошитый СС2531)1. Покупаем "железо"
Что требуется из устройств (помимо Raspberry):
1. юсб-свисток USB dongle CC2531 (БЕЗ ШЛЕЙФА!!! Если будете брать программатор, то и шлейф будет обязательно нужен!)
2. программатор CC Debugger
3. Шлейф-переходник (и там же можно взять и модуль CC2531)
Всё можно приобрести на алиэкспресс. Это не реклама, но я покупал там, и всё пришло целое и работоспособное.
2. Прошиваем CC2531
По инструкции прошиваем юсб-свисток.
С прошивкой проблем быть вообще не должно. Всех делов на минуту. Цитирую:
Нужно установить прошивальщик и скачать прошивку. Процесс прошивки очень быстрый — несколько секунд.
3. Устанавливаем софт передающий состояния ZegBee датчиков в MQTT
После прошивки, устанавливаем zigbee2mqtt или xiaomi-zb2mqtt или AqaraHub
Рекомендую zigbee2mqtt - в ней самые удобные сообщения с которыми наиболее легко работать в Node-Red.
В xiaomi-zb2mqtt - не работает одиночный клик кнопки (возможно что-то еще, но на этом я остановил "знакомство" с этой библиотекой)
AqaraHub - шлет слишком замудрённые сообщения, и как-то странно работает с датчиком движения и датчиком открытия дверей (нужно долго копаться и разбираться), но при этом, здесь самое удобное сопряжение устройств.
4. Привязываем устройства
zigbee2mqtt
Привязка датчика по инструкции:
1. Останавливаем службу и Запускаем сервер
# Остановка zigbee2mqtt
sudo systemctl stop zigbee2mqtt
cd /opt/zigbee2mqtt
npm start
В консоли при этом должно быть что-то такое (датчик движения):
spinlock: false []
2018-7-27 17:44:26 INFO New device with address 0x004357865746363 connected!
2018-7-27 17:44:26 INFO MQTT publish, topic: 'zigbee2mqtt/bridge/log', payload: '{"type":"device_connected","message":"0x004357865746363"}'
2018-7-27 17:44:34 INFO MQTT publish, topic: 'zigbee2mqtt/0x004357865746363', payload: '{"occupancy":true}'
2018-7-27 17:44:46 INFO MQTT publish, topic: 'zigbee2mqtt/0x004357865746363', payload: '{"occupancy":true}'
2018-7-27 17:44:51 INFO MQTT publish, topic: 'zigbee2mqtt/0x004357865746363', payload: '{"occupancy":true}'
2018-7-27 17:45:19 INFO Device incoming...
2018-7-27 17:45:19 INFO MQTT publish, topic: 'zigbee2mqtt/bridge/log', payload: '{"type":"pairing","message":"device incoming"}'
2018-7-27 17:45:51 INFO MQTT publish, topic: 'zigbee2mqtt/0x004357865746363', payload: '{"occupancy":false}'
xiaomi-zb2mqtt
Привязка датчика по инструкции:
1. Запускаем сервер
cd xiaomi-zb2mqtt
node index.js
Результат: библиотека xiaomi-zb2mqtt - видит датчик движения, при обнаружении движения в консоли выводит:
attreport: 0x0012340001234567 260 1 { cid: 'msOccupancySensing', data: { occupancy: 1 } }
MQTT Reporting to xiaomiZb/0012340001234567/occupancy value 1
AqaraHub
Привязка датчика по инструкции:
1. Запускаем сервер
cd /home/pi/AqaraHub/build
./AqaraHub --port /dev/ttyACM0 --mqtt mqtt://localhost:1883/ --topic AqaraHub
mosquitto_pub -h localhost -t AqaraHub/write/permitjoin -m 60
5. Устанавливаем Node-RED
Как установить Node-RED я описывал здесь: https://digitallez.blogspot.com/2018/07/node-red.html
6. Настраиваем взаимодействие MQTT >>> Domoticz
Пример сценария можно взять тут: 4pda.ruМои примеры для всех трех библиотек выкладываю ниже.
Прошу обратить внимание:
а) В ноде switch нужно проставить реальные идентификаторы своих устройств (их видно во время сопряжения, и они имеют приблизительно такой вид: 0x004357865746363)
б) В нодах следующих сразу после switch вам нужно будет правильно указать idx ваших устройств (из домотикза).
в) Также не забываем, при добавлении своих устройств, правильно выставлять тип устройства.
Мой сценарий для zigbee2mqtt в Node-RED (он более универсален примера с 4pda):
Для xiaomi-zb2mqtt я сценарий не стал дописывать (бросил эту затею), в связи с тем, что библиотека не очень хорошо работает:
Для AqaraHub я пробовал что-то таки нарисовать на Node-Red, но библиотека сыра, и я пока решил перейти к использованию zigbee2mqtt.
Скрипт Node-Red:
Комментарии
Отправить комментарий