@meri-imperiumi/signalk-meshtastic 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -5
- package/package.json +3 -2
- package/plugin/index.js +12 -0
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ This plugin enables vessels running [Signal K](https://signalk.org) to interact
|
|
|
5
5
|
|
|
6
6
|
If desired, telemetry and position information can also be shared between multiple Meshtastic-using vessels, making it effectively a "pseudo-AIS" system.
|
|
7
7
|
|
|
8
|
-

|
|
9
9
|
|
|
10
10
|
Being a mesh network, there is no need for external telecommunications infrastructure or monthly payments. This means communication between Meshtastic devices onboard and on shore can work just as well in the Finnish Archipelago Sea as in the Tuamotus. In more densely populated places communications may benefit from other Meshtastic users relaying the messages, making it possible to communicate with the boat across a city.
|
|
11
11
|
|
|
@@ -27,7 +27,7 @@ In production use on several boats.
|
|
|
27
27
|
|
|
28
28
|
## Features
|
|
29
29
|
|
|
30
|
-
* Connect to a Meshtastic node
|
|
30
|
+
* Connect to a Meshtastic node via HTTP, TCP, or Serial
|
|
31
31
|
* Keep a persistent database of all seen Meshtastic nodes
|
|
32
32
|
* Update Meshtastic node position from Signal K GNSS position
|
|
33
33
|
* Send Signal K alerts as Meshtastic text messages to crew
|
|
@@ -48,7 +48,8 @@ In production use on several boats.
|
|
|
48
48
|
## Requirements
|
|
49
49
|
|
|
50
50
|
* This plugin running inside your Signal K installation
|
|
51
|
-
* One [Meshtastic device](https://meshtastic.org/docs/hardware/devices/) running and connected to the same network (typically boat WiFi) as Signal K. This should be an [ESP32 based](https://meshtastic.org/docs/hardware/devices/heltec-automation/lora32/?heltec=v3) device for WiFi connectivity
|
|
51
|
+
* One [Meshtastic device](https://meshtastic.org/docs/hardware/devices/) running and connected to the same network (typically boat WiFi) as Signal K. This should be an [ESP32 based](https://meshtastic.org/docs/hardware/devices/heltec-automation/lora32/?heltec=v3) device for WiFi connectivity.<br>
|
|
52
|
+
If using Serial connection, it can also be a nRF52 device
|
|
52
53
|
* At least one additional Meshtastic device for the crew ashore. [Seeed T1000-e](https://meshtastic.org/docs/hardware/devices/seeed-studio/sensecap/card-tracker/) is a great option, but any battery-powered Meshtastic device will work. Having a device for each crew member is even better. In busy areas these should be set to [`CLIENT_MUTE` role](https://meshtastic.org/blog/choosing-the-right-device-role/)
|
|
53
54
|
* Optionally, a Meshtastic GPS tracker device installed in the dinghy
|
|
54
55
|
* Optionally, a [Meshtastic mast-top repeater](https://www.printables.com/model/1396221-meshtastic-boat-module-masthead) for greatly increased communications range
|
|
@@ -66,13 +67,13 @@ LoRa is line-of-sight communications quite similarly to VHF. Communications rang
|
|
|
66
67
|
* Wait for some minutes for the plugin to see nearby Meshtastic nodes
|
|
67
68
|
* Configure plugin and set appropriate roles for the crew and dinghy tracker Meshtastic devices
|
|
68
69
|
|
|
69
|
-

|
|
70
71
|
|
|
71
72
|
## Telemetry sent to Meshtastic
|
|
72
73
|
|
|
73
74
|
If enabled, your "boat node" will transmit the following telemetry to Meshtastic. This enables tracking various important metrics about your boat also remotely. They are visible in the device details in your Meshtastic app:
|
|
74
75
|
|
|
75
|
-

|
|
76
77
|
|
|
77
78
|
Metrics used:
|
|
78
79
|
|
|
@@ -88,5 +89,7 @@ Metrics used:
|
|
|
88
89
|
|
|
89
90
|
## Changes
|
|
90
91
|
|
|
92
|
+
* 1.1.0 (2025-09-11)
|
|
93
|
+
- Added support for Serial transport with the Meshtastic device
|
|
91
94
|
* 1.0.0 (2025-09-11)
|
|
92
95
|
- Initial release with HTTP and TCP transports
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meri-imperiumi/signalk-meshtastic",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Signal K plugin for interfacing with the Meshtastic LoRa mesh network",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "eslint ."
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"@bufbuild/protobuf": "^2.6.0",
|
|
23
23
|
"@meshtastic/core": "^2.6.7",
|
|
24
24
|
"@meshtastic/transport-http": "^0.2.5",
|
|
25
|
-
"@meshtastic/transport-node": "^0.0.2"
|
|
25
|
+
"@meshtastic/transport-node": "^0.0.2",
|
|
26
|
+
"@meshtastic/transport-node-serial": "^0.0.2"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
28
29
|
"eslint": "^8.57.1",
|
package/plugin/index.js
CHANGED
|
@@ -9,6 +9,7 @@ const { vesselIcon } = require('./waypoint');
|
|
|
9
9
|
let MeshDevice;
|
|
10
10
|
let TransportHTTP;
|
|
11
11
|
let TransportNode;
|
|
12
|
+
let TransportNodeSerial;
|
|
12
13
|
let create;
|
|
13
14
|
let toBinary;
|
|
14
15
|
let Protobuf;
|
|
@@ -221,6 +222,10 @@ module.exports = (app) => {
|
|
|
221
222
|
})
|
|
222
223
|
.then((lib) => {
|
|
223
224
|
TransportNode = lib.TransportNode;
|
|
225
|
+
return import('@meshtastic/transport-node-serial');
|
|
226
|
+
})
|
|
227
|
+
.then((lib) => {
|
|
228
|
+
TransportNodeSerial = lib.TransportNodeSerial;
|
|
224
229
|
return import('@bufbuild/protobuf');
|
|
225
230
|
})
|
|
226
231
|
.then((lib) => {
|
|
@@ -490,6 +495,9 @@ module.exports = (app) => {
|
|
|
490
495
|
if (settings.device && settings.device.transport === 'http') {
|
|
491
496
|
return TransportHTTP.create(settings.device.address);
|
|
492
497
|
}
|
|
498
|
+
if (settings.device && settings.device.transport === 'serial') {
|
|
499
|
+
return TransportNodeSerial.create(settings.device.address);
|
|
500
|
+
}
|
|
493
501
|
return TransportNode.create(settings.device.address);
|
|
494
502
|
})
|
|
495
503
|
.then((transport) => {
|
|
@@ -941,6 +949,10 @@ module.exports = (app) => {
|
|
|
941
949
|
const: 'http',
|
|
942
950
|
title: 'HTTP (nodes connected to same network, typically ESP32)',
|
|
943
951
|
},
|
|
952
|
+
{
|
|
953
|
+
const: 'serial',
|
|
954
|
+
title: 'Serial port (use full path to serial device as "address")',
|
|
955
|
+
},
|
|
944
956
|
],
|
|
945
957
|
},
|
|
946
958
|
address: {
|