Add support for MeshCore ingestion over TCP #148

Closed
opened 2026-10-04 23:02:29 +02:00 by adam · 9 comments
Owner

As seen on the README on PyPI, the meshcore library does support connecting via TCP: https://pypi.org/project/meshcore/

Furthermore, it's not clear to me that the meshcore provider in the ingestor supports BLE, despite saying it does. It only makes use of SerialConnection from the meshcore library.

As seen on the README on PyPI, the meshcore library does support connecting via TCP: https://pypi.org/project/meshcore/ Furthermore, it's not clear to me that the meshcore provider in the ingestor supports BLE, despite saying it does. It only makes use of `SerialConnection` from the meshcore library. <!-- github-sync-id:4191916184 -->
adam closed this issue 2026-10-04 23:02:29 +02:00
Author
Owner

Hey, thanks for following up on that.

Please note, the Meshcore support is work in progress #626 and I'm currently actively working and testing this before releasing it. So you are a bit ahead of time :)

It's interesting that the meshcore cli supports TCP - I am not aware of any companions that do support TCP though? Maybe I have just not seen it. I'm only aware of BLE and Serial.

Image

Speaking of BLE - I have indeed not tested it yet. The implementation is more of scaffholding. Truth is, I forgot all my devices at the office last week and I'm traveling this week, so I cannot proceed with it. I expect to have a working backend by Monday.

Hey, thanks for following up on that. Please note, the Meshcore support is work in progress #626 and I'm currently actively working and testing this before releasing it. So you are a bit ahead of time :) It's interesting that the meshcore cli supports TCP - I am not aware of any companions that do support TCP though? Maybe I have just not seen it. I'm only aware of BLE and Serial. <img width="468" height="468" alt="Image" src="https://github.com/user-attachments/assets/fac126ca-a80c-446b-874e-dd192c494db3" /> Speaking of BLE - I have indeed not tested it yet. The implementation is more of scaffholding. Truth is, I forgot all my devices at the office last week and I'm traveling this week, so I cannot proceed with it. I expect to have a working backend by Monday. <!-- github-comment-id:4177912268 -->
Author
Owner

TCP support is something you currently have to enable yourself using build flags, but it is there: https://meshcore.co.uk/wiki.html#76-q-how-do-i-connect-to-the-companion-via-wifi-eg-using-a-heltec-v3

7.6. Q: How do I connect to the companion via WIFI, e.g. using a heltec v3?

A: WiFi firmware requires you to compile it yourself, as you need to set the wifi ssid and password. Edit WIFI_SSID and WIFI_PWD in ./variants/heltec_v3/platformio.ini and then flash it to your device.

TCP support is something you currently have to enable yourself using build flags, but it is there: https://meshcore.co.uk/wiki.html#76-q-how-do-i-connect-to-the-companion-via-wifi-eg-using-a-heltec-v3 > 7.6. Q: How do I connect to the companion via WIFI, e.g. using a heltec v3? > > A: WiFi firmware requires you to compile it yourself, as you need to set the wifi ssid and password. Edit WIFI_SSID and WIFI_PWD in ./variants/heltec_v3/platformio.ini and then flash it to your device. <!-- github-comment-id:4178032544 -->
Author
Owner

Thanks for working on that so quickly!

Random aside, but will be a way to distinguish between MT and MC on the same dashboard? From my reading of the code, it seems to me MT gets tabs titled by their radio preset (LongFast, MediumFast, etc.). I see that MT-specific logic is applied across the board for all providers. Is that intentional (and would that even work for MC)? If not, is there a way to clearly delineate that a given tab in the UI is MeshCore data? Or could those tabs have custom names?

Also, is there a clear distinction between MT and MC nodes in the node list?

Thanks for working on that so quickly! Random aside, but will be a way to distinguish between MT and MC on the same dashboard? From my reading of the code, it seems to me MT gets tabs titled by their radio preset (LongFast, MediumFast, etc.). I see that MT-specific logic is applied across the board for all providers. Is that intentional (and would that even work for MC)? If not, is there a way to clearly delineate that a given tab in the UI is MeshCore data? Or could those tabs have custom names? Also, is there a clear distinction between MT and MC nodes in the node list? <!-- github-comment-id:4179068161 -->
Author
Owner

I'm curious and have to ask, how did you even find this repository in context of Meshcore?

To give you some context, this is a Meshtastic-only network dashboard that I built last year because we didn't have any in our local mesh. Now, everyone and their cat is moving to Meshcore, so I started integrating Meshcore logic in the backend (silently) about ... I don't recall, 5 days ago? The code you are looking at is not even release or deployed anywhere.

I'm doing the groundwork to have the workflows for data (ingestor -> api -> schema) compatible with other protocols before I start on implementing Meshcore. The fact that the ingestor python code has a somewhat working implementation is just because I was sidetracked learning the serial communication.

That said, and to answer your question, the web-frontend has absolutely no capabilities yet to display Meshcore content. In a first, silent step I prefixed everything that is Meshtastic with little green icons and I already changed the color schemes slightly to be future-compatible with other protocols (mainly Meshcore).

So, if you curious to run a potato-mesh dashboard for your local meshcore community, subscribe for releases and watch out for the 0.6.0 tag which will be the official target for the final frontend integration. I'm planning to do one-two 0.5.x releases to prepare for that and have some time set aside for testing the backend and data pipelines before starting to work on the official release.

I'm curious and have to ask, how did you even find this repository in context of Meshcore? To give you some context, this is a Meshtastic-only network dashboard that I built last year because we didn't have any in our local mesh. Now, everyone and their cat is moving to Meshcore, so I started integrating Meshcore logic in the backend (silently) about ... I don't recall, 5 days ago? The code you are looking at is not even release or deployed anywhere. I'm doing the groundwork to have the workflows for data (ingestor -> api -> schema) compatible with other protocols before I start on implementing Meshcore. The fact that the ingestor python code has a somewhat working implementation is just because I was sidetracked learning the serial communication. That said, and to answer your question, the web-frontend has absolutely no capabilities yet to display Meshcore content. In a first, silent step I prefixed everything that is Meshtastic with little green icons and I already changed the color schemes slightly to be future-compatible with other protocols (mainly Meshcore). So, if you curious to run a potato-mesh dashboard for your local meshcore community, subscribe for releases and watch out for the 0.6.0 tag which will be the official target for the final frontend integration. I'm planning to do one-two 0.5.x releases to prepare for that and have some time set aside for testing the backend and data pipelines before starting to work on the official release. <!-- github-comment-id:4180209090 -->
Author
Owner

Gotcha, I'll keep an eye out on the repo for further MeshCore developments.

To answer your question, I'm involved with MSPMesh which has a pretty busy instance of potato-mesh for Meshtastic. A few of us are starting to experiment with MeshCore on the side, and I just happened to notice you making commits related to MeshCore.

Apologies for jumping the gun a bit on your work. :)

Gotcha, I'll keep an eye out on the repo for further MeshCore developments. To answer your question, I'm involved with MSPMesh which has a pretty busy instance of potato-mesh for Meshtastic. A few of us are starting to experiment with MeshCore on the side, and I just happened to notice you making commits related to MeshCore. Apologies for jumping the gun a bit on your work. :) <!-- github-comment-id:4181931311 -->
Author
Owner

Please, if you like, do help me testing :)

Run an ingestor with PROVIDER=meshcore and report bugs if any. Creating this issue already helped me to fill a gap as I only tested with serial.connection so far.

Please, if you like, do help me testing :) Run an ingestor with PROVIDER=meshcore and report bugs if any. Creating this issue already helped me to fill a gap as I only tested with serial.connection so far. <!-- github-comment-id:4182048162 -->
Author
Owner

You can test v0.6.0-rc1 now, it should have everything @misscatmint

You can test `v0.6.0-rc1` now, it should have everything @misscatmint <!-- github-comment-id:4205393426 -->
Author
Owner

Things are starting to look great! Thanks so much for working on this!

I don't know if this is the right place to discuss this, but have you given thought to separating out MC vs MT on the map and node list? I think for our use case it might be a bit confusing for people to have our MT and MC meshes overlaid, which is what I think it might do currently? I suppose this also applies to any dashboards who are running multiple different MT presets who might want those separated out by default as well.

Actually, I see there's at least map filters. Maybe that's sufficient.

Things are starting to look great! Thanks so much for working on this! I don't know if this is the right place to discuss this, but have you given thought to separating out MC vs MT on the map and node list? I think for our use case it might be a bit confusing for people to have our MT and MC meshes overlaid, which is what I think it might do currently? I suppose this also applies to any dashboards who are running multiple different MT presets who might want those separated out by default as well. Actually, I see there's at least map filters. Maybe that's sufficient. <!-- github-comment-id:4208299843 -->
Author
Owner

Yes, there is the map filter. It is a bit hidden I admit.

But if you want it pure meshcore - you can just not add meshtastic data to it. That would also work.

Yes, there is the map filter. It is a bit hidden I admit. But if you want it pure meshcore - you can just not add meshtastic data to it. That would also work. <!-- github-comment-id:4212026312 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/potato-mesh#148