SignalK first look
SignalK is an astounding new project that has a ton of potential for marine electronics and connectivity. The concept is something we have needed in the industry for a long time. The idea is that the SignalK software, running on commodity or commercial hardware, will be able to consume data on a boat from any type of instruments, share it with other instruments, and share it with many, many other things – the Internet, aids to navigation, other boats, and more.
Suffice to say, it has reinvigorated my dream which I’ve posted about a few times before in Data collection from the sailboat and More on data collection. I had found the tools to extract the information from my NMEA 2000 bus, but I had not had a good way to deal with data storage and systems subscribing to the data stream itself. SignalK looked like it could change all of this!
Early in 2015 I stumbled across SignalK’s website, and started asking questions. Within a day or two, Teppo Kurki invited me to the development tool they’re using for chat, Slack, which we use at work extensively. I joined in and was immediately among who I consider to be celebrities in the boat electronics software world – Teppo Kurki, Fabian Tollenaar, Rob Huitema of Freeboard fame, Kees from the canboat project, and many more.
I am super rusty at coding, and my primary contribution was a big, busy, and strange NMEA 2000 bus on Jammy. I immediately started asking questions on how to get SignalK up and running, and within a few hours, I had my Soekris linux system and my Actisense gateway gobbling up data. I installed a front end example called sailgauge, and I was seeing data from my bus in real-time, in a web browser!
Jammy had two sections of N2K bus, one that I considered “critical” that ran 24×7 and contained things like AC, DC, GPS, and weather monitoring to ensure she was alive and connected, and not freezing to death. The second part of the bus, only energized when the rest of the instruments came on, contained things like heading sensors, depth, tanks, and much more.
Part of what I sent to the SignalK guys initially were raw canboat captures of the bus traffic. With all instruments on at dockside, not moving (therefore not generating as much data on heading and speed updates) I generated slightly less than 1MB of data (943KB to be exact). In a 10 minute period, I generated 9.4MB of data. Here’s how that breaks down for various timeframes:
1 minute – 943KB 10 minutes – 9.4MB 1 hour – 56.4MB 1 day – 1.35GB 1 month – 40.5GB 1 year – 480GB, or near half a terabyte
These are astounding numbers considering that my connection to the internet on Jammy was an LTE link, with only about 5GB of data a month available to it to use! Some of these numbers were not new to me, having tried to solve this before with my data project.
However, with SignalK, for the first time, I could gather and parse all of the data with lighter tools on a local box, represent the data real-time, and start looking at more long term analysis tools as a result.
SignalK is using technologies that I am working with at work – in particular, Node.JS and JSON.
I haven’t figured out everything about running this server quite yet, and I routinely run across PGN’s on the N2K bus that crash it, or cause problems with the data being represented, but the developers are amazingly quick to respond.
I can’t wait for more contributors, particularly in front-ends, to start participating more with SignalK – I believe it’s going to be the future of how geeks like me, and even average users, are able to interact with their boat from whatever means they want.