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  ```