github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/doc/content/ru/docs/javascript/mqtt.md (about)

     1  ---
     2  title: "Mqtt"
     3  linkTitle: "mqtt"
     4  date: 2021-11-20 
     5  description: >
     6  
     7  ---
     8  
     9  Предостовляет возможность публиковать сообщения в mqtt брокере
    10  
    11  #### Качество обслуживания в протоколе MQTT (QoS)
    12  
    13  QoS 0 At most once. На этом уровне издатель один раз отправляет сообщение брокеру и не ждет подтверждения от него, то есть отправил и забыл.
    14  
    15  QoS 1 At least once. Этот уровень гарантирует, что сообщение точно будет доставлено брокеру, но есть вероятность дублирования сообщений от издателя. После получения дубликата сообщения, брокер снова рассылает это сообщение подписчикам, а издателю снова отправляет подтверждение о получении сообщения. Если издатель не получил PUBACK сообщения от брокера, он повторно отправляет этот пакет, при этом в DUP устанавливается «1».
    16  
    17  QoS 2 Exactly once. На этом уровне гарантируется доставка сообщений подписчику и исключается возможное дублирование отправленных сообщений.
    18  
    19  {{< alert color="success" >}}Функция доступна в любом скрипте системы.{{< /alert >}}
    20  
    21  Объект "Mqtt" в проекте **Smart Home** предоставляет следующий метод:
    22  
    23  1. `publish(topic, payload, qos, retain)`: Этот метод используется для публикации сообщений на MQTT-брокере. Вы передаете аргументы `topic` (тема), `payload` (содержимое сообщения), `qos` (уровень обслуживания качества) и `retain` (флаг "retain").
    24  
    25  - `topic`: Строка, представляющая тему, на которую будет опубликовано сообщение.
    26  - `payload`: Содержимое сообщения, которое может быть строкой, объектом или бинарными данными.
    27  - `qos`: Уровень обслуживания качества (Quality of Service) определяет гарантии доставки сообщений. Возможные значения: 0 (минимальная гарантия доставки), 1 (гарантия доставки с подтверждением) или 2 (точная доставка с повторной отправкой при необходимости).
    28  - `retain`: Флаг, указывающий, должно ли сообщение сохраняться на брокере и передаваться новым подписчикам. Значения: true (сохранять) или false (не сохранять).
    29  
    30  Пример использования:
    31  
    32  ```javascript
    33  const topic = 'smart-home/living-room/light';
    34  const payload = 'on';
    35  const qos = 1;
    36  const retain = true;
    37  
    38  Mqtt.publish(topic, payload, qos, retain);
    39  ```
    40  
    41  Метод `publish` позволяет отправлять сообщения на MQTT-брокер для передачи информации и управления устройствами или системой в целом в вашем проекте **Smart Home**.
    42  
    43  ----------------
    44  
    45  ### объект Mqtt
    46  
    47  ```coffeescript
    48  # публикация сообщения
    49  Mqtt
    50    .publish(topic, payload, qos, ratain)
    51  ```
    52  
    53  |  значение  | описание  |
    54  |-------------|---------|
    55  | topic | канал для сообщения |
    56  | payload | json объект предназначеный для передачи |
    57  | qos | качества обслуживания (1,2,3) |
    58  | retain | при публикации данных с установленным флагом retain, брокер сохранит его. При следующей подписке на этот топик брокер незамедлительно отправит сообщение с этим флагом. Используется только в сообщениях с типом PUBLISH. |
    59  
    60  ----------------
    61  
    62  ### пример кода
    63  
    64  ```coffeescript
    65  # mqtt
    66  # ##################################
    67  
    68  payload = JSON.stringify({"state": actionName})
    69  Mqtt.publish"zigbee2mqtt/device/set", payload, 0, false)
    70  
    71  ```