Affirmatech / MeshSense

MeshSense directly connects to your Meshtastic node via Bluetooth or WiFi and continuously provides information to assess the health of your mesh network.
https://affirmatech.com/meshsense
GNU General Public License v3.0
45 stars 6 forks source link

Support for arm64 Raspberry Pi #22

Open Soltares opened 1 month ago

Soltares commented 1 month ago

A few requests have come in requesting to run MeshSense on a Raspberry Pi. This should be possible, in theory, although the webbluetooth library does not have a prebuild currently for arm64. See https://github.com/thegecko/webbluetooth/issues/190

Will need to look to see how a build would be accomplished manually.

RyanWor commented 1 month ago

Subscribed. Thank you Chris!

I guess I should have just said arm, not sure if changes things or matters. I'd be perfectly fine running 32bit OS if possible since it would be the Pis only role to run MeshSense and talk to a rooftop node over IP. Either though way thanks for this awesome application! I am loving it!

typicalaimster commented 1 month ago

I'd love this as well. Especially if it can be headless and running in the background. I'd just simply use the Web portal at that point. See also: https://github.com/Affirmatech/MeshSense/issues/8

azwirko commented 3 weeks ago

I'll admit this is surely NOT elegant. I'm not using BT to connect to my node, and only access via WiFi IP. To that extent I've hacked a few of the "api" related .ts files to bypass or ignore some of the BT functions. I simply ran the code and commented out sections until I could get a response on http://localhost:5920/ I've not extensively tested MeshSense doing this, but the attached screenshot shows its at least working to an extent on my RPi 4. Maybe a 'diff' export could be made or possible a #ifdef block for "noBT" to accomplish the same.

Aside from having to 'apt-get install' cmake and ninja-build, here are the changes made to some of the MeshSense files prior to starting the api and ui pieces with npm.

in api/packages.json line 55 delete:

   "webbluetooth": "^3.2.1",

in api/src/meshtastic.ts line 26 comment out:

   // import { beginScanning, bluetoothDevices, stopScanning } from './lib/bluetooth'

lines 54-58 rewrite as:

   if (value == 'disconnected' || value == 'searching' || value == 'reconnecting') {
      // beginScanning()
   } else {
      // stopScanning()
   }

in api/src/lib/bluetooth.ts line 1 comment out:

   // import { Bluetooth } from 'webbluetooth'

20241029_17h48m37s_grim

Happy hacking!

Mesh node K1RA LongFast Slot 9 in Northern Virginia west of Washington D.C.

Soltares commented 3 weeks ago

That's awesome! I would anticipate MeshSense to largely work without issue. It was originally built with IP-only and bluetooth was added later. Only thing that stands out to me are the lack of traceroute lines in the screenshot, but the connected node is not reporting a position so that could be part of the reason.

This brings up an interesting question of whether or not to provide an official ARM build with bluetooth functionality disabled.

Thanks for sharing! 👏

azwirko commented 3 weeks ago

Soltares, good catch. My dev node 1RA2 does not have built-in GPS, nor Lat/Lon set. After setting up a fixed position now the map shows as attached:

20241029_21h33m28s_grim

Hope you can get it running as well.