Strange behavior of radio message callback
-
Hi.
I've stumbled upon a strange behavior of radio meassge callback firing. I have a node with a temperature sensor and a relay.
In setup() I have
gw.begin(onMessageReceived);
......in loop()
gw.process();
.........
if (lastTemperature[7] != temperature && temperature != -127.00)
{
gw.send(msgTemperature.setSensor(7).set(temperature, 1));
lastTemperature[sensorID] = temperature;
}
......And my callback is:
void onMessageReceived(const MyMessage &message)
{
if (message.type == V_LIGHT)
{
bool value = message.getBool();
digitalWrite(message.sensor + FIRST_RELAY_PIN, value ? RELAY_ON : RELAY_OFF);
gw.saveState(message.sensor, value);
....................When I once send a switch command to a relay from my controller callback fires up and relay switches. But then it keeps firing with the same parameter value EVERY time when temperature value is sent to controller. That was unexpected to me. Investigation of code of MySensor::process() function shows that value of "len" variable
uint8_t len = RF24::getDynamicPayloadSize();
RF24::read(&msg, len);equals 8 in case when the "true" radio message for relay is received and equals 1 in the rest of cases when temperature value is sent. In other words, callback fires both when message is received (len = 8 ) and is sent by a node (len = 1).
Changing the end code of process() from
if (msgCallback != NULL)
msgCallback(msg);to
if (msgCallback != NULL && len > 1)
msgCallback(msg);solved the issue. But I think it's a temporary patch and not the right solution. Could the MySensors developers please take a look at this issue.
And thank you for a great project and all hard work done!
-
Are you running 1.4.1? If not please re-verify and post your results.
-
No, I'm running 1.4.
OK, I'll give it a try and post results. Thank you.
-
Well now after switching to 1.4.1 it seems to be OK. Also the commands from controller seem to arrive faster.
Thank you for your help!
-
Good to hear.
Suggested Topics
-
Code for beta-testing?
Controllers • 24 Mar 2014, 20:48 • andriej 9 Aug 2014, 10:44 -
NRF51-52 PA not support ???
Bug Reports • 23 Feb 2019, 16:40 • berkseo 8 Jul 2021, 11:42 -
Missing "__libc_init_array();" wenn using samd without USB
Bug Reports • 6 Jul 2022, 08:36 • ltigges 7 Jul 2022, 22:43 -
Sensor presentation failure
Bug Reports • 31 Jul 2016, 19:23 • Sergio Rius 3 Mar 2021, 18:48 -
some differences between serial- and tcp-gateways.
Bug Reports • 15 Mar 2023, 09:26 • Branther 30 Mar 2023, 15:40 -
sleep(0) in V2.1 doesn't sleep indefinitely anymore. Used to powerdown and sleep in V1.5
Bug Reports • 22 Nov 2019, 00:35 • GaryStofer 15 Apr 2023, 05:50