Добавление неподдерживаемых устройств в Zigbee2MQTT

  • Михаил
  • 8 мин. на прочтение
  • 184
  • 16 Oct 2024
  • 16 Oct 2024

Процесс сопряжения устройств IKEA и Xiaomi прошел хорошо. С Zemismart Zigbee RGB Downlight (обзор скоро) тоже все было просто , но мне не удалось прочитать состояние или управлять устройством, так как Zemismart Zigbee RGB Downlight не было в списке поддерживаемых устройств. Я подумал, что стоит описать процедуру на случай, если вы застрянете с добавлением новых устройств в Zigbee2MQTT.

Сопряжение новых устройств с Zigbee2MQTT

Сопряжение зависит от инструкций производителя, поэтому, пожалуйста, обратитесь к ним, чтобы узнать, как ввести правильное состояние сопряжения с помощью сброса. Хотя сопряжение пультов IKEA и Aqara для освещения и датчиков уже хорошо описано в руководстве, вы не получите много подсказок для других устройств. Убедитесь, что ваш файл .configuration.yaml имеет  permit_join: true

#открыть файл конфигурации 
sudo nano /opt/zigbee2mqtt/data/configuration.yaml

#Остановка zigbee2mqtt
sudo systemctl stop zigbee2mqtt

#Запуск zigbee2mqtt
sudo systemctl start zigbee2mqtt

#Просмотр журнала zigbee2mqtt 
sudo journalctl -u zigbee2mqtt.service -f

Просто держите устройство рядом в режиме сопряжения, пока не увидите следующие строки:

 zigbee2mqtt:warn 6/7/2019, 12:26:07 PM Message without device!
 zigbee2mqtt:info 6/7/2019, 12:26:16 PM New device 'undefined' with address 0x00124b001c889570 connected!
 zigbee2mqtt:info 6/7/2019, 12:26:16 PM MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"device_connected","message":"0x00124b001c889570","meta":{}}'
 zigbee2mqtt:warn 6/7/2019, 12:26:16 PM Device with modelID 'undefined' is not supported.
 zigbee2mqtt:warn 6/7/2019, 12:26:16 PM Please see: https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html      

Это означает, что ваше устройство сопряжено, и вы можете открыть configuration.yaml и назвать его. Оно будет указано как последнее устройство в списке:

'0x00124b001c889570':
     friendly_name: ' 0x00124b001c889570'
     retain: false

change to:

 '0x00124b001c889570':
     friendly_name: 'spotlight'
     retain: false 

Сохраните файл и перезапустите службу Zigbee2MQTT или перезагрузите Raspberry Pi. На этом этапе вы готовы добавить новое устройство в список.

На этом этапе сделайте себе одолжение и держите устройство поближе к cc2531. Я расстроился и захотел продолжить работу внизу, поэтому я вынес устройство за пределы сети ZigBee, не осознавая этого.

Для управления новым устройством мне пришлось изменить файл. Без этого я не смог бы отправлять команды. Открыть: node_modules/zigbee-herdsman-converters/devices.js

sudo nano /opt/zigbee2mqtt/node_modules/zigbee-herdsman-converters/devices.js

Затем добавьте новое устройство согласно шаблону :

{
   zigbeeModel: ['lumi.sens'], // The model ID from: Device with modelID 'lumi.sens' is not supported.
   model: 'WSDCGQ01LM', // Vendor model number, look on the device for a model number
   vendor: 'Xiaomi', // Vendor of the device (only used for documentation and startup logging)
   description: 'MiJia temperature & humidity sensor ', // Description of the device, copy from vendor site. (only used for documentation and startup logging)
   supports: 'temperature and humidity', // Actions this device supports (only used for documentation)
   fromZigbee: [], // We will add this later
   toZigbee: [], // Should be empty, unless device can be controlled (e.g. lights, switches).
},

Обратите особое внимание на: &, так как их можно заменить на: fromZigbee: [] & toZigbee: []

extend: generic.light_onoff_brightness_colortemp,

Если вы посмотрите на верхнюю часть файла шаблона (вверху), вы увидите несколько шаблонов управления, сохраненных под и . Проверьте, какие возможности управления/отчетности есть у вашего устройства, и добавьте вместо них одну строку.generic.xxxxx hue.xxxxgledopto.xxxxextend

extend: generic.light_onoff_brightness_colortemp,
is equal to:
fromZigbee: generic.light_onoff_brightness_colortemp.fromZigbee,
toZigbee: [tz.gledopto_light_onoff_brightness, tz.gledopto_light_colortemp, tz.ignore_transition, tz.light_alert,],

Поскольку я знаю, что мое устройство поддерживает переключение, регулировку яркости и управление цветом, я добавил следующую конфигурацию

{
    zigbeeModel: ['NUET56-DL27LX1.1'], 
    model: 'LXZB-12A', 
    vendor: 'Zemismart', 
    description: 'RGB LED Downlight', 
    supports: 'RGB, Dimming',
    extend: gledopto.light_onoff_brightness_colortemp_colorxy
}, 

Мне не пришлось пересчитывать значения, но ваш случай может быть другим. На странице Zigbee2MQTT упоминалось, что вам может потребоваться сделать это, если ваш протокол Zigbee несовместим. Поскольку у меня не было устройства для проверки, я не смогу вам помочь.

Основы управления Zigbee2MQTT

После настройки устройства мы можем добавить узлы MQTT для его управления. Чтобы прочитать статус устройства, добавьте MQTT в узел и выполните отладку с помощью:

zigbee2mqtt/devicename

Поменяйте соответствующие значения, если вы отредактировали тему Zigbee2MQTT и ввели имя вашего устройства. Если вы выдаете следующий JSON:

{
    "state": ""
}

На выходной узел MQTT вы получите обновление статуса следующего вида:zigbee2mqtt/devicename/get

{"topic":"zigbee2mqtt/spotlight1","payload":"{\"state\":\"ON\",\"linkquality\":78,\"brightness\":254,\"color\":{\"x\":0.6173,\"y\":0.3694},\"color_temp\":155}","qos":0,"retain":false,"_msgid":"9de88d8c.894a5"}

Если вы хотите управлять устройством ZigBee, просто отправьте сообщение JSON:

{
     "state": "ON",
     "brightness": 255,
     "color_temp": 155,
     "color": {
         "hex": "#ea770b"
     }
 }

С изменениями, которые вы хотите сделать. Вам не нужно передавать все данные, только значения JSON, которые вы хотите установить. zigbee2mqtt/devicename/set

Возможные проблемы?
Помехи от Raspberry Pi также являются известным фактором. Если ваше устройство работает нормально в терминале, но вы не можете подключить новые устройства, попробуйте подключить координатор через удлинительный кабель USB и отодвинуть его от Raspberry Pi.

Если у вас уже есть какие-то устройства в сети, особенно конечные устройства, и вы можете оказаться на пределе возможностей координатора, и вам нужен более мощный, обратите внимание на CC2652R от Electrolama и руководство по увеличению количества до 50 прямых потомков и 200 устройств.

Заключение
Этот процесс не так дружелюбен для новичков, как добавление устройств Xiaomi или IKEA, но со временем список поддерживаемых устройств станет больше. Теперь вы должны знать, как добавлять и использовать новые устройства в Zigbee2MQTT. Скоро я покажу вам классные сценарии управления с использованием различных пультов дистанционного управления.