MQTT ESP Pub v6.8 MQTT_ESP_Pub_2_1 En e6a2f06b-1edf-47ea-9c35-676c3e2915e7 00819f1c-cc4d-4dde-b87d-a0eb0c313cc4 msg bb5fa827-986b-4013-b0ec-73b9edf88ca5 c07c8f0d-ee73-432d-90eb-7b99b6ff6e8e outTopic 30ddac93-d8e7-4f7d-8409-4ead14e60f92 26ea233c-840c-41ae-90f3-03f014937e6b 8c590bc8-de58-414c-af1e-1b1b12a9e4ab MQTT_ESP_Pub_2_1 if (En == 1) { client.publish(outTopic, (char*) msg.c_str()); } 64 Send Topic Message MQTT ESP Pub v4.0 MQTT_ESP_Pub_2_2 retain 3ea820f0-fd1a-4a73-8e03-2b7e56f5c181 be3db11c-0277-4e8c-ab61-4b68ef50376e f5726015-c59a-4020-a725-0167430a6314 MQTT_ESP_Pub_2_2 if (En == 1) { client.publish((char*) outTopic.c_str(), (char*) msg.c_str(), retain); } 88 Retain QoS 53168118-8a86-4b25-836b-88aa5b8134a3 e4e0bb9b-c92e-406b-b32f-0d85b245e5f0 e466b9d9-46d1-46fb-8230-e957f0e8faa2 MQTT_ESP_Pub_4_0 Send - при поступлении на данный вход единицы, будет отправлено сообщение по переднему фронту. (будет отправлено один раз) Message - сообщение, которое будет отправлено на брокер. Topic - топик, куда будет отправлено сообщение. (Пример: topic1/message1) Retain - если true, последнее отправленное сообщение сохраняется на mqtt брокере. Это сообщение будет получать подписчик при подключении к брокеру. 401 if (Send && mqttConnected) { if (sendTrigTwo) { sendTrigOne = 0; } else { sendTrigOne = 1; sendTrigTwo = 1; } } else { sendTrigOne = 0; sendTrigTwo = 0; } if (sendTrigOne) { client.publish(MQTT::Publish(Topic, Messsage) .set_retain(Retain) .set_qos(QoS) ); } 310 sendTrigOne ; bool sendTrigTwo ; bool MQTT ESP Pub v6.1 Delivered 62388cfa-5ab5-49c1-b207-b3455c39f5fd 22567c1b-3529-4bd6-a9c6-087e7eac7dc7 d15fd623-a6e6-45cc-9579-3b6ca552fe46 MQTT_ESP_Pub_6_1 - Send - при поступлении на данный вход единицы, будет отправлено сообщение один раз. Данный вход имеет встроенный Rtrig, не используйте внешний. - Topic - топик, куда будет отправлено сообщение. (Пример: topic1/message1) - Message - сообщение, которое будет отправлено на брокер. - QoS - можно указать 0, 1 или 2. Если не указывать ничего, то сообщение отправляется с QoS 0. Esp не сохраняет у себя неотправленные сообщения, вы должны сами проконтролировать, чтобы сообщение дошло до брокера с QoS 1 и 2. После чего брокер возьмет на себя ответственность по доставке сообщений с QoS 1 и 2. Подсказка: Используйте выход mqttConnected на блоке main, чтобы отправить сообщение только когда esp будет подключена к брокеру. Для более надежной проверки можно подписаться на топик в который вы отправляете данные, и если данные дошли, вы их увидите на выходе Message блока sub. QoS 0 - На этом уровне клиент один раз отправляет сообщение брокеру и не ждет подтверждения от него, то есть отправил и забыл. QoS 1 - Этот уровень гарантирует, что сообщение точно будет доставлено брокеру, но есть вероятность дублирования сообщений от клиента. После получения дубликата сообщения, брокер снова рассылает это сообщение подписчикам, а клиенту снова отправляет подтверждение о получении сообщения. QoS 2 - На этом уровне гарантируется доставка сообщений подписчику и исключается возможное дублирование отправленных сообщений. - Retain - если true, последнее отправленное сообщение сохраняется на mqtt брокере. Это сообщение будет получать подписчик при подключении к брокеру. Тема на форуме: https://forum.flprog.ru/viewtopic.php?t=4276 1625 if (Send) { if (sendTrigTwo) { sendTrigOne = 0; } else { sendTrigOne = 1; sendTrigTwo = 1; } } else { sendTrigOne = 0; sendTrigTwo = 0; } if (sendTrigOne) { pubPacketId = mqttClient.publish((char*) Topic.c_str(), QoS, Retain, (char*) Message.c_str()); } Delivered = 0; if (pubPacketId == packId) { Delivered = 1; } 341 sendTrigOne ; bool sendTrigTwo ; bool pubPacketId ; unsigned int qosDelivered 71153bb1-af6d-4af9-b167-66e48e2242ce MQTT_ESP_Pub_6_8 - Send - при поступлении на данный вход единицы, будет отправлено сообщение один раз. Данный вход имеет встроенный Rtrig, не используйте внешний. - Topic - топик, куда будет отправлено сообщение. (Пример: topic1/message1) - Message - сообщение, которое будет отправлено на брокер. - QoS - можно указать 0, 1 или 2. Если не указывать ничего, то сообщение отправляется с QoS 0. Esp не сохраняет у себя неотправленные сообщения, вы должны сами проконтролировать, чтобы сообщение дошло до брокера с QoS 1 и 2. После чего брокер возьмет на себя ответственность по доставке сообщений с QoS 1 и 2. Подсказка: Используйте выход mqttConnected на блоке main, чтобы отправить сообщение только когда esp будет подключена к брокеру. Для более надежной проверки можно подписаться на топик в который вы отправляете данные, и если данные дошли, вы их увидите на выходе Message блока sub. QoS 0 - На этом уровне клиент один раз отправляет сообщение брокеру и не ждет подтверждения от него, то есть отправил и забыл. QoS 1 - Этот уровень гарантирует, что сообщение точно будет доставлено брокеру, но есть вероятность дублирования сообщений от клиента. После получения дубликата сообщения, брокер снова рассылает это сообщение подписчикам, а клиенту снова отправляет подтверждение о получении сообщения. QoS 2 - На этом уровне гарантируется доставка сообщений подписчику и исключается возможное дублирование отправленных сообщений. - Retain - если true, последнее отправленное сообщение сохраняется на mqtt брокере. Это сообщение будет получать подписчик при подключении к брокеру. - Выход qosDelivered - нужен для контроля доставки сообщений с QoS 1 и 2 до брокера. При подаче и удерживании единицы на входе Send, на выходе qosDelivered будет единица, если сообщение доставлено на брокер. Единица будет держаться на данном выходе пока на входе Send не пропадет единица. Тема на форуме: https://forum.flprog.ru/viewtopic.php?t=4276 1914 pub(Send, Topic, Message, QoS, Retain, qosDelivered, packetId, rTrig); 70 rTrig ; bool packetId ; uint16_t