bmartin5692 / bumper

A standalone and self-hosted implementation of the central server used by Ecovacs vacuum robots.
GNU General Public License v3.0
274 stars 48 forks source link

Documentation of MQTT communication between Server/helperbot/App/bot #61

Open KoelnSolar opened 4 years ago

KoelnSolar commented 4 years ago

Edited after Brians reply.

Hi Brian, I still try to solve my problems to get bumper run with my OZMO_Slim10.

I'm not clear about the need of the helperbot. It might be useless. In my understanding it is just a kind of logging-help.

If i've understood it right, the Ecovacs-App(or sucks or an MQTT-tool) issues a command to the bot. The command is received by the bumper-MQTT-server, transformed by the helperbot into MQTT, sent to the bumper-MQTT-Server and distributed according to the subscriptions to the bot, the helperbot and to maybe additional MQTT-tools. The bot answers to the bumper-MQTT-Server which distributes the answer according the subscriptions to the helperbot, the App and to maybe additional MQTT-Tools.

The only action the helperbot does, is to report the reception of the command, the response and in case of errors or not answered commands to report these errors. No communication takes place between the bot and the helperbot.

Is that right ? If so, I think it should be documented more clearly, omitted or optionally controlled by a flag. In my case of error debugging it seems more confusing than helping.

Regards Markus

bmartin5692 commented 4 years ago

Hi @KoelnSolar - The function is briefly explained in the docs here - https://github.com/bmartin5692/bumper/blob/master/docs/How_It_Works.md#mqtt

Commands from the app come into the Bumper web server. They are passed to the Helperbot which converts them and publishes them to the MQTT p2p topic for the bot to receive. The Helperbot keeps track of commands that have been issued by their id, and when the bot responds (assuming correct command/no timeouts) to Helperbot it checks the id of the response. Helperbot then passes the response back to the web server which completes the request returning the matching id/response back to the open web request.

This workflow assumes your commands are coming through via the app (or sucks), I have not tested Bumper with sending commands directly via mqtt which it sounds like from your other reports you may be trying.

Could you try with the extend-confserver-logging branch with --debug enabled? This should give me more detailed logs on what is happening in your setup. Please send me the logs via gitter (https://gitter.im/ecovacs-bumper) for review when you have them.

KoelnSolar commented 4 years ago

Thanks for your quick answer.

Sorry, I've overseen the send_command in mqttserver.py. And I found now the call in confserver.py and will investigate on that to understand the communication a little bit more. I thougt the App is communicating in MQTT directly. ;-(

I'll give the extend-confserver-logging branch a try. But how can I attach a file in gitter ?