diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ce98cae5e..8fecda662 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -192,8 +192,13 @@ jobs:
runs-on: ubuntu-latest
needs: docker_image
steps:
+ - name: Checkout
+ uses: actions/checkout@v3
- name: Setup flyctl
uses: superfly/flyctl-actions/setup-flyctl@master
+ - name: Set TAG for build-arg
+ id: vars
+ run: echo ::set-output name=tag::$(echo ${GITHUB_REF#refs/*/})
- name: Deploy demo.signalk.org at fly.io
working-directory: ./fly_io/demo_signalk_org
run: flyctl deploy --remote-only --build-arg SK_VERSION=${{ steps.vars.outputs.tag }}
diff --git a/.github/workflows/require_pr_label.yml b/.github/workflows/require_pr_label.yml
index dd0b5a39c..743f038c3 100644
--- a/.github/workflows/require_pr_label.yml
+++ b/.github/workflows/require_pr_label.yml
@@ -6,7 +6,7 @@ jobs:
label:
runs-on: ubuntu-latest
steps:
- - uses: mheap/github-action-required-labels@v1
+ - uses: mheap/github-action-required-labels@v5
with:
mode: exactly
count: 1
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 97b4e4d70..5a38f71c6 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
- node-version: [16.x]
+ node-version: [16.x, 18.x, 20.x]
steps:
- uses: actions/checkout@v3
diff --git a/docs/book.toml b/docs/book.toml
index 57c15ab1a..751888aec 100644
--- a/docs/book.toml
+++ b/docs/book.toml
@@ -10,4 +10,7 @@ src = "src"
build-dir = "built"
create-missing = false
+[output.html]
+edit-url-template = "https://github.com/SignalK/signalk-server/tree/master/docs/src"
+
diff --git a/docs/src/installation/raspberry_pi_installation.md b/docs/src/installation/raspberry_pi_installation.md
index e6c2a8c8a..9c0ed0d90 100644
--- a/docs/src/installation/raspberry_pi_installation.md
+++ b/docs/src/installation/raspberry_pi_installation.md
@@ -28,18 +28,16 @@ Once the OS installation has been completed, you are ready to commence.
1. Update the list of install packages.
```
- $ sudo apt update
+ sudo apt update
```
-1. Install NodeJS and npm.
- ```
- $ curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
- $ sudo apt-get install -y nodejs
- ```
+1. Install NodeJS 18 and npm.
+
+ Follow [instructions for Ubuntu and Debian based distributions like Raspberry Pi OS at NodeSource Distributions](https://github.com/nodesource/distributions#installation-instructions).
1. Ensure that we're using the latest version of npm.
```
- $ sudo npm install -g npm@latest
+ sudo npm install -g npm@latest
```
Use the following command to check the versions of NodeJS and npm installed.
@@ -51,25 +49,25 @@ Once the OS installation has been completed, you are ready to commence.
1. Install a Bonjour (mDNS) service for Linux called Avahi, which allows Apps and other network devices to Discover the Signal K server.
```
- $ sudo apt install libnss-mdns avahi-utils libavahi-compat-libdnssd-dev
+ sudo apt install libnss-mdns avahi-utils libavahi-compat-libdnssd-dev
```
## Install Signal K Server
```
-$ sudo npm install -g signalk-server
+sudo npm install -g signalk-server
```
You can test that installation was successful by starting the server using some
sample data.
```
-$ signalk-server --sample-nmea0183-data
+signalk-server --sample-nmea0183-data
```
You should see the terminal output "signalk-server running at 0.0.0.0:3000" as shown below...
```
-$ signalk-server --sample-nmea0183-data
+signalk-server --sample-nmea0183-data
Using sample data from /usr/lib/node_modules/signalk-server/samples/plaka.log
signalk-server running at 0.0.0.0:3000
```
@@ -101,7 +99,7 @@ Now that you have Signal K server installed, you will want to generate a setting
and configure your RPi to start the server automatically. To do this run the setup script by entering the following command and follow the prompts.
```
-$ sudo signalk-server-setup
+sudo signalk-server-setup
```
You can re-run this command at any time in the future to change the settings.
@@ -114,20 +112,20 @@ Signal K server will now be started automatically when your RPi boots up.
If you want to temporarily stop the Signal K server, you can do so by entering the following commands:
```
-$ sudo systemctl stop signalk.service
-$ sudo systemctl stop signalk.socket
+sudo systemctl stop signalk.service
+sudo systemctl stop signalk.socket
```
To start Signal K server again enter the following commands:
```
-$ sudo systemctl start signalk.service
-$ sudo systemctl start signalk.socket
+sudo systemctl start signalk.service
+sudo systemctl start signalk.socket
```
To stop Signal K server from starting automatically enter the following commands:
```
-$ sudo systemctl disable signalk.service
-$ sudo systemctl disable signalk.socket
+sudo systemctl disable signalk.service
+sudo systemctl disable signalk.socket
```
diff --git a/docs/src/setup/SK_file_stream_N2K.png b/docs/src/setup/SK_file_stream_N2K.png
new file mode 100644
index 000000000..f528d93a3
Binary files /dev/null and b/docs/src/setup/SK_file_stream_N2K.png differ
diff --git a/docs/src/setup/configuration.md b/docs/src/setup/configuration.md
index 2116a5e22..22929918a 100644
--- a/docs/src/setup/configuration.md
+++ b/docs/src/setup/configuration.md
@@ -42,10 +42,26 @@ The options presented will vary based on the data type chosen.
Please refer to the [Canboat PGN database](https://canboat.github.io/canboat/canboat.html) to see what PGNs are supported.
-
**_NMEA0183_**: The processing of NMEA0183 sentences is done by [nmea0183-signalk](https://github.com/SignalK/signalk-parser-nmea0183)
+**Connection type "File Stream"**
+
+Sample files are available which can be set up as input for the server.
+
+Use below command to get the path to a NMEA 2000 file with navigation data and AIS targets.
+
+```
+sudo find / -name "aava-n2k.data"
+```
+Set up according to picture.
+
+![SK_N2K_file](./SK_file_stream_N2K.png)
+
+To get the path for the sample file, data type NMEA 0183, use below command.
+```
+sudo find / -name "plaka.log"
+```
### Install Plugins and Webapps
Signal K server functionality can be extended through the use of plugins and webapps.
diff --git a/docs/src/setup/seatalk/seatalk.md b/docs/src/setup/seatalk/seatalk.md
index 00d5c249f..4bbe9e2ba 100644
--- a/docs/src/setup/seatalk/seatalk.md
+++ b/docs/src/setup/seatalk/seatalk.md
@@ -2,6 +2,8 @@
### Introduction
+Please note that this setup will [not, for the moment, run on a Raspberry Pi 5](https://github.com/SignalK/signalk-server/issues/1658) !!
+
The Signal K Server supports a variety of data connection types including _Seatalk (GPIO)_ which provides the ability to receive Raymarine Seatalk 1 (ST1) data, via simple DIY hardware connected to a Raspberry Pi GPIO, and convert it to Signal K deltas. This information can then be forwarded by the Signal K Server to a NMEA 0183 or NMEA 2000 network using appropriate hardware and plugins.
A guide to SeaTalk can be found [here](http://boatprojects.blogspot.com/2012/12/beginners-guide-to-raymarines-seatalk.html).
@@ -10,11 +12,15 @@ _Inspired by [Read SeaTalk1 from the Raspberry Pi GPIO using pigpio](https://git
### Hardware
-![ST1_opto_SK](./seatalk_circuit_1.jpg)
-
Using an optocoupler as the hardware interface is recommended as it creates electrical isolation from hazardous voltages and avoids ground loops.
-The circuit above uses the [PC817 optocoupler](https://www.amazon.com/ARCELI-Optocoupler-Isolation-Converter-Photoelectric/dp/B07M78S8LB/ref=sr_1_2?dchild=1&keywords=pc817+optocoupler&qid=1593516071&sr=8-2) but any equivlent product can be used. The LED in the circuit will flicker when there is ST1 traffic.
+The circuit below uses the [PC817 optocoupler board](https://www.amazon.com/ARCELI-Optocoupler-Isolation-Converter-Photoelectric/dp/B07M78S8LB/ref=sr_1_2?dchild=1&keywords=pc817+optocoupler&qid=1593516071&sr=8-2) but any equivlent product can be used. The LED in the circuit will flicker when there is ST1 traffic.
+
+![ST1_opto_SK](./seatalk_circuit_3.jpg)
+
+If you are building the interface yourself use the below circuit instead. If you don't want any flickering just drop the LED at the input.
+
+![ST1_opto_SK](./seatalk_circuit_4.jpg)
A simpler, non-electrically isolated, solution is detailed below, using a low signal NPN transistor which inverts and shifts the voltage from 12V DC to 3.3V DC.
@@ -70,8 +76,7 @@ _Example Data Connection:_
![GPIO](./gpio.png)
-- Set _Invert Signal_ based on the hardware interface you have used _(e.g. Select **Yes** if using the hardware setup above. Select **No** if using a hardware interface that does not invert the ST1 signal)_.
-
+- Set _Invert Signal_ based on the hardware interface you have used _(e.g. Select **No** if using the optocoupler hardware setup above. Select **Yes** if using a hardware interface that inverts the ST1 signal)_.
- Click **Apply** to save your data connection settings.
diff --git a/docs/src/setup/seatalk/seatalk_circuit_1.jpg b/docs/src/setup/seatalk/seatalk_circuit_1.jpg
deleted file mode 100644
index c050e4e5e..000000000
Binary files a/docs/src/setup/seatalk/seatalk_circuit_1.jpg and /dev/null differ
diff --git a/docs/src/setup/seatalk/seatalk_circuit_3.jpg b/docs/src/setup/seatalk/seatalk_circuit_3.jpg
new file mode 100644
index 000000000..4230b8855
Binary files /dev/null and b/docs/src/setup/seatalk/seatalk_circuit_3.jpg differ
diff --git a/docs/src/setup/seatalk/seatalk_circuit_4.jpg b/docs/src/setup/seatalk/seatalk_circuit_4.jpg
new file mode 100644
index 000000000..30ee31092
Binary files /dev/null and b/docs/src/setup/seatalk/seatalk_circuit_4.jpg differ
diff --git a/package.json b/package.json
index fa7e2cad0..c49f45ac5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "signalk-server",
- "version": "2.2.0",
+ "version": "2.5.0",
"description": "An implementation of a [Signal K](http://signalk.org) server for boats.",
"main": "index.js",
"scripts": {
@@ -72,13 +72,13 @@
],
"dependencies": {
"@signalk/course-provider": "^1.0.0",
- "@signalk/n2k-signalk": "^2.0.0",
+ "@signalk/n2k-signalk": "^3.0.0",
"@signalk/nmea0183-signalk": "^3.0.0",
"@signalk/resources-provider": "^1.0.0",
- "@signalk/server-admin-ui": "2.1.x",
- "@signalk/server-api": "2.1.x",
+ "@signalk/server-admin-ui": "2.4.x",
+ "@signalk/server-api": "2.3.x",
"@signalk/signalk-schema": "^1.7.1",
- "@signalk/streams": "^3.2.0",
+ "@signalk/streams": "^4.1.0",
"api-schema-builder": "^2.0.11",
"baconjs": "^1.0.1",
"bcryptjs": "^2.4.3",
@@ -93,7 +93,6 @@
"cookie-parser": "^1.4.3",
"cors": "^2.5.2",
"debug": "^4.3.3",
- "devcert": "^1.2.2",
"dnssd2": "1.0.0",
"errorhandler": "^1.3.0",
"express": "^4.10.4",
@@ -117,6 +116,7 @@
"ncp": "^2.0.0",
"node-fetch": "^2.6.0",
"primus": "^7.0.0",
+ "selfsigned": "^2.4.1",
"semver": "^7.5.4",
"split": "^1.0.0",
"stat-mode": "^1.0.0",
diff --git a/packages/server-admin-ui/package.json b/packages/server-admin-ui/package.json
index adfbd1ae9..77c302a33 100644
--- a/packages/server-admin-ui/package.json
+++ b/packages/server-admin-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@signalk/server-admin-ui",
- "version": "2.1.0",
+ "version": "2.4.0",
"description": "Signal K server admin webapp",
"author": "Scott Bender, Teppo Kurki",
"contributors": [
diff --git a/packages/server-admin-ui/src/components/Sidebar/Sidebar.js b/packages/server-admin-ui/src/components/Sidebar/Sidebar.js
index cab93cd2d..cdbc6f4e0 100644
--- a/packages/server-admin-ui/src/components/Sidebar/Sidebar.js
+++ b/packages/server-admin-ui/src/components/Sidebar/Sidebar.js
@@ -102,7 +102,6 @@ class Sidebar extends Component {
// nav dropdown
const navDropdown = (item, key) => {
- console.log('****', item)
return (