I am a delighted user of a MySensors network, and I take take this opportunity to express respect to authors and contributors.
My nodes are based on Arduino Nano, with RPi ethernet gateway, using RF24 radios with standard settings (freq & speed), some with PA, and some without (all with 10uF ceramic capacitors and external 3v3 voltage controller on RPi radio module). The 2.3.2 version is in use.
I started with collecting hot water temperatures, electric energy, electric current, motion sensors - total 18 variables from 4 nodes. All works fine with very occasional lost measurements. I also use FOTA.
Recently I added additional 3 nodes with actuators (lights, garage gate and entry gate) and I set up Home Assistant as a controller. The overall experience is absolutely fantastic!
The problem is that a single lost message aimed at actuator is noticeable and usually painful. Although the communication is very reliable, the problem takes place very often when I trigger multiple switches at a time (using HA group switch, or triggering garage gate + garage lights by saying 'Hey google. Turn on the garage'). In most such cases only some switches are triggered.
I tested this by building a new node with 3 x V_STATUS, connected to LED's and by triggering them by switching a group:
Triggering individual switches works fine and reliable even through walls but switching three at time often (20% of cases) results in the following behaviour:
This is an attempt to switch off all three switches:
-
First message is sent to child is sent, then second message is sent.
-
Then first message is acknowledged.
-
The second message is not acknowledged, so HA shows it as OFF, but the LED on node is off, so only ack failed.
-
Then finally third message fails even to be sent.
-
Result: first and second LED is OFF on node & only thirst switch is OFF in Home Assistant.
The gateway log below:
Dec 27 20:46:33 DEBUG GWT:RFC:C=1,MSG=100;1;1;1;2;0
Dec 27 20:46:33 DEBUG TSF:MSG:SEND,0-0-100-100,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0
Dec 27 20:46:33 DEBUG GWT:RFC:C=1,MSG=100;2;1;1;2;0
Dec 27 20:46:33 DEBUG TSF:MSG:SEND,0-0-100-100,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0
Dec 27 20:46:33 DEBUG TSF:MSG:READ,100-100-0,s=1,c=1,t=2,pt=0,l=1,sg=0:0
Dec 27 20:46:33 DEBUG TSF:MSG:ECHO
Dec 27 20:46:33 DEBUG GWT:RFC:C=1,MSG=100;3;1;1;2;0
Dec 27 20:46:33 DEBUG !TSF:MSG:SEND,0-0-100-100,s=3,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:0
In successful cases the second echo appears before the third message arrives from the Controller, and third message is then also successful.
I suspected radio jam, and or collisions or perhaps collisions due to auto retransmissions caused by radio jam..
I tried to set up the gateway and the tester node (just this one node) to channel 86 and to 2Mbps to try to troubleshoot both potential causes + getting rid of any other MySensors traffic, but the result is the same.
I will be grateful if you share solutions to such problem, or at least ideas how to solve such a problem. I see 15 retransmissions after 1500us are hardcoded in the MyS library. Would you advise changing the delay, perhaps?