Mqtt
Предостовляет возможность публиковать сообщения в mqtt брокере
Качество обслуживания в протоколе MQTT (QoS)
QoS 0 At most once. На этом уровне издатель один раз отправляет сообщение брокеру и не ждет подтверждения от него, то есть отправил и забыл.
QoS 1 At least once. Этот уровень гарантирует, что сообщение точно будет доставлено брокеру, но есть вероятность дублирования сообщений от издателя. После получения дубликата сообщения, брокер снова рассылает это сообщение подписчикам, а издателю снова отправляет подтверждение о получении сообщения. Если издатель не получил PUBACK сообщения от брокера, он повторно отправляет этот пакет, при этом в DUP устанавливается «1».
QoS 2 Exactly once. На этом уровне гарантируется доставка сообщений подписчику и исключается возможное дублирование отправленных сообщений.
Объект “Mqtt” в проекте Smart Home предоставляет следующий метод:
publish(topic, payload, qos, retain)
: Этот метод используется для публикации сообщений на MQTT-брокере. Вы передаете аргументыtopic
(тема),payload
(содержимое сообщения),qos
(уровень обслуживания качества) иretain
(флаг “retain”).
topic
: Строка, представляющая тему, на которую будет опубликовано сообщение.payload
: Содержимое сообщения, которое может быть строкой, объектом или бинарными данными.qos
: Уровень обслуживания качества (Quality of Service) определяет гарантии доставки сообщений. Возможные значения: 0 (минимальная гарантия доставки), 1 (гарантия доставки с подтверждением) или 2 (точная доставка с повторной отправкой при необходимости).retain
: Флаг, указывающий, должно ли сообщение сохраняться на брокере и передаваться новым подписчикам. Значения: true (сохранять) или false (не сохранять).
Пример использования:
const topic = 'smart-home/living-room/light';
const payload = 'on';
const qos = 1;
const retain = true;
Mqtt.publish(topic, payload, qos, retain);
Метод publish
позволяет отправлять сообщения на MQTT-брокер для передачи информации и управления устройствами или системой в целом в вашем проекте Smart Home.
объект Mqtt
# публикация сообщения
Mqtt
.publish(topic, payload, qos, ratain)
значение | описание |
---|---|
topic | канал для сообщения |
payload | json объект предназначеный для передачи |
qos | качества обслуживания (1,2,3) |
retain | при публикации данных с установленным флагом retain, брокер сохранит его. При следующей подписке на этот топик брокер незамедлительно отправит сообщение с этим флагом. Используется только в сообщениях с типом PUBLISH. |
пример кода
# mqtt
# ##################################
payload = JSON.stringify({"state": actionName})
Mqtt.publish"zigbee2mqtt/device/set", payload, 0, false)