@meri-imperiumi/signalk-meshtastic 1.2.3 → 1.3.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/.editorconfig +5 -0
- package/.eslintrc.json +3 -0
- package/.github/workflows/publish.yml +2 -2
- package/.github/workflows/signalk-ci.yml +11 -0
- package/.github/workflows/test.yml +1 -1
- package/CHANGELOG.md +27 -0
- package/README.md +4 -26
- package/doc/mpwrd.png +0 -0
- package/package.json +13 -5
- package/plugin/index.js +8 -14
package/.editorconfig
ADDED
package/.eslintrc.json
CHANGED
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
- uses: actions/checkout@v3.0.2
|
|
13
13
|
- uses: actions/setup-node@v3.1.1
|
|
14
14
|
with:
|
|
15
|
-
node-version:
|
|
15
|
+
node-version: 24
|
|
16
16
|
- run: npm install
|
|
17
17
|
- run: npm test
|
|
18
18
|
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
- uses: actions/checkout@v3.0.2
|
|
24
24
|
- uses: actions/setup-node@v3.1.1
|
|
25
25
|
with:
|
|
26
|
-
node-version:
|
|
26
|
+
node-version: 24
|
|
27
27
|
registry-url: https://registry.npmjs.org/
|
|
28
28
|
- run: npm publish
|
|
29
29
|
env:
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
* 1.3.0 (2026-06-16)
|
|
2
|
+
- Removed support for serial connections as they require post-install scripts
|
|
3
|
+
* 1.2.4 (2026-02-15)
|
|
4
|
+
- Corrupted Node DB file should no longer crash the plugin
|
|
5
|
+
* 1.2.3 (2025-10-15)
|
|
6
|
+
- Nodes that haven't been seen in last two days are no longer registered to Signal K data structure
|
|
7
|
+
- Added safeties for various non-numeric telemetry and coordinate values
|
|
8
|
+
* 1.2.2 (2025-10-01)
|
|
9
|
+
- Set "last seen" timestamp of nodes based on packet payloads, not the time they're received
|
|
10
|
+
- Send timestamp with telemetry
|
|
11
|
+
- Fixed issue with persising node-to-vessel matches from `DE <callsign>`
|
|
12
|
+
* 1.2.1 (2025-09-28)
|
|
13
|
+
- Fixed issue with Signal K servers that don't have navigation.position set
|
|
14
|
+
* 1.2.0 (2025-09-28)
|
|
15
|
+
- Support for Node.js older than 22.x, for example as seen in Venus OS Large
|
|
16
|
+
- Safety for nodes in DB that don't have a "last seen" timestamp
|
|
17
|
+
- Made connection status notifications clearer
|
|
18
|
+
* 1.1.2 (2025-09-25)
|
|
19
|
+
- Added support for the new roles from Meshtastic 2.7 (`ROUTER_LATE` and `CLIENT_BASE`)
|
|
20
|
+
- Fixed issue with sending a bell with alerts that have sound enabled
|
|
21
|
+
* 1.1.1 (2025-09-18)
|
|
22
|
+
- Fixed empty response text message to digital switching actions
|
|
23
|
+
- Added support for the proposed Signal K MOB position specification
|
|
24
|
+
* 1.1.0 (2025-09-11)
|
|
25
|
+
- Added support for Serial transport with the Meshtastic device
|
|
26
|
+
* 1.0.0 (2025-09-11)
|
|
27
|
+
- Initial release with HTTP and TCP transports
|
package/README.md
CHANGED
|
@@ -29,8 +29,9 @@ In production use on several boats.
|
|
|
29
29
|
|
|
30
30
|
## Features
|
|
31
31
|
|
|
32
|
-
* Connect to a Meshtastic node via HTTP
|
|
32
|
+
* Connect to a Meshtastic node via HTTP or TCP
|
|
33
33
|
* Keep a persistent database of all seen Meshtastic nodes
|
|
34
|
+
* Note: Serial transport support was removed in 1.3.0 to comply with [postinstall deprecation](https://demo.signalk.org/documentation/Developing/Plugins/Publishing_to_The_AppStore.html#important-avoid-install-time-scripts)
|
|
34
35
|
* Update Meshtastic node position from Signal K GNSS position
|
|
35
36
|
* Send Signal K alerts as Meshtastic text messages to crew
|
|
36
37
|
* MOB alerts (for example from [signalk-mob-notifier](https://github.com/meri-imperiumi/signalk-mob-notifier)) also send a waypoint to the MOB beacon
|
|
@@ -50,8 +51,7 @@ In production use on several boats.
|
|
|
50
51
|
## Requirements
|
|
51
52
|
|
|
52
53
|
* This plugin running inside your Signal K installation
|
|
53
|
-
* 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
|
|
54
|
-
If using Serial connection, it can also be a nRF52 device
|
|
54
|
+
* 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.
|
|
55
55
|
* 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/)
|
|
56
56
|
* Optionally, a Meshtastic GPS tracker device installed in the dinghy
|
|
57
57
|
* Optionally, a [Meshtastic mast-top repeater](https://www.printables.com/model/1396221-meshtastic-boat-module-masthead) for greatly increased communications range
|
|
@@ -91,26 +91,4 @@ Metrics used:
|
|
|
91
91
|
|
|
92
92
|
## Changes
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
- Nodes that haven't been seen in last two days are no longer registered to Signal K data structure
|
|
96
|
-
- Added safeties for various non-numeric telemetry and coordinate values
|
|
97
|
-
* 1.2.2 (2025-10-01)
|
|
98
|
-
- Set "last seen" timestamp of nodes based on packet payloads, not the time they're received
|
|
99
|
-
- Send timestamp with telemetry
|
|
100
|
-
- Fixed issue with persising node-to-vessel matches from `DE <callsign>`
|
|
101
|
-
* 1.2.1 (2025-09-28)
|
|
102
|
-
- Fixed issue with Signal K servers that don't have navigation.position set
|
|
103
|
-
* 1.2.0 (2025-09-28)
|
|
104
|
-
- Support for Node.js older than 22.x, for example as seen in Venus OS Large
|
|
105
|
-
- Safety for nodes in DB that don't have a "last seen" timestamp
|
|
106
|
-
- Made connection status notifications clearer
|
|
107
|
-
* 1.1.2 (2025-09-25)
|
|
108
|
-
- Added support for the new roles from Meshtastic 2.7 (`ROUTER_LATE` and `CLIENT_BASE`)
|
|
109
|
-
- Fixed issue with sending a bell with alerts that have sound enabled
|
|
110
|
-
* 1.1.1 (2025-09-18)
|
|
111
|
-
- Fixed empty response text message to digital switching actions
|
|
112
|
-
- Added support for the proposed Signal K MOB position specification
|
|
113
|
-
* 1.1.0 (2025-09-11)
|
|
114
|
-
- Added support for Serial transport with the Meshtastic device
|
|
115
|
-
* 1.0.0 (2025-09-11)
|
|
116
|
-
- Initial release with HTTP and TCP transports
|
|
94
|
+
See <CHANGELOG.md>
|
package/doc/mpwrd.png
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meri-imperiumi/signalk-meshtastic",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Signal K plugin for interfacing with the Meshtastic LoRa mesh network",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "eslint ."
|
|
@@ -16,11 +16,20 @@
|
|
|
16
16
|
"keywords": [
|
|
17
17
|
"meshtastic",
|
|
18
18
|
"signalk-node-server-plugin",
|
|
19
|
-
"signalk-category-
|
|
20
|
-
"signalk-category-
|
|
19
|
+
"signalk-category-hardware",
|
|
20
|
+
"signalk-category-notifications"
|
|
21
21
|
],
|
|
22
22
|
"main": "plugin/index.js",
|
|
23
23
|
"signalk-plugin-enabled-by-default": false,
|
|
24
|
+
"signalk": {
|
|
25
|
+
"appIcon": "./doc/mpwrd.png",
|
|
26
|
+
"displayName": "Meshtastic Integration",
|
|
27
|
+
"screenshots": [
|
|
28
|
+
"./doc/meshtastic-bequia.png",
|
|
29
|
+
"./doc/config-crew-role.png",
|
|
30
|
+
"./doc/telemetry.png"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
24
33
|
"author": "Henri Bergius <henri.bergius@iki.fi>",
|
|
25
34
|
"license": "GPLV3",
|
|
26
35
|
"publishConfig": {
|
|
@@ -30,8 +39,7 @@
|
|
|
30
39
|
"@bufbuild/protobuf": "^2.6.0",
|
|
31
40
|
"@meshtastic/core": "^2.6.7",
|
|
32
41
|
"@meshtastic/transport-http": "^0.2.5",
|
|
33
|
-
"@meshtastic/transport-node": "^0.0.2"
|
|
34
|
-
"@meshtastic/transport-node-serial": "^0.0.2"
|
|
42
|
+
"@meshtastic/transport-node": "^0.0.2"
|
|
35
43
|
},
|
|
36
44
|
"devDependencies": {
|
|
37
45
|
"eslint": "^8.57.1",
|
package/plugin/index.js
CHANGED
|
@@ -16,7 +16,6 @@ if (!global.crypto) {
|
|
|
16
16
|
let MeshDevice;
|
|
17
17
|
let TransportHTTP;
|
|
18
18
|
let TransportNode;
|
|
19
|
-
let TransportNodeSerial;
|
|
20
19
|
let create;
|
|
21
20
|
let toBinary;
|
|
22
21
|
let Protobuf;
|
|
@@ -237,10 +236,6 @@ module.exports = (app) => {
|
|
|
237
236
|
})
|
|
238
237
|
.then((lib) => {
|
|
239
238
|
TransportNode = lib.TransportNode;
|
|
240
|
-
return import('@meshtastic/transport-node-serial');
|
|
241
|
-
})
|
|
242
|
-
.then((lib) => {
|
|
243
|
-
TransportNodeSerial = lib.TransportNodeSerial;
|
|
244
239
|
return import('@bufbuild/protobuf');
|
|
245
240
|
})
|
|
246
241
|
.then((lib) => {
|
|
@@ -511,7 +506,13 @@ module.exports = (app) => {
|
|
|
511
506
|
readFile(nodeDbFile, 'utf-8')
|
|
512
507
|
.catch(() => '{}')
|
|
513
508
|
.then((nodeDb) => {
|
|
514
|
-
|
|
509
|
+
let nodeDbData;
|
|
510
|
+
try {
|
|
511
|
+
nodeDbData = JSON.parse(nodeDb);
|
|
512
|
+
} catch (e) {
|
|
513
|
+
app.debug('Error reading Node DB file', e);
|
|
514
|
+
nodeDbData = {};
|
|
515
|
+
}
|
|
515
516
|
Object.keys(nodeDbData)
|
|
516
517
|
.forEach((nodeNum) => {
|
|
517
518
|
nodes[nodeNum] = nodeDbData[nodeNum];
|
|
@@ -524,9 +525,6 @@ module.exports = (app) => {
|
|
|
524
525
|
if (settings.device && settings.device.transport === 'http') {
|
|
525
526
|
return TransportHTTP.create(settings.device.address);
|
|
526
527
|
}
|
|
527
|
-
if (settings.device && settings.device.transport === 'serial') {
|
|
528
|
-
return TransportNodeSerial.create(settings.device.address);
|
|
529
|
-
}
|
|
530
528
|
return TransportNode.create(settings.device.address);
|
|
531
529
|
})
|
|
532
530
|
.then((transport) => {
|
|
@@ -986,7 +984,7 @@ module.exports = (app) => {
|
|
|
986
984
|
plugin.schema = () => {
|
|
987
985
|
function nodeList() {
|
|
988
986
|
if (Object.keys(nodes).length === 0) {
|
|
989
|
-
return
|
|
987
|
+
return [];
|
|
990
988
|
}
|
|
991
989
|
return Object.keys(nodes)
|
|
992
990
|
.filter((nodeId) => {
|
|
@@ -1023,10 +1021,6 @@ module.exports = (app) => {
|
|
|
1023
1021
|
const: 'http',
|
|
1024
1022
|
title: 'HTTP (nodes connected to same network, typically ESP32)',
|
|
1025
1023
|
},
|
|
1026
|
-
{
|
|
1027
|
-
const: 'serial',
|
|
1028
|
-
title: 'Serial port (use full path to serial device as "address")',
|
|
1029
|
-
},
|
|
1030
1024
|
],
|
|
1031
1025
|
},
|
|
1032
1026
|
address: {
|