MQTT Arduino добавить качество обслуживания

Я делаю проект с MQTT Arduino, но в сообщениях о публикации я читаю, что невозможно опубликовать с qos 1 и 2? Это правда? Если нет, то как я могу поставить qos на публикацию сообщений?

, 👍1


1 ответ


Лучший ответ:

1

Какой клиент MQTT вы используете?

Перефразировано из спецификации MQTT http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718099

Протокол MQTT обеспечивает три качества обслуживания для доставки сообщения между клиентами и серверами: "не более одного раза", QOS0; "не менее одного раза" QOS1; и "ровно один раз" QOS2. Для QOS 1 и 2: Сообщение должно храниться локально у издателя до тех пор, пока издатель не получит подтверждение того, что сообщение доставлено получателю. Однако для QOS0 нет никаких требований к хранению.

Проблема с Arduino заключается в том, что нет большого количества доступных хранилищ. Если клиент отключен от брокера при использовании QOS 1 или 2, клиент должен хранить сообщения до тех пор, пока соединение не будет восстановлено и передача сообщений не будет подтверждена. На Arduino нет никакой гарантии, что все сообщения могут быть сохранены. Рассмотрим узел датчика,собирающий 16 бит (значение int) каждую секунду. Затем предположим, что брокер выходит из строя в выходные, а ремонтнику не платят за работу в выходные. Это два дня данных или 172800 показаний, или около 1/3 МБ (без накладных расходов). У Arduino не так много памяти.

,