I have a heartbeat process where one message is sent to the message broker. This is picked up by several devices which send a response message.
The response message is read by an MQTT automation which uses TTS to speak the message.
It all works fine when only a single device is responding. However, if several devices respond at the same time only the last message is picked up by the automation.
The documentation says that setting a QoS of 1 or 2 should get the queue to process correctly in sequence. But the messages generated always have the QoS set to 0.
I have tried, setting QoS in device’s write statement:
- mqtt.publish_json:
topic: heartBeat/Response
payload: |-
root["Device"]="DoorBell";
std::string val2 = id(textStatus).state;
root["Status"] = "DoorBell " + val2;
qos: 2
I have tried writing the message directly with the tools on MQTT settings page.
I have used Node-Red to generate a new message with the QoS set to 2.
In all cases when the message is read by the automation, the QoS is 0.
Environment is a Pi 5 with 4gb memory initially built with the PI imaging tool.
Core software is 2025.12.5
ESP Device Builder is 2025.12.4
Mosquito Broker is version 6.5.2