Programming embedded systems is no easy feat. Getting an MCU to do the right thing is easy. Making sure that it can gracefully recover from every anomoly is the art. When we hang a solar node on a tower, we expect it to recover from cloudy days and heavy traffic. The Meshtastic development team has done a good job supporting a wide variety of devices.
I have been putting my stable of Heltec devices through its paces, working them hard and putting them up wet.
Here's a snippet of what I asked a node to do 2000 times.
for ((i=0; i<loops; i++))
do
echo " "
echo "Series $i of $loops"
meshtastic --tcp $DUTIP --get security.public_key
meshtastic --tcp $DUTIP --nodes --show-fields user.shortName,user.publicKey,since
done
./test.nodes.analysis.sh
That generated 32 MB of terminal output, mostly error messages, dominated by BrokenPipeError: [Errno 32] Broken pipe. It wasn't an error at all. The next line was Connected to Radio. Then my request was fulfilled correctly.
Sure, somethig went wrong, but the system recovered and did what it was asked to do. Broken Pipe isn't an error. It's a condition that occurred 93% of the time in the course of doing what the user asked.
Test series planned: 2000
Series completed: 2000
Meshtastic commands executed: 4000
All Broken pipes: 3737
Unexpected OS Error, Errno 104: 5
--reset No route: 0
PKI_UNKNOWN_PUBKEY: 0
PKI_SEND_FAIL_PUBLIC_KEY: 0
NO_CHANNEL: 0
security.public_key gotten okay: 1997
nodelist gotten okay: 1996
Ninety-three percent (93.4%) of these two simple meshtastic commands generate [Errno 32]. There is no significant difference between responses to the two commands.
Yes, there are still 0.5% of these two commands failing. That will require some more sleuthing.
In the mean time, since Broken Pipe isn't a showstopper, let's rename it and bury the messages. It is, apparentlty, part of normal operation.
Programming embedded systems is no easy feat. Getting an MCU to do the right thing is easy. Making sure that it can gracefully recover from every anomoly is the art. When we hang a solar node on a tower, we expect it to recover from cloudy days and heavy traffic. The Meshtastic development team has done a good job supporting a wide variety of devices.
I have been putting my stable of Heltec devices through its paces, working them hard and putting them up wet.
Here's a snippet of what I asked a node to do 2000 times.
That generated 32 MB of terminal output, mostly error messages, dominated by BrokenPipeError: [Errno 32] Broken pipe. It wasn't an error at all. The next line was Connected to Radio. Then my request was fulfilled correctly.
Sure, somethig went wrong, but the system recovered and did what it was asked to do. Broken Pipe isn't an error. It's a condition that occurred 93% of the time in the course of doing what the user asked.
Ninety-three percent (93.4%) of these two simple meshtastic commands generate [Errno 32]. There is no significant difference between responses to the two commands.
Yes, there are still 0.5% of these two commands failing. That will require some more sleuthing.
In the mean time, since Broken Pipe isn't a showstopper, let's rename it and bury the messages. It is, apparentlty, part of normal operation.