My gateway connects to an MQTT broker which connects to Home Assistant. My problem is that if I don’t have a wait(mS) after the send(msg), packets get lost. I have found that I need to wait 2000 mS so that packets don’t get lost.
On the flip side, if I request:
request(CHILD_ID_SAMPLE_INTERVAL,V_TEXT);
wait(2000,2,V_TEXT); // wait 2secs or until a V_TEXT message is received
if (SamplePeriodReceived) {
SamplePeriodReceived=false;
MY_SERIALDEVICE.print(F("----------------Sample Period sync'd:"));MY_SERIALDEVICE.println(SamplePeriod);
}
else {
MY_SERIALDEVICE.println(F("----------------Sample Period NOT sync'd: "));
return;
}
I get a response sufficiently quick.
(Notes:
- the documentation says that the second parameter in wait() is a command, I put 2, for “req” and it works, but I don’t have a clue why it is there, but needs to be there so that the wait will wait for either the timeout or a V_TEXT packet coming in.)
- SamplePeriodReceived is set true in the interrupt service routine receive().
How can I speed up the sends?
OSD