@meri-imperiumi/signalk-meshtastic 1.2.4 → 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 ADDED
@@ -0,0 +1,5 @@
1
+ [*]
2
+ end_of_line = lf
3
+ insert_final_newline = true
4
+ indent_style = space
5
+ indent_size = 2
package/.eslintrc.json CHANGED
@@ -2,5 +2,8 @@
2
2
  "extends": "airbnb-base",
3
3
  "parserOptions": {
4
4
  "ecmaVersion": 11
5
+ },
6
+ "rules": {
7
+ "linebreak-style": "warn"
5
8
  }
6
9
  }
@@ -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: 22
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: 22
26
+ node-version: 24
27
27
  registry-url: https://registry.npmjs.org/
28
28
  - run: npm publish
29
29
  env:
@@ -0,0 +1,11 @@
1
+ name: SignalK Plugin CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ pull_request:
7
+ branches: [main, master]
8
+
9
+ jobs:
10
+ test:
11
+ uses: SignalK/signalk-server/.github/workflows/plugin-ci.yml@master
@@ -8,7 +8,7 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
  strategy:
10
10
  matrix:
11
- node-version: [22.x]
11
+ node-version: [24.x]
12
12
  steps:
13
13
  - uses: actions/checkout@v3.0.2
14
14
  - name: Use Node.js ${{ matrix.node-version }}
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, TCP, or Serial
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.<br>
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,28 +91,4 @@ Metrics used:
91
91
 
92
92
  ## Changes
93
93
 
94
- * 1.2.4 (2026-02-15)
95
- - Corrupted Node DB file should no longer crash the plugin
96
- * 1.2.3 (2025-10-15)
97
- - Nodes that haven't been seen in last two days are no longer registered to Signal K data structure
98
- - Added safeties for various non-numeric telemetry and coordinate values
99
- * 1.2.2 (2025-10-01)
100
- - Set "last seen" timestamp of nodes based on packet payloads, not the time they're received
101
- - Send timestamp with telemetry
102
- - Fixed issue with persising node-to-vessel matches from `DE <callsign>`
103
- * 1.2.1 (2025-09-28)
104
- - Fixed issue with Signal K servers that don't have navigation.position set
105
- * 1.2.0 (2025-09-28)
106
- - Support for Node.js older than 22.x, for example as seen in Venus OS Large
107
- - Safety for nodes in DB that don't have a "last seen" timestamp
108
- - Made connection status notifications clearer
109
- * 1.1.2 (2025-09-25)
110
- - Added support for the new roles from Meshtastic 2.7 (`ROUTER_LATE` and `CLIENT_BASE`)
111
- - Fixed issue with sending a bell with alerts that have sound enabled
112
- * 1.1.1 (2025-09-18)
113
- - Fixed empty response text message to digital switching actions
114
- - Added support for the proposed Signal K MOB position specification
115
- * 1.1.0 (2025-09-11)
116
- - Added support for Serial transport with the Meshtastic device
117
- * 1.0.0 (2025-09-11)
118
- - 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.2.4",
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-ais",
20
- "signalk-category-hardware"
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) => {
@@ -530,9 +525,6 @@ module.exports = (app) => {
530
525
  if (settings.device && settings.device.transport === 'http') {
531
526
  return TransportHTTP.create(settings.device.address);
532
527
  }
533
- if (settings.device && settings.device.transport === 'serial') {
534
- return TransportNodeSerial.create(settings.device.address);
535
- }
536
528
  return TransportNode.create(settings.device.address);
537
529
  })
538
530
  .then((transport) => {
@@ -992,7 +984,7 @@ module.exports = (app) => {
992
984
  plugin.schema = () => {
993
985
  function nodeList() {
994
986
  if (Object.keys(nodes).length === 0) {
995
- return undefined;
987
+ return [];
996
988
  }
997
989
  return Object.keys(nodes)
998
990
  .filter((nodeId) => {
@@ -1029,10 +1021,6 @@ module.exports = (app) => {
1029
1021
  const: 'http',
1030
1022
  title: 'HTTP (nodes connected to same network, typically ESP32)',
1031
1023
  },
1032
- {
1033
- const: 'serial',
1034
- title: 'Serial port (use full path to serial device as "address")',
1035
- },
1036
1024
  ],
1037
1025
  },
1038
1026
  address: {