The code for the server is on GitHub and there is a lively discussion of data formats occurring on another project. There is even a live data stream to peruse. I have a basic version of the PGN definition API up and running here.

OpenSeas Project Reboot

I first had this idea a little over four years ago! Posted a couple of entries and then that was it. Recently, I've been getting back in to instrument system design and this time around I've actually got some code to show for it.

There are some design docs on GitHub here and a simple demo of the system here. I am focusing mostly on NMEA 2000 systems this time since I don't actually have anything left on the boat which talks NMEA 0183. As an aside, the boat (Samurai II) has a website too. Check out to see a little bit about that.

The gist of the new system is that it is an HTML5 frontend using <canvas>es for gauges and a user-configurable layout. The goal is sort of a clone of Maretron's N2KView with some (I hope) improvements. All code is GPLv2 licensed although the web portions may change to AGPL. The backend is written in Go and reads data from a NMEA 2000 bus using the Actisense NGT-1. The portion of the server which communicates with the N2k bus is based on canboat by Kees Verruijt who did all of the hard work reverse engineering the output of the NGT-1.

There are a lot of things still to do. An abbreviated TODO:

  • The program which reads the N2k data needs to talk to the program which writes data to the web app
  • The fields which get sent to the web app need to be configurable
  • The data collected from the N2k bus needs to be stored somewhere. I have a few ideas here, but nothing I'm happy with yet
  • Code needs to be ported to ARM. Shouldn't be too difficult now that CGo works cross platform
  • Apache should be removed from the stack I think. It is just serving a few static assets and proxying the WebSockets data to the Pyxis server
  • etc.


Open alternative to NMEA protocols for communications between navigational tools for mariners.