tkurki / signalk-to-influxdb2

Apache License 2.0
6 stars 4 forks source link
sk

signalk-to-influxdb2

This is a Signal K Server plugin that writes Signal K data into one or several InfluxDB v2 databases.

This is a total rewrite of signalk-to-influxdb that works with InfluxDB v1.x databases.

Once the data is in InfluxDb you can use for example Grafana to draw pretty graphs of your data.

Main features:

See backlog for planned features and Releases for published features.

For discussions and support visit the Signal K Website.

Details

Plugin and InfluxDB Setup

To configure the plugin, you need to have have already installed InfluxDB 2 and created a new bucket and an access token. You can use the operator API token or, if you're security-conscious, create a new token with more restrictive permissions.

Install the plugin using the Signal K Appstore. Remember to restart Signal K to apply the changes.

Go to plugin configuration: Server -> Plugin Config, then scroll down to "Signal K to InfluxDb 2" and expand the section.

The plugin can connect to multiple InfluxDB instances. We will only configure one:

If you're mostly interested in your own boat data, select "Store only self data". Leaving that unchecked may result in a lot of data being stored, especially if you are in a busy area.

Set the other configuration options as to your liking. Brief guidance:

Remember to click "Submit" to save your configuration!

Configuring the Grafana Data Source

While technically not in the scope of this plugin, this section describes how to set up an InfluxDB data source in Grafana. (Another option would be to use the experimental signalk-grafana data data source.) These settings have been tested with InfluxDB 2.7.10, earlier versions may or may not work.

These instuctions configure an InfluxDb datasource using InfluxQL as the query language against InfluxDb version 2. InfluxQL is a good choice as the query language because the Grafana datasource includes a UI for building queries by picking database fields instead of manually writing the raw query.

To begin with you will need to create an API token in InfluxDB.

Login to Grafana. On Signal K installations, Grafana often runs on port 3001: http://mysignalkhostname:3001/

Create the data source:

Use the following InfluxDB Details:

Then click "Save & test". You should get a positive acknowledgment. Now, you can create dashboard panels that use InfluxDB as the data source.

History API

The plugin implements the Signal K History API, allowing retrieval of historical data with HTTP GET requests.

Retrieve logged data

To retrieve logged data from the database, send a request to the values endpoint, specifying at least the time interval and SignalK path(s).

http://localhost:3000/signalk/v1/history/values?from=2023-04-23T18:53:20Z&to=2023-04-23T18:55:00Z&paths=environment.wind.speedApparent

The data returned is in SI units, e.g. vessel and wind speeds in meters/s, angles in radian.

For further refinement of the queries, you can use the following request parameters.

Request Parameters

The following request parameters are supported in queries:

Examples

Get minimum apparent wind angles:

http://localhost:3000/signalk/v1/history/values?from=2023-04-23T18:51:26Z&to=2023-04-23T19:58:43Z&paths=environment.wind.angleApparent:min

Get wind angle and boat speed:

http://localhost:3000/signalk/v1/history/values?from=2023-04-23T18:53:20Z&to=2023-04-23T18:55:00Z&paths=environment.wind.angleApparent,navigation.speedThroughWater&resolution=60

Get the track with positions at intervals of 5 minutes in GPX format:

http://localhost:3000/signalk/v1/history/values?from=2023-11-04T10:00:00Z&to=2023-11-12T18:00:00Z&paths=navigation.position&resolution=300

List available data paths

To retrieve a list of available paths, send a request to the paths endpoint with from and to timestamps:

http://localhost:3000/signalk/v1/history/paths?from=2023-11-04T00:00:00Z&to=2029-11-25T23:59:59Z

List available contexts

To retrieve a list of available contexts, send a request to the contexts endpoint with from and to timestamps:

http://localhost:3000/signalk/v1/history/contexts?from=2023-11-04T00:00:00Z&to=2029-11-25T23:59:59Z