signalk-autopilot
is composed of 2 modules:
- A graphical interface that emulates a Raymarine remote control
To be able to acknowledge pilot related alarms through the GUI you need to install thesignalk-alarm-silencer
plugin. - A back-end API described below.
This currently only supports Raymarine NMEA 2000 and Raymarine Seatalk 1 Autopilots, but I'll be adding support for other autopilots as needed.
For Seatalk 1 Autopilots to work, a device that can translate Seatalk datagrams back and forth within an NMEA0183 sentence is required. They may be purchased from Digital Yacht, Shipmodul (Miniplex 3) or gadgetpool. For an example guide, see TinyNMEA-USB.md
Also, signalk-to-nmea0183 plugin with APB (for route control) and MWV (for wind steer) should be enabled.
The current state of the autopilot can be found at the following paths:
- steering.autopilot.target.headingMagnetic
- steering.autopilot.target.windAngleApparent
- steering.autopilot.state (standby, wind, route, or auto)
All messages to plugin are done using PUT requests. These can be done via HTTP or over WebSockets.
Detailed info on PUT and Request/Response
Http:
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/target/headingMagnetic
{
"value": 1.52,
}
WebSockets:
{
"context": "vessels.self",
"requestId": "184743-434373-348483",
"put": {
"path": "steering.autopilot.target.headingMagnetic",
"value": 1.52
}
}
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/actions/advanceWaypoint
{
"value": 1,
}
The value
can be auto
, wind
, route
, or standby
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/state
{
"value": "auto",
}
The value
is in degrees and is the amount to change. So when in auto
at a heading of 180, a value of -10
will change the target heading would be changed to 170
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/actions/adjustHeading
{
"value": -10,
}
The value
is port
or starboard
.
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/actions/tack
{
"value": "port",
}
The value
is the heading in radians.
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/target/headingMagnetic
{
"value": 1.52,
}
The value
is the wind angle in radians.
PUT http://localhost:3000/signalk/v1/api/vessels/self/steering/autopilot/target/windAngleApparent
{
"value": 1.52,
}