signalk-opentide
v0.4.4
Published
OpenTide plugin for SignalK — contribute depth/SOG/position to the worldwide open tidal network at https://opentide.io. Bundled web app shows live tide arc + station status.
Maintainers
Readme
signalk-opentide
A SignalK plugin that contributes depth + SOG + position observations to OpenTide — a worldwide open tidal-prediction network at https://opentide.io.
Note — position reporting fixed in v0.4.2. Earlier versions never sent a moving vessel's position to the network, so a mobile contributor's tide fit had no location and didn't count. Our apologies if your earlier contributions weren't being recorded — from v0.4.2 on, position is reported correctly and your data counts.
What it does
- Subscribes to
environment.depth.*andnavigation.speedOverGroundon SignalK. - Queues every sample locally in a plain append-log file (so offline stretches don't lose data — zero native deps, no
npm installbuild step on a Pi). - Posts batches every 60 seconds to OpenTide's ingest endpoint.
- Survives reboots, network outages, and sender crashes — the on-disk queue is the source of truth.
Once the OpenTide engine has enough data, it produces a harmonic tide fit for your spot and ships predictions back. With ≥ 2 confirmed contributors at the same anchorage, the fits fuse to consensus — the predictions get sharper as more boats and stations join in.
All data is licensed CC-BY 4.0.
Two flavours: vessel and stationary station
| | Vessel | Stationary station |
|---|---|---|
| Position | Read from SignalK's navigation.position | You enter fixedLat / fixedLng in plugin config |
| SOG | Read from SignalK's navigation.speedOverGround | Forced to 0 always |
| Examples | Live-aboard, cruiser, pilot boat | Marina office roof, harbour piling, dock-mounted depth gauge |
Pick stationary for a fixed sensor that doesn't move and doesn't have a GPS. The plugin will not attempt to read SignalK's GPS path; the configured fixedLat/fixedLng are used instead.
Install
npm install signalk-opentideOr via SignalK's Appstore tab (Server → Appstore → search "OpenTide").
Pair a station and configure the plugin
- Visit https://opentide.io/#contribute and click Pair a station.
- Pick Vessel or Stationary station:
- For Stationary: enter your latitude/longitude (decimal degrees) and a station name.
- Copy the generated token (starts with
ot_…). - In SignalK admin → Server → Plugin Config → OpenTide:
- Paste the token.
- Pick the same station type you chose at opentide.io.
- For Stationary: also fill in
fixedLat,fixedLng,stationName.
- Save. The plugin starts queuing and shipping samples within ~60 s.
You can check progress at https://opentide.io/#status by entering your token.
Plugin status
Visit http://<your-signalk>/plugins/signalk-opentide/diagnostics for queue depth, last response, and last error. The plugin also exposes:
/plugins/signalk-opentide/token— used by the bundled web app to read the token without it appearing in URLs./plugins/signalk-opentide/lastResponse— most recent successful prediction response (for offline rendering).
How long until predictions show up?
| Hours of data | Confidence tier | |---|---| | 0–24 | Collecting | | 24–48 | Early (preliminary fit; UI shows "*" badge) | | 48 h+ | Good | | 5 days+ | Confirmed | | ≥ 2 confirmed contributors at the same spot | Consensus (fused) |
Privacy and licensing
- The token is anonymous — no Sealink / OpenTide account required.
- Submitted depth + SOG + timestamp data is licensed CC-BY 4.0: anyone may reuse it as long as they credit the OpenTide network.
- The plugin sends NO other SignalK data — wind, battery, AIS, etc. are not forwarded.
Part of the OpenSeas Tech Collective
OpenTide is an open-data project of the OpenSeas Tech Collective alongside SeaLink, KeelWise, and HarbourNow.
License
Plugin code: MIT. Submitted observations: CC-BY 4.0 (set per OpenTide token at pair time).
