Skip to content

SignalK/aisreporter

Repository files navigation

aisreporter

CI npm version License

Signal K server plugin that reports the vessel's position, speed, heading, and static info to MarineTraffic, AISHub, and similar aggregators over UDP.

The plugin generates the raw NMEA AIS messages itself (class B position-report type 18 + static-data type 24) from Signal K paths. It does not require a real AIS receiver or transceiver, and it will not forward positions that came in from your existing AIS. If you have an AIS and want to relay its frames, use ais-forwarder instead.

Installation

Through the Signal K server admin UI — App Store → search for aisreporter → install. Or from the command line in your ~/.signalk dir:

npm install @signalk/aisreporter

Requires signalk-server with Node >=22.

Usage

  1. Configure vessel MMSI and name in the server admin UI (Server → Settings → Vessel). Static AIS fields — length, beam, callsign, ship type, GPS offset from bow / centre — come from design.* Signal K paths, usually populated via defaults.json.
  2. Enable the plugin in Server → Plugin Config → Ais Reporter and add one or more UDP endpoints (see Creating stations for where to get them).
  3. Save. The plugin sends position reports at the configured rate and static reports on a slower rate.

Plugin configuration page

Options

Key Default Meaning
endpoints [] List of {ipaddress, port} UDP destinations.
updaterate 60 s Position report interval (debounced).
staticupdaterate 360 s Static info (name, dimensions, callsign) report interval.
lastpositonupdate false Keep resending the last known position while position data isn't changing (e.g. GPS off while docked).
lastpositonupdaterate 180 s Interval of the last-known-position resend.

The static info written into AIS messages is read from these Signal K paths, in addition to the vessel MMSI and name:

  • design.length.value.overall
  • design.beam.value
  • design.aisShipType.value.id
  • communication.callsignVhf
  • sensors.gps.fromBow.value
  • sensors.gps.fromCenter.value

Creating stations

You need an IP address and a UDP port assigned by an aggregator before the plugin can do anything useful. Request one from:

Other receivers that accept plain UDP AIS frames (e.g. a local OpenCPN) also work.

Troubleshooting

The repo ships a udp_listen shell helper that acts as a fake receiver. Configure the plugin to send to localhost:12345, then run:

./udp_listen 12345

on the same machine to see exactly what the plugin is emitting.

Contributing

Issues and pull requests welcome at SignalK/aisreporter. npm test runs the mocha suite; npm run typecheck + npm run build guard the TypeScript surface; npm run mutation runs Stryker.

License

Apache-2.0. See LICENSE.

About

Signal K Node server plugin to report the vessel's AIS data to MarineTraffic

Resources

License

Stars

16 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors

Languages