Meshtastic-Android
Meshtastic-Android copied to clipboard
[Feature Request]: Message Queue
Contact Details
Tell us your idea.
I'd like the app to be able to queue messages until the recipient is reachable.
I live in an area with a very sparse and patchy mesh network. When I try to send a message to one of my nodes and it can't be reached, the app tries a few times and then stops because the max attempts have been reached. This usually means the message doesn't get delivered, and I must manually retry.
I want to be able to queue a message, try to send it, and if it doesn't succeed wait until I make contact with the node then try again.
There are two use cases here.
- In a weak network, and especially with a device that's not fixed in position, you never know when your going to pass through a sweet spot that will allow you to connect. I want to just set the message, and trust that it will make it eventually, once conditions are right.
- This would allow greater use of sleep and powers saving modes in endpoint nodes that require it. If I have a device I want to reach that only turns on once a day. I could queue the message and when it comes online and my device sees it on LongFast my device could then attempt to send the message for the best chance of it reaching its destination.
This could be fully app controlled. The message queue could be enabled in the settings, unsent messages stored in the device cache. The message UI could get a new icon indicating that the message is queued and will attempt to send when conditions are right.
You could add further complexity be seeing thresholds that must be met before a queued message is sent, like minimum connection strength, etc.
Relevant log output
Code of Conduct
- [x] I agree to follow this project's Code of Conduct
i have the same problem. my message are only sucessfully delivered 50% of the time. its a pain having to manually resend them a couple of times until they go thru. i wish there even a simple setting to automatically allow the node or cellphone app to resend the message 2-3times more then usual until it goes thru. or even better an automatic incremental timer.
1st retry 10sec later, 2nd retry 30sec, 3rd 60sec.... so the message woudnt spam the mesh, but would still go reach the destination.
your idea of store-and-retry-later is way cool!
Thanks! My thinking is that this would avoid spamming the mesh with all my manual retries while I hope to make a connection. As soon as I receive a position update or something from the node or channel I'm trying to reach, THEN it should send its retry.
Imagine you are lost in the woods trying to find a connection, you can either stop and try to send every ten feet, or you can set it in the queue and wander around knowing that the device will send the moment it can.
I made a PR here: https://github.com/meshtastic/Meshtastic-Android/pull/2056
I made a PR here: #2056
Thank you very much for your work! i dont understand how the whole github thing works, but i wish everything goes well and it become a part of the software in the future. PRAISE!!
edit: i just realized you were the one to ask for this feature in the first place and you did the new code for this. wow!