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