Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request]: Spread telemetry/GPS updates across channels #3207

Open
tropho23 opened this issue Feb 11, 2024 · 10 comments
Open

[Feature Request]: Spread telemetry/GPS updates across channels #3207

tropho23 opened this issue Feb 11, 2024 · 10 comments
Labels
3.0 enhancement New feature or request requires-protos A change in device that requires changes to protobufs

Comments

@tropho23
Copy link
Contributor

Platform

NRF52

Description

(This feature request is not only for nrf52 but the platform choice does not allow me to choose 'all platforms')

Request firmware feature to spread telemetry/GPS updates across multiple channels.

Currently users are limited to using primary channel for sending telemetry and GPS data. Ideally, selective send of this data to any channel(s) we choose but this has been limited to primary channel to avoid mesh saturation/channel utilization.

If allow sending GPS updates to any/all channels but limit update intervals per channel to respect the total interval update that would be rather useful. For example:

(With GPS update interval set to 10 minutes)
00:00=send GPS update on channel 0/primary
00:10=send GPS update on channel 1
00:20=send GPS update on channel 2
00:30=send GPS update on channel 3
00:40=send GPS update on channel 0/primary (40 minutes since last update)
...and so on. The idea is not exceed the GPS update interval in total, which is 10 minutes.

The example above allows users to send GPS updates via more than only primary channel, but updates respect the 10 minute interval set. This allows channel utilization to remain the same as if GPS updates are sent only on the primary channel.

I recognize users can increase GPS update interval and flood the mesh but they can already do that so this proposal adds zero risk if implemented in the manner suggested above.

This feature cannot be depending on mobile apps to function as standalone devices should be able to use this feature.

@tropho23 tropho23 added the enhancement New feature or request label Feb 11, 2024
@jp-bennett
Copy link
Collaborator

Somewhat related is the desire to set precision levels for different channels. Possibly through a bitmask that gets AND'd with the location at https://github.com/meshtastic/firmware/blob/master/src/modules/PositionModule.cpp#L110 before sending the packet.

@thebentern thebentern added the requires-protos A change in device that requires changes to protobufs label Feb 11, 2024
@garthvh
Copy link
Member

garthvh commented Feb 11, 2024

Seems really complex, uses a bunch of airtime and is of marginal benefit, still not sure why secondary channels need position. Also has to be done in 3.0.

@andrekir
Copy link
Member

we really don't want to send the same packet multiple times in different channels. this would have a huge impact in total airtime considering rebroadcasts/ACKs.

@GUVWAF
Copy link
Member

GUVWAF commented Feb 11, 2024

I agree with Garth and Andre. The suggestion to let it send on a different channel at each opportunity is good, but then again if you want frequent updates on one channel, you’ll need to set the updates really high. Duplicating the settings for each channel seems very cumbersome.

Indeed someone can already spam the channel by setting the position updates to every 5 seconds, but it’s pretty clear that that creates a lot of traffic. However, it’s not intuitive that enabling it on an additional channel means that for each update your device will need to send a separate packet there.

Allowing someone to request position with less precision on secondary channels might be an alternative solution. You can already request telemetry on secondary channels.

@jp-bennett
Copy link
Collaborator

Seems really complex, uses a bunch of airtime and is of marginal benefit, still not sure why secondary channels need position. Also has to be done in 3.0.

Adds complexity, sure. The idea is to round-robin the location data among the channels where it's enabled, so no additional airtime.

For use case, I want my family to know exactly where I am, but I only want the world at large to see approximate location.

Why would it need to be 3.0? A receiving device has no clue if a position was sent over a secondary channel. All we need is added config on the protobuf, and some code to send out messages on different channels.

@GUVWAF
Copy link
Member

GUVWAF commented Feb 11, 2024

For use case, I want my family to know exactly where I am, but I only want the world at large to see approximate location.

Assuming you don't want the whole world to be able to follow you in real-time, wouldn't it be better to allow manual imprecise position requests on secondary channels? I'd argue that it's an even better user experience, because you will get a response immediately, instead of having to wait for the next broadcast opportunity, whose interval you don't know.

@jp-bennett
Copy link
Collaborator

Assuming you don't want the whole world to be able to follow you in real-time, wouldn't it be better to allow manual imprecise position requests on secondary channels?

Does that work for MQTT? Another use case for this is to let people send their location data to a public MQTT server, to have a more accurate map of where nodes are at. Local trusted mesh gets full accuracy location, public channel gets reduced accuracy, and is shared with MQTT.

I think we have enough agreement to get started. Whether to enable the automatic position broadcast on a secondary channel is a relatively minor implementation detail. For that matter, it could be disabled by default, and just turned on for custom firmware builds.

@tropho23
Copy link
Contributor Author

It's already been mentioned I will reiterate that the intent is not to broadcast this information on multiple channels and increase utilization, it's to broadcast at the same interval but spread among the selected channels. No additional position updates will be sent out; please review the example I provided in the original summary.

@thebentern
Copy link
Contributor

We do need to think about better control mechanisms for which portnums can communicate over which channels IMO, because we have the same problem w/ MQTT. For instance, users want to be able to send nodeinfo, telemetry, or position over secondary uplink channels and those don't necessarily have the same affect on airtime.

I had originally envisioned that being an enum w/ flags for portnums on each channel with mqtt uplink. Not trying to highjack this issue, just noting that there are similarities in the two in the fact that users want more control over what information goes out over secondary meshes, be that lora or mqtt.

@jp-bennett
Copy link
Collaborator

I had originally envisioned that being an enum w/ flags

We could do that with the GPS stuff, too. Maybe define high, mid, and low accuracy GPS flags.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.0 enhancement New feature or request requires-protos A change in device that requires changes to protobufs
Projects
None yet
Development

No branches or pull requests

6 participants