This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
NMEA 2000 data to SignalK via UDP
#1
Hi,

I am working on the network and electronics for a new boat.  I am looking at a basic configuration that includes a NMEA 2000 network, an AIRMAR depth transducer, and a Vesper Cortex. 

The Vesper Cortext can provide GPS data (lat, long, SOG, COG), and AIS information about near AIS targets.  The Cortex also has the capability to send it's data acros the N2k network to future MFDs. 

And the Cortex is a WiFi hub, and has the ability to broadcast all of its sensor data as well as data from the network out over UDP.  With an iPad running AquaMap, this data will be available on AquaMap.  Other iPad or Mac/PC apps may be able to read this data, but I haven't tested them yet.

I also have an Intel NUC with SignalK, InfluxDB and Grafana running, similar to Seabits.com's configuration.  What I would like to do is configure the SignalK system to read NMEA 2000 from the Cortex over Wifi UDP. 

The web interface does not allow this combination.  NMEA 0183 works with UDP, but NMEA 2000 appears to require a serial source like Actisense.  I tried to create a UDP path with NMEA 0183, and then changed the type from NMEA0183 to NMEA2000, but that generates an error:  unknown NMEA2000 type udp at Object.nmea2000input [as NMEA2000]

Here is the section of the settings.json file with my change:
   {
      "pipeElements": [
        {
          "type": "providers/simple",
          "options": {
            "logging": false,
            "type": "NMEA2000",
            "subOptions": {
              "validateChecksum": false,
              "type": "udp",
              "port": "39150"
            }
          }
        }
      ],
      "id": "testUDP",
      "enabled": true
    }

Would very much appreciate any insights or ideas.

Gary
Reply
#2
First of all: when asking a question about a commercial product it would help a lot if you include pointers to the product's online documentation or product info.

Quick googling does not find anything about Cortex and UDP, just TCP.

On to the real answer: there is no one established method for NMEA2000 over TCP, UDP or serial connections. Manufacturers use their own proprietary formats and there are several ways ($PCDIN, $MXPGN, !PDGY) to encapsulate NMEA2000 data in a NMEA0183 network/serial stream.

My guess is that Cortex uses one of these to broadcast all of its sensor data as well as data from the network.

Signal K server can decode the N2K data in a NMEA0183 stream, but since the data is technically NMEA 0183 you'll need to create the connection as a NMEA 0183 connection. A bit confusing.

FYI for the time being SK does not support NMEA 2000 2 way communication over UDP, meaning you won't be able to send anything to your N2K network from SK with that.
Reply
#3
My mistake.  I don't find the Vesper documentation easy to navigate, but I did finally find the page about connecting third-party programs to Cortex over WiFi.  ( https://support.garmin.com/en-US/marine/...textPage=1 )

And I was incorrect in thinking it was UDP.  It turns out that Vesper only supports TCP connections.  I configured SignalK to point to the Vesper's IP address and port (39150) using TCP, and it's working fine.

Your comments pointed me in the right direction.  Thanks for your help.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)