signalk-to-mongodb-atlas
Version:
SignalK Plugin to send data to a MongoDB Atlas hosted database
89 lines (67 loc) • 2.9 kB
Markdown
# signalk-to-mongodb-atlas
SignalK plugin to push deltas to MongoDB Atlas (or any compatible HTTP endpoint)
The plugin is designed for batch writes to a cloud hosted MongoDB Atlas data base. It could also be used to push data to many other online services that provide a https:// endpoint with a simple API key for authentication.
## Data Format
As MongoDB is a document based (noSQL) database, measurements are pushed as simple JSON objects as follows:
```bash
{
"source": "NMEA2K.c0a0b40010e111f6",
"context": "vessels.urn:mrn:imo:mmsi:100000001",
"path": "environment.wind.speedApparent",
"value": 0.56,
"time": { // eJSON time
"$date": {
"$numberLong": "1666287376565"
}
},
"ver": "2", // any user defined tags are added as properties
"self": true, // 'tag as self' flag
"dt": 1666287376, // unix date-time in seconds
"mmsi": 100000001 // vessel mmsi derived from the signalK context
}
```
## Config Parameters
### API Endpoint
the full url to your cloud hosted MongoDB Atlas endpoint
```https://ap-southeast-2.aws.data.mongodb-api.com/app/[your endpoint]```
### API Key
the secret MongoDB Atlas API Key for your cloud hosted database
```some secret key```
### API Http Method
the HTTP method
```GET, PUT, POST```
### Batch Size
the number of values to send in a single batch to the MongoDB Atlas endpoint
```100```
### Flush Interval
maximum time in seconds to keep points in an unflushed batch, 0 means don't periodically flush
```60```
### Maximum Buffer Size
maximum size of the buffer (this is recommended as a multiple of Batch Size to allow for items that may not have been able not be sent the first time)
```1000```
### Maximum Time to Live
maximum time to buffer data in seconds - older data is automatically removed from the buffer (i.e. and not sent)
```180```
### Tag as 'self' if applicable
tag measurements as {self: true} when from vessel.self - requires an MMSI or UUID to be set in the Vessel Base Data on the Server->Settings page
```180```
### Default Tags
default tags added to every measurement
```{name: 'my tag', value: 'true'}```
### Path Options
these options are set per individual path, selected to send data from SignalK to MongoDB Atlas
#### Enabled?
enable writes to MongoDB Atlas for this path (server restart is required)
```true```
#### SignalK context
context to record e.g.'self' for own ship, or 'vessels.*' for all vessels, or '*' for everything
```self```
#### SignalK path
path to record e.g.'navigation.position' for positions, or 'navigation.*' for all navigation data, or '*' for everything
```true```
#### Recording interval
minimum milliseconds between data records
```1000```
#### Path tags
Define any tags to include for this path
```{name: 'my path', value: '1234'}```