More Meshtastic Nodes

This is a random smattering of details about the nodes I have now set up and what I’ve learned in working with them. It’s a mess, but I wanted to capture it before going to bed.

As I mentioned in a previous note I have some Heltec v1 boards. In another note I had mentioned building Meshtastic from source. You can probably see where this is going. But this was all after I bought some Heltec V3 boards. I bought one v3 for myself and two more for friends. At this point, we have all loaded up Meshtastic on our V3 boards and have stable relays by way of MQTT from the Heltec v3 clients to our t-decks. We don’t live close enough to each other to use just the mesh, so we use the internet.

On that same day I had set up the t-deck, I didn’t see a Heltec v1 image in the web-based flasher (flasher.meshtastic.org), so I had tried flashing a later image and it went poorly. Well, later on when that day arrived where I was building from source for the t-deck, I saw an entry in the platformio.ini file for the heltec-v1. I have since built that image and flashed it to both of my heltec-v1 boards. One board is in excellent shape, the other has a slightly defective screen.

previous note

another note

how that screen got damaged

Several years ago I was in the woods with my v1 boards and some battery packs. One unit I left strung up under a rain fly near the roadside border of my property. Then I took a hike with the other board towards the back of my property. Those boards were able to keep a ping going pretty consistently to about half way back on the lot. The land slopes up from the road, then down to a creek, then slowly up to a ridge of pine and hemlock trees, and then it slopes downward to a swamp, and then upwards again. The signal was able to keep a pretty decent ping to the halfway mark. Then it had intermittent connectivity towards the swamp. Did I mention the rain? The swamp floods pretty heavily and I didn’t want to chance dropping my toys in the water. The Heltec I was carrying was inside a Ziploc bag, along with the battery that was powering it. And yet, somehow, when I made it out of the poor weather and back under the relatively dry awning, some moisture had caused some pretty severe glitching of the display. I could no longer read the ping messages from the display. It sort of looks like every other row and column of pixels is dead. But the unit continued to work, otherwise.

what I have now

Fast forward to the present, I have both Heltec-v1s flashed with Meshtastic’s latest master branch (2.4.x). One is my “online” node configured to hit my MQTT server. One is configured to be my “in-car” node. Which I configured to go against the public MQTT server. My Heltec V3 is to be my “offline” node, configured to hit an MQTT server on my “home automation” network.

All the radios have a private channel with pre-shared keys with my friends (channel 0). All the radios have a public channel (the default LongFast channel, with publicly known keys) (channel 1) Some of the radios make use of an MQTT server to bridge some traffic over the internet.





the “in-car” node

This is my faulty-screen Heltec-v1. I originally configured it to go against the public MQTT server and the msh/US topic. Turns out, meshtastic devices have a fixed number of nodes they can remember. This number is smaller than all of the nodes making use of the public MQTT server. When a device has remembered all the nodes it can and then sees a new one, some fun stuff happens. It forgets the oldest node it knows about. If there are messages from the oldest node, after it is forgotten, those messages will appear to be from an unknown sender. This is not great.

So here’s some other stuff I learned as a result of running the “in-car” node









Ultimately I ended up disabling the MQTT publish just so I would be able to talk to the radio in the v1 again, because the node traffic made it impossible to work with. Then I subscribed to an MQTT topic that was state-specific instead of country-specific. There are very few meshes in my state that make use of the public MQTT server, but at least the device remains usable!

“online” node

The not-fault-screen heltec v1. I configured my “online” node to use my private MQTT server, but it’s having trouble staying connected to the internet. Possibly due to the traffic from the “in-car” node which I have had running in the house continuously to provide a link to the public MQTT server and nodes across the country. I only recently killed that link, so I’ll have to wait and see if it continues to suffer connection issues. I will probably replace this in the near future, I’d like my link to distant friends to be more reliable. If it proves to be too troublesome to keep it connected or connect to it for monitoring, then I’ll definitely be replacing it.

“offline” node

This is using the Heltec v3 and it has been rock solid. But what do I use an “offline” node for? How exactly is it offline? Well, it’s a node that’s on my “offline” network where all my Tasmota devices are running. I have a bunch of esp32 smart switches and plugs and some esp32-based cameras. The security on these devices was non-existent when they were running the proprietary crap they came with. I also didn’t appreciate needing a persistent internet connection to use the lights that were in the same room as me. So now they’re all running Tasmota and they use the same MQTT server that I have my offline node using.

I’ve written some code to monitor messages and I’ll be wiring up some limited input from the mesh to control devices as well as providing some status information back to the mesh about what’s going on in the house. And a few query style commands. So if I’m in the woods and someone rings the doorbell, I’ll get a message. I plan to make some of my cameras smarter too, so that if I get a package delivered or someone is in my driveway, they can notify me. This is what the offline network is for, and being in close proximity to the other mesh nodes, there shouldn’t be any problem with getting these notices no matter where I am on the property. Or if I’m not home, but I’m in the car, I will still get notices. Or if I’m somewhere near a mesh node… I would still get notices.

The goal of the offline network is to decrease the attack surface of my dumb IoT devices by keeping them off the Internet. Bridging them to my internet-connected network by way of Meshtastic pokes some holes in this, but the holes are smaller than putting it directly on my internet accessible network.

“t-deck” node

I configured the “t-deck” to route through my private MQTT server before I had reflashed the Heltec v1s. It would frequently lock up and get stuck in reboot loops. It was using a local wifi connection and going out to my private MQTT server, and even when it wasn’t stuck in a lock-up and reboot, it made it difficult to do anything useful with it. So reflashing the Heltec v1s for the connection role was great because it freed up the t-deck to be my portable device and it mostly stopped it from locking up and going into an annoying reboot. It did much better listening to the Heltec v1 “in-car” node blast my local mesh with updates from the MQTT server.

While the “in-car” node was blasting my network with messages and telemetry from other nodes I noticed some stuff about the t-deck.

The t-deck:








more common stuff

In order to get the device to only publish their own locations as encrypted and shared with the trusted network, that network had to be on channel zero and set as primary. This means that getting channel 1 LongFast to match the public LongFast channel, and override frequency had to be set. I’m still foggy on why this is the case. We did this collectively so that position information would be shared over the encrypted channel.

The devices will share their position with other channels if the setting is toggled on on a per channel basis. And in doing so, will share the position un-encrypted, every 15 minutes. So do they share the position of their friends only over the encrypted channel? I’m not too sure on this.

Every device has a node list or node DB that it creates. The size of the node list is hard-coded on most devices to 100. If there are more than this maximum, the old ones get pushed out, and messages and status information for “unkown” start to crop up. These messages still have sender information in them, its just that the UI is unable to find the owner name to display who it is from, and for some reason, they will show question marks in the mobile app, or unknown, depending on where the information is used. So despite having the device id (a mac address) it becomes impossible to tell who a message is from in the UI.

Any device that is using WiFi will not be able to connect via Bluetooth. Some devices using Bluetooth disable their serial ports, seemingly at random. This isn’t just overwhelmed devices that are laggy in responding, the configuration value gets disabled. Generally connecting and disconnecting frequently to a device makes that device harder to operate. Despite a physical serial connection, maintaining a connection with the web-based client is problematic. Some devices will serve up a web-based client and others have to be connected to with client.meshtastic.org, which is tricky in a disconnected environment. Depending on what web-based client is being used, some options, like trace route, are not available.

The android client with a bluetooth serial connection seems to be the most reliable means of interacting with a device and it provides a comprehensive history of messages instead of having a limited view of the last sent or received message for a channel or user.

it’s late

It’s getting late, but I’ve managed to capture some details here about my current setup and what I’ve learned so far. I’m having a lot of fun.

Tags

#index

#meshtastic

Navigation

index

tags

prev ⏰

⏰ next

updated: 2024-07-27 23:06:52

generated: 2024-10-15


Source