github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/doc/content/ru/docs/plugins/zibee2mqtt.md (about) 1 2 --- 3 title: "Zigbee2mqtt" 4 linkTitle: "zigbee2mqtt" 5 date: 2021-10-20 6 description: > 7 8 --- 9 10 Плагин "Zigbee2mqtt" является частью системы и предоставляет интеграцию между Zigbee-устройствами и MQTT-брокером. Этот 11 плагин позволяет контролировать и управлять Zigbee-устройствами через MQTT-сообщения. 12 13 В плагине "Zigbee2mqtt" реализован JavaScript-обработчик `zigbee2mqttEvent`, который не принимает параметры. Внутри 14 обработчика доступен объект `message`, представляющий информацию о полученном MQTT-сообщении. 15 16 Свойства объекта `message` включают: 17 18 1. `payload`: Значение сообщения, представленное в виде словаря (map), где ключи являются строками, а значения могут быть любого типа. 19 2. `topic`: Топик MQTT-сообщения, указывающий на источник или назначение сообщения. 20 3. `qos`: Уровень качества обслуживания (Quality of Service) MQTT-сообщения. 21 4. `duplicate`: Флаг, указывающий, является ли сообщение дубликатом. 22 5. `storage`: Объект `Storage`, предоставляющий доступ к хранилищу данных для кеширования и получения произвольных значений. 23 6. `error`: Строка, содержащая информацию об ошибке, если таковая возникла при обработке сообщения. 24 7. `success`: Булево значение, указывающее на успешное выполнение операции или обработку сообщения. 25 8. `new_state`: Объект `StateParams`, представляющий новое состояние актора после выполнения операции. 26 27 Пример использования обработчика `zigbee2mqttEvent`: 28 29 ```javascript 30 function zigbee2mqttEvent(message) { 31 console.log("Received MQTT message:"); 32 console.log("Payload:", message.payload); 33 console.log("Topic:", message.topic); 34 console.log("QoS:", message.qos); 35 console.log("Duplicate:", message.duplicate); 36 37 if (message.error) { 38 console.error("Error:", message.error); 39 } else if (message.success) { 40 console.log("Operation successful!"); 41 console.log("New state:", message.new_state); 42 } 43 44 // Доступ к хранилищу 45 const value = message.storage.getByName("key"); 46 console.log("Value from storage:", value); 47 } 48 ``` 49 50 Обработчик `zigbee2mqttEvent` может быть использован для обработки входящих MQTT-сообщений, а также для выполнения 51 дополнительных операций на основе полученных данных. 52 53 ```coffeescript 54 zigbee2mqttEvent =(message)-> 55 #print '---mqtt new event from plug---' 56 if !message || message.topic.includes('/set') 57 return 58 payload = unmarshal message.payload 59 attrs = 60 'consumption': payload.consumption 61 'linkquality': payload.linkquality 62 'power': payload.power 63 'state': payload.state 64 'temperature': payload.temperature 65 'voltage': payload.voltage 66 EntitySetState ENTITY_ID, 67 'new_state': payload.state 68 'attribute_values': attrs 69 ``` 70 71 ```coffeescript 72 zigbee2mqttEvent =(message)-> 73 #print '---mqtt new event from button---' 74 if !message 75 return 76 payload = unmarshal message.payload 77 attrs = 78 'battery': payload.battery 79 'linkquality': payload.linkquality 80 'voltage': payload.voltage 81 state = '' 82 if payload.action 83 attrs.action = payload.action 84 state = payload.action + "_action" 85 if payload.click 86 attrs.click = payload.click 87 attrs.action = "" 88 state = payload.click + "_click" 89 EntitySetState ENTITY_ID, 90 'new_state': state.toUpperCase() 91 'attribute_values': attrs 92 ```