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

Make mesh networking work nicely for unicast messages #3

Closed
X-Ryl669 opened this issue Feb 27, 2020 · 7 comments
Closed

Make mesh networking work nicely for unicast messages #3

X-Ryl669 opened this issue Feb 27, 2020 · 7 comments
Assignees
Labels
bug Something isn't working

Comments

@X-Ryl669
Copy link

I haven't read the source code, but I'm wondering if and how does the system works without a gateway, and in that case, how do you intend to do mesh networking ?

@geeksville
Copy link
Member

Hi,

I initially used the RadioHead mesh routing algorithm which worked but is pretty suboptimal because really almost all of my packets are better sent as broadcasts. So I have that commented out right now.

See the second heading here for ideas I have been considering (also I've been trolling through a bunch of libs and papers): https://github.com/geeksville/Meshtastic-esp32/blob/master/docs/sw-design.md

As a side effect of the hackaday post some kind person pointed me at this: sudomesh/LoRaLayer2#10 which looks super promising (and they are just across the bay from me ;-) )

I think the current broadcast solution will work fine for initial usage, but we'll want to have mesh turned back on sometime in the next couple of months.

@geeksville geeksville added this to the BeforeBeta milestone Feb 28, 2020
@geeksville geeksville self-assigned this Mar 5, 2020
@geeksville geeksville changed the title How do you intend to do mesh networking ? Reactivate mesh networking (currently we just broadcast) Mar 6, 2020
@geeksville
Copy link
Member

Mesh networking is now basically fixed, but keeping this open for a few enancements should do:

  • When doing mesh flooding we should include a random delay before each rebroadcast.
  • Implement DSR for unicast messages (currently we are just flooding broadcasts)
  • See remaining work items listed in comment at top of Router.cpp

@geeksville geeksville changed the title Reactivate mesh networking (currently we just broadcast) Make mesh networking work nicely for unicast messages Apr 17, 2020
@geeksville geeksville added bug Something isn't working and removed documentation labels Apr 17, 2020
@cyclomies
Copy link

cyclomies commented Apr 21, 2020

Mesh networking is now basically fixed, but keeping this open for a few enancements should do:

  • When doing mesh flooding we should include a random delay before each rebroadcast.
  • Implement DSR for unicast messages (currently we are just flooding broadcasts)
  • See remaining work items listed in comment at top of Router.cpp

I did read the files. Nice job @geeksville!

Unfortunately, I did not find information (most likely just didn't understand..) of what components the packet header is built of? Are the components, in the headers, kept same in every packet/message type?

The mesh is intended to work, correct me if I'm wrong, by these steps:

  • set channel settings from the app
  • send user information to the mesh by flooding
  • receive answers from the mesh of other nodes (change our node ID if necessary)
  • update our node database of other nodes (of all messages "heard")
  • send location update to the mesh (periodically or by request)
  • flood all messages to the mesh (in future, flood only messages with not only one recipient?)
  • switch to DSR to unicast messages (not yet in use), using the node database information
  • if a node is not in our node database, send a DSR route request (not yet in use)
  • update our node database per answers (not yet in use)
  • continue unicast messages per DSR and our node databases (not yet in use)

@ohcdh
Copy link

ohcdh commented Apr 21, 2020

This is all new to me, but this was a study done by Ram Ramanathan et al involved in the GoTenna device, "Long-Range Short-Burst Mobile Mesh Networking:Architecture and Evaluation"
https://cdn.shopify.com/s/files/1/0046/7524/0005/files/goTenna_Long-Range_Short-Burst_SECON.pdf?8213

@geeksville
Copy link
Member

@ohcdh just because I'm scared about patents I don't think I'll read that one ;-)

@geeksville
Copy link
Member

This issue has been mentioned on Meshtastic. There might be relevant details there:

https://meshtastic.discourse.group/t/next-work-items-in-my-queue/153/1

geeksville pushed a commit that referenced this issue Aug 10, 2020
mc-hamster added a commit that referenced this issue Sep 17, 2020
Update from meshtastic main
geeksville pushed a commit that referenced this issue Oct 29, 2020
ducky64 added a commit to ducky64/Meshtastic-device that referenced this issue Oct 14, 2021
geeksville added a commit that referenced this issue Oct 15, 2021
Fix for T-echo to not have Critical Error #3 on startup
@sachaw sachaw removed this from the BeforeBeta milestone Dec 12, 2021
@mc-hamster
Copy link
Member

closing issues. this is a question rather than a bug of feature request.

mkinney added a commit that referenced this issue Jan 24, 2022
refresh branch from master
@GUVWAF GUVWAF mentioned this issue Apr 20, 2023
thebentern added a commit that referenced this issue Nov 5, 2023
* INA3221 / Power Telemetry Variant Implementation
	modified:   platformio.ini
	modified:   src/configuration.h
	modified:   src/detect/ScanI2C.h
	modified:   src/detect/ScanI2CTwoWire.cpp
	modified:   src/main.cpp
	modified:   src/modules/Modules.cpp
	new file:   src/modules/Telemetry/PowerTelemetry.cpp
	new file:   src/modules/Telemetry/PowerTelemetry.h
	new file:   src/modules/Telemetry/Sensor/INA3221Sensor.cpp
	new file:   src/modules/Telemetry/Sensor/INA3221Sensor.h
	modified:   src/mqtt/MQTT.cpp

* ifdef for portduino / linux native
	modified:   src/modules/Telemetry/PowerTelemetry.cpp

* try #2
	modified:   src/modules/Modules.cpp
	modified:   src/modules/Telemetry/PowerTelemetry.cpp
	deleted:    variants/xiao_ble/1.0.0/libraries/SPI/SPI.cpp

* try #3
	modified:   src/modules/Modules.cpp

* try #4
	modified:   src/modules/Telemetry/PowerTelemetry.cpp

* try #5?
	modified:   src/modules/Telemetry/PowerTelemetry.cpp

* try #6
	modified:   src/modules/Telemetry/PowerTelemetry.cpp

---------

Co-authored-by: Ben Meadors <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants