NMEA 2000 bus data and SignalK

A while ago I wrote about my SignalK first look experience, and the captures I had taken to help the dev team with various systems and instruments they might not have direct access to.  I decided to dig a bit deeper into the amount of data that was on my NMEA 2000 bus since I was surprised at some of the errors and issues they uncovered with SignalK, and wanted to make sure there weren’t any problems with my bus or devices.

I set out to analyze the data I had captured during my first look experiments, and subsequent playings with SignalK…

I analyzed as much of it as I could, and even broke out my Maretron N2KMeter to see what was going on.  I found some misbehaving members of the network, and ended up contacting the vendors to see if they had a fix, which they did.  The primary offender was a Maretron heading sensor which was sending too frequent updates, against the configuration that I had in place.

SignalK seems to be catching on all over the place.  One of my favorite blogs, The Marine Installer’s Rant, did a great overview of SignalK and what it is in SignalK FAQ’s.  I highly recommend reading this if you’re interested in an intro.

Below is a capture of less than a second’s data on my NMEA 2000 bus.  It is a bit hard to read, but you can see the frequent updates from the engine, AC & DC monitors, compass, AIS, depth, speed, and weather sensors.  So much data!

2015-01-15-16:13:02.778 3 192 255 65014 Utility Phase A Basic AC Quantities: Line-Line AC RMS Voltage = 117 V; Line-Neutral AC RMS Voltage = 117 V; AC RMS Current = 11 A 2015-01-15-16:13:02.778 2 245 255 129025 Position, Rapid Update: Latitude = 47.6292119; Longitude = -122.3891033 2015-01-15-16:13:02.778 2 245 255 129026 COG & SOG, Rapid Update: SID = 180; COG Reference = True; COG = Unknown; SOG = 0.00 m/s 2015-01-15-16:13:02.778 2 17 255 127488 Engine Parameters, Rapid Update: Engine Instance = Single Engine or Dual Engine Port; Engine Speed = 0.0 rpm; Engine Tilt/Trim = Unknown 2015-01-15-16:13:02.778 2 2 255 129026 COG & SOG, Rapid Update: SID = 21; COG Reference = True; COG = 0.0 deg; SOG = 0.05 m/s 2015-01-15-16:13:02.779 3 192 255 65015 Utility Total AC Reactive Power: Reactive Power = 0 var; Power Factor Lagging = Lagging 2015-01-15-16:13:02.779 2 17 255 127245 Rudder: Instance = 0; Direction Order = Unknown; Angle Order = -0.0 deg; Position = Unknown 2015-01-15-16:13:02.779 4 43 255 129038 AIS Class A Position Report: Message ID = 1; Repeat Indicator = Initial; User ID = 367030568; Longitude = -122.3791965; Latitude = 47.6588466; Position Accuracy = Low; RAIM = not in use; Time Stamp = 1; COG = 222.6 deg; SOG = 0.00 m/s; Communication State = 0x18039; AIS Transceiver information = Channel A VDL r eception; Heading = Unknown; Rate of Turn = Unknown; Nav Status = Under way using engine; Regional Application = 0 2015-01-15-16:13:02.779 5 36 255 130312 Temperature: SID = Unknown; Temperature Instance = 0; Temperature Source = Sea Temperature 2015-01-15-16:13:02.779 3 36 255 128267 Water Depth: SID = 57; Depth = 6.73 m; Offset = -0.610 m 2015-01-15-16:13:02.779 7 36 255 65408 Airmar: Depth Quality Factor: Manufacturer Code = Airmar; Industry Code = Marine Industry; SID = 57; Depth Quality Factor = 10 2015-01-15-16:13:02.779 7 36 255 65409 Manufacturer Proprietary single-frame non-addressed: Manufacturer Code = Airmar; Industry Code = Marine; Data = 0xff000003e8ff 2015-01-15-16:13:02.779 7 36 255 65410 Airmar: Device Information: Manufacturer Code = Airmar; Industry Code = Marine Industry; SID = 58; Internal Device Temperature = 17.44 C (63.4 F); Supply Voltage = 12.98 V 2015-01-15-16:13:02.779 2 36 255 128259 Speed: SID = 58; Speed Water Referenced = 0.00 m/s; Speed Ground Referenced = Unknown; Speed Water Referenced Type = Paddle wheel 2015-01-15-16:13:02.779 5 36 255 130310 Environmental Parameters: SID = 116 2015-01-15-16:13:02.780 3 192 255 65016 Utility Total AC Power: Real Power = 1253 W; Apparent Power = 1253 VA 2015-01-15-16:13:02.780 6 36 255 128275 Distance Log: Log = 207.397 km; Trip Log = 207.397 km 2015-01-15-16:13:02.780 5 41 255 130311 Environmental Parameters: SID = 157; Temperature Source = Inside Temperature; Humidity Source = Unknown; Temperature = 13.14 C (55.7 F); Humidity = Unknown 2015-01-15-16:13:02.780 5 41 255 130311 Environmental Parameters: SID = 157; Temperature Source = Engine Room Temperature; Humidity Source = Unknown; Temperature = 7.78 C (46.0 F); Humidity = Unknown 2015-01-15-16:13:02.780 5 41 255 130311 Environmental Parameters: SID = 157; Temperature Source = Main Cabin Temperature; Humidity Source = Unknown; Temperature = 16.66 C (62.0 F); Humidity = Unknown 2015-01-15-16:13:02.780 0 0 0 262386 Actisense: System status: SID = 1; Model ID = 14; Serial ID = 111036; Error ID = 0; Indi channel count = 2; Ch1 Rx Bandwidth = 19; Ch1 Rx Load = 4; Ch1 Rx Filtered = 0; Ch1 Rx Dropped = 0; Ch1 Tx Bandwidth = 0; Ch1 Tx Load = 0; Ch2 Rx Bandwidth = 0; Ch2 Rx Load = 0; Ch2 Rx Filtered = 0; Ch2 Rx Dropped = 0; Ch2 Tx Bandwidth = 46; Ch2 Tx Load = 98; Uni channel count = 2; Ch1 Bandwidth = 11; Ch1 Deleted = 0; Ch1 BufferLoading = 2; Ch1 PointerLoading = 6; Ch2 Bandwidth = 16; Ch2 Deleted = 0; Ch2 BufferLoading = 0; Ch2 PointerLoading = 0 2015-01-15-16:13:02.780 2 3 255 65280 Manufacturer Proprietary single-frame non-addressed: Manufacturer Code = Navico; Industry Code = Marine; Data = 0x200000504 2015-01-15-16:13:02.780 2 2 255 129025 Position, Rapid Update: Latitude = 47.6292158; Longitude = -122.3891621 2015-01-15-16:13:02.780 4 43 255 129038 AIS Class A Position Report: Message ID = 1; Repeat Indicator = Initial; User ID = 367058210; Longitude = -122.3565565; Latitude = 47.5729983; Position Accuracy = Low; RAIM = not in use; Time Stamp = 1; COG = 28.5 deg; SOG = 0.00 m/s; Communication State = 0x803a; AIS Transceiver information = Channel B VDL rec eption; Heading = Unknown; Rate of Turn = Unknown; Nav Status = Under way using engine; Regional Application = 0 2015-01-15-16:13:02.781 3 17 255 128267 Water Depth: SID = Unknown; Depth = Unknown; Offset = -0.001 m 2015-01-15-16:13:02.781 3 192 255 65012 Utility Phase A AC Reactive Power: Reactive Power = 0 var; Power Factor Lagging = Lagging 2015-01-15-16:13:02.781 3 192 255 65013 Utility Phase A AC Power: Real Power = 1253 W; Apparent Power = 1253 VA 2015-01-15-16:13:02.781 3 192 255 65017 Utility Average Basic AC Quantities: Line-Line AC RMS Voltage = 117 V; Line-Neutral AC RMS Voltage = 117 V; AC RMS Current = 11 A 2015-01-15-16:13:02.781 3 192 255 65005 Utility Total AC Energy: Total Energy Export = 5425 kWh; Total Energy Import = 0 kWh 2015-01-15-16:13:02.781 2 98 255 127250 Vessel Heading: SID = 123; Heading = 235.1 deg; Deviation = 0.0 deg; Variation = Unknown; Reference = Magnetic 2015-01-15-16:13:02.781 2 98 255 127251 Rate of Turn: SID = 123; Rate = -0.137653 deg/s 2015-01-15-16:13:02.781 2 130 255 130306 Wind Data: SID = 68; Wind Speed = 0.58 m/s; Wind Angle = 221.7 deg; Reference = Apparent 2015-01-15-16:13:02.781 3 192 255 65014 Utility Phase A Basic AC Quantities: Line-Line AC RMS Voltage = 117 V; Line-Neutral AC RMS Voltage = 117 V; AC RMS Current = 11 A 2015-01-15-16:13:02.781 3 192 255 65015 Utility Total AC Reactive Power: Reactive Power = 0 var; Power Factor Lagging = Lagging 2015-01-15-16:13:02.781 2 17 255 127489 Engine Parameters, Dynamic: Engine Instance = Single Engine or Dual Engine Port; Temperature = 6.85 C (44.3 F); Alternator Potential = 13.75 V; Fuel Rate = -0.1 L/h; Total Engine hours = 309600 s; Fuel Pressure = Unknown; Discrete Status 1 = -0 ,0=Check Engine,1=Over Temperature,2=Low Oil Pressure,3=Low Oil Lev el,4=Low Fuel Pressure,5=Low System Voltage,6=Low Coolant Level,7=Water Flow,8=Water In Fuel,9=Charge Indicator,10=Preheat Indicator,11=High Boost Pressure,12=Rev Limit Exceeded,13=EGR System,14=Throttle Position Sensor,15=Emergency Stop; Discrete Status 2 = -0 ,0=Warning Level 1,1=Warning Level 2,2=Power Reduction,3=Maintenance Needed,4=Engine Comm Er ror,5=Sub or Secondary Throttle,6=Neutral Start Protect,7=Engine Shutting Down; Percent Engine Load = -1; Percent Engine Torque = -1 2015-01-15-16:13:02.782 2 17 255 127245 Rudder: Instance = 0; Direction Order = Unknown; Angle Order = -0.0 deg; Position = Unknown 2015-01-15-16:13:02.782 3 192 255 65016 Utility Total AC Power: Real Power = 1253 W; Apparent Power = 1253 VA 2015-01-15-16:13:02.782 2 17 255 127488 Engine Parameters, Rapid Update: Engine Instance = Single Engine or Dual Engine Port; Engine Speed = 0.0 rpm; Engine Tilt/Trim = Unknown 2015-01-15-16:13:02.782 2 2 255 129025 Position, Rapid Update: Latitude = 47.6292158; Longitude = -122.3891621 2015-01-15-16:13:02.782 3 192 255 65012 Utility Phase A AC Reactive Power: Reactive Power = 0 var; Power Factor Lagging = Lagging 2015-01-15-16:13:02.782 3 192 255 65013 Utility Phase A AC Power: Real Power = 1253 W; Apparent Power = 1253 VA 2015-01-15-16:13:02.782 3 192 255 65017 Utility Average Basic AC Quantities: Line-Line AC RMS Voltage = 117 V; Line-Neutral AC RMS Voltage = 117 V; AC RMS Current = 11 A 2015-01-15-16:13:02.782 3 192 255 65005 Utility Total AC Energy: Total Energy Export = 5425 kWh; Total Energy Import = 0 kWh 2015-01-15-16:13:02.782 2 98 255 127250 Vessel Heading: SID = 127; Heading = 235.2 deg; Deviation = 0.0 deg; Variation = Unknown; Reference = Magnetic 2015-01-15-16:13:02.783 2 98 255 127251 Rate of Turn: SID = 127; Rate = -0.135802 deg/s 2015-01-15-16:13:02.783 2 130 255 130306 Wind Data: SID = 72; Wind Speed = 0.65 m/s; Wind Angle = 224.0 deg; Reference = Apparent 2015-01-15-16:13:02.783 3 192 255 65014 Utility Phase A Basic AC Quantities: Line-Line AC RMS Voltage = 117 V; Line-Neutral AC RMS Voltage = 117 V; AC RMS Current = 11 A 2015-01-15-16:13:02.783 5 17 255 130310 Environmental Parameters: SID = Unknown 2015-01-15-16:13:02.783 3 192 255 65015 Utility Total AC Reactive Power: Reactive Power = 0 var; Power Factor Lagging = Lagging 2015-01-15-16:13:02.783 2 17 255 127245 Rudder: Instance = 0; Direction Order = Unknown; Angle Order = -0.0 deg; Position = Unknown 2015-01-15-16:13:02.783 2 245 255 129025 Position, Rapid Update: Latitude = 47.6292119; Longitude = -122.3891034 2015-01-15-16:13:02.783 3 192 255 65016 Utility Total AC Power: Real Power = 1253 W; Apparent Power = 1253 VA 2015-01-15-16:13:02.783 2 17 255 127488 Engine Parameters, Rapid Update: Engine Instance = Single Engine or Dual Engine Port; Engine Speed = 0.0 rpm; Engine Tilt/Trim = Unknown 2015-01-15-16:13:02.783 2 245 255 129026 COG & SOG, Rapid Update: SID = 183; COG Reference = True; COG = Unknown; SOG = 0.00 m/s 2015-01-15-16:13:02.784 7 2 255 127258 Magnetic Variation: SID = 21; Source = Unknown; Variation = 16.1 deg 2015-01-15-16:13:02.784 7 4 255 127258 Magnetic Variation: SID = 20; Source = Unknown; Variation = 16.1 deg 2015-01-15-16:13:02.784 2 2 255 129025 Position, Rapid Update: Latitude = 47.6292158; Longitude = -122.3891621

You Might Also Like...

2 thoughts on “NMEA 2000 bus data and SignalK”

  1. Hi Steve:

    I’m just getting around to adding a boat server, other than RPI Openplotter, on the boat. The hardware will likely be my Mint Box 2 Pro running Linux Mint. The idea is to do something similar to you with Grafana and Influx DB. We are thinking of using the Victron and NMEA 2000 data stream to populate Influx using Signal K. I remember you had an iKommunicate on Grace but not on Redezvous. I’m have beeen thinking of ordering an iKommunicate to do the tranlastion of the NMEA 2000 to Signal K. Can you comment on your experience with iKommunicate? Would it be better to use Signal K on my Mint Box? Also is a Canable a interface between NMEA 2000 and Signal K?

    Kindest regards, Bryan

    Reply
    • Hi Bryan,

      I would use a Canable or an Actisense NGT interface on a Linux box to suck the NMEA 2000 data into SignalK over using an iKommunicate. The iKommunicate is a separate box which would require its own power, while the Canable or Actisense would run off of NMEA 2000 and USB power. In addition, I don’t have confidence that the iKommunicate NMEA 2000 interface would allow all of the traffic (PGNs) into SignalK, whereas you would have more control over the Canable/Actisense.

      The iKommunicate was a great way to get involved with SignalK, but I have seen very few updates to it since 2018, so I would worry that the version of SignalK on it could be a problem for some of the newer plugins. You may be able to update it, but I think it is a lot simpler to just have it all running on a Linux box.

      Personally, the best setup is with an Actisense NGT1-USB as it just works. The Canable gave me some problems on firmware updates, and while much cheaper, you get what you pay for. They also have support for Yacht Devices gateways and the Digital Yachts iKonvert in case you want to consider one of those. I’ve used the Yacht Devices one and it works very well with my YDWG. It also appears to see my NEMO Gateway as well, but that’s quite a bit more expensive and has a different purpose in general.

      Hope this helps!

      Reply

Leave a Comment