I still get a lot of connectivity errors:
Last shutdown reason: WIFI Authentication failed. (incorrect psk)
I do have multiple APs across my house and it looks like the PI tries to reconnect between them and fails because it “stores the PSK of the AP it was connected to”? That is preventing roaming between APs for a moving robot not a very good idea.
Next the MQTT/AMQP connection is way to sensitive on disconnects. IoT is considered loosly connected network and should handle disconnects/reconnects gracefull (not just rebooting and saying “it failed to connect”).
Also it looks like the closes the RPI comes to my Access Point - which I put almost right next to the Farmbot - it fails to connect.
If you are working on the communication of the Farmbot PI here a couple suggestions:
Ditch MQTT !!! This protocol was NEVER meant for IoT or bidirectional communication. Unfortunately IBM and other wannaby IoT Companies did not have any better idea and now we have to live with all the shortcomings of MQTT.
Since you are tunneling MQTT over WebSockets anway…why not use WebSockets in the first place? Its a proven IT protocol that can handle disconnects/reconnects fairly easily. Every webserver out supports it and there is not need for another broker in front of your already scaleble webserver.
build in some more robustness in the Wifi connectivity - that might be a “nerves” issue but from a good IoT Platform I would expect more.
Also not sure why there is additional AMQP floating around…AMQP is better the MQTT but why all of that? WebSockets alone have all the properties you need (fast, direct if necessary, supports even proxies what the other two do not support without special “socks5” configuration, and its IT approved)
Your connectivity would be much simpler (no more broker - all goes through the webapp).
Maybe for version 7?
Me for my part I am trying to figure out if I can give the Farmbot a fake MQTT broker address that just replies back to the bot “yes you are connected and no I dont have anything for you”…and all the rest I do with your celery script direct access on http Port of the PI