Wie het artikel over NMEA 2000 heeft gelezen, weet dat deze bus aan boord vol berichten zit: toerental, accuspanning, positie, alles komt voorbij. Maar probeer die berichten eens op je telefoon te krijgen. Of in een browser, of in een grafiek van de afgelopen maand. Dan blijkt dat marine-elektronica een eigen dialect spreekt, ontworpen voor devices die onderling praten, niet voor de wereld daarbuiten.
Dat gat vult Signal K. Op Cornelis draait het op de Raspberry Pi, en het is de reden dat we onze accu’s vanaf de bank thuis kunnen bekijken.
Een seinvlag als naam
In het internationale seinstelsel betekent de vlag K: “ik wil met u communiceren.” Die naam kozen de bedenkers niet zomaar. Signal K begon in een GitHub-issue, waar vijf ontwikkelaars elkaar vonden in dezelfde frustratie: ze bouwden alle vijf iets moois voor hun eigen boot, en geen van die projecten kon met de andere praten. Van de marine-industrie hoefden ze weinig te verwachten: protocollen zaten achter licenties en hardware was duur. Aan internet had daar nog niemand gedacht.
Dus schreven ze zelf een standaard: open en gratis, bovenop de techniek waar het hele web al draait. Geen bedrijfsplan, geen verdienmodel. Gewoon watersporters die vonden dat hun bootdata van henzelf was.
Drie dingen in één
Signal K is in de praktijk drie dingen tegelijk. Om te beginnen is het een datastandaard: een afgesproken vorm waarin scheepsdata wordt opgeschreven, leesbaar voor elk programma dat JSON verstaat, en dat zijn ze tegenwoordig allemaal. Daarnaast is het een server die aan boord draait en alle databronnen op één punt samenbrengt. En eromheen is een ecosysteem gegroeid: ruim vijfhonderd plugins en zo’n honderdvijftig webapps, geschreven door de community, voor alles van ankeralarm tot verbruiksgrafiek.

Die server is het hart van het geheel. Bij ons draait hij op de Raspberry Pi 5, maar het kan op elke computer die aan boord past; de software wordt zo’n twaalfduizend keer per maand geïnstalleerd.
Leesbare adressen in plaats van nummers
Op de NMEA-bus heet accuspanning PGN 127508. In Signal K heet dezelfde waarde electrical.batteries.0.voltage. Een adres dat je kunt lezen zonder tabel ernaast. Alle data van de boot vormt samen één boomstructuur: onder navigation vind je positie en snelheid, onder electrical de accu’s en de lader, onder environment de temperatuur in de accukist.
Elk adres draagt meer dan alleen een getal. Er zit een tijdstempel bij, en een bron: welk apparaat dit heeft gemeld, via welke route. Dat klinkt als boekhouding, maar het wordt belangrijk zodra meerdere apparaten hetzelfde beweren. Daarover zo meer.
Omdat de server met gewone web-API’s werkt, kan alles met een browser direct meepraten. Een dashboard op de telefoon is dan een gewone webpagina, en wie het systeem ergens aan wil koppelen, doet dat met een webverzoek.
Meerdere bronnen, één waarheid
In het NMEA-artikel beschreven we hoe twee apparaten allebei accudata op de bus zetten, en het scherm zelf mocht kiezen. Signal K maakt datzelfde verschijnsel zichtbaar tot op de komma. Toen we bij ons in de Data Browser keken, bleek op één accu-adres data van víer bronnen binnen te komen: de spanning kwam rechtstreeks van de bus, maar ook nog eens via de Victron Cerbo, die dezelfde meting doorgeeft langs zijn eigen (MQTT) route. En tussen die vier zat ook nog de 12 volt-shunt, die zijn waarden in het beeld van het 48-volt-pakket lekte.
Normaal merk je daar niets van: je ziet één getal en hoopt dat het de goede is. In Signal K zie je per waarde wie hem meldt, en stel je onder Data → Priorities in welke bron wint. Sindsdien is batteries.0 bij ons gewoon het grote MG Energy Systems-accupakket, wat er verder ook meepraat.
Hoe het op Cornelis draait
Onze server draait binnen OpenPlotter op de Raspberry Pi, en er komt inmiddels data binnen langs vier wegen. De NMEA 2000-bus levert motor- en accudata via de MacArthur HAT. De Victron-apparatuur meldt zich via het netwerk, met MQTT. AIS van andere schepen komt over 4G binnen: onze eigen ontvanger thuis aan de wal stuurt de NMEA 0183-berichten via TCP door. In de accukist meet een klein sensortje temperatuur en vocht; dat praat, net als de traagheidssensor (IMU), via I2C. En een Victron Orion-Tr-lader lezen we via bluetooth (BLE) uit.

Al die stromen komen samen in die ene boomstructuur, en de Data Browser van de server laat per waarde zien wie hem meldt, via welke route, en hoe vers de meting is. Wat er niet staat, bestaat niet: dezelfde controle die we in het NMEA-artikel beschreven, maar dan voor de hele boot.
Wat je ermee kunt
Voor ons is de server vooral een fundament. Het KIP-dashboard op de laptop of iPad leest eruit. Freeboard-SK tekent er een kaart mee, met de AIS-doelen erop. Node-RED automatiseert en berekent live nieuwe waarden. En een plugin schrijft alles weg naar een database, lokaal én remote, zodat we terug kunnen kijken; daarover meer in een later artikel.
Het ecosysteem eromheen blijft groeien. In de recente communityposts koppelt iemand zijn boot zelfs aan een AI-assistent. Wie het wil zien zonder iets te installeren: er staat een demo-server online met echte bootdata.
Gebouwd door vrijwilligers
Achter dit alles zit geen bedrijf. Signal K heeft niet eens een rechtspersoon: alleen vrijwilligers die het in hun vrije tijd bouwen en onderhouden, en donaties die de serverkosten dekken. De code is open source onder de Apache-licentie. Grootste geldschieter is trouwens Victron: de fabrikant waarvan bij ons de halve accukist vol hangt, steunt de open standaard die zijn eigen data toegankelijk maakt.
Er zit ook een Nederlands randje aan. In het kernteam zitten Fabian Tollenaar en Kees Verruijt. Die laatste schreef canboat, het naslagwerk waarmee de wereld NMEA 2000-berichten leert lezen.
Wat het benaderbaar maakt: de mensen die de software schreven, beantwoorden zelf de vragen. Wie vastloopt of gewoon wil meekijken, vindt ze op de community-kanalen van Signal K, op het OpenMarine-forum (voor OpenPlotter en de MacArthur HAT) en op open-boat-projects.org, een verzameling doe-het-zelf-bootprojecten die precies deze bouwstenen gebruikt.
Zelf beginnen
De makkelijkste instap is dezelfde als de onze: een Raspberry Pi met OpenPlotter, waar de Signal K-server standaard in zit. Hoe wij dat aanpakten staat in het artikel over de Pi. Maar het kan kleiner: de server draait op vrijwel elke computer, en een NMEA 2000-netwerk is geen voorwaarde. Wie alleen een oude NMEA 0183-GPS heeft, of zelfs maar een losse sensor aan een Pi, kan er meteen mee aan de slag.
Net als het NMEA-artikel is dit een stuk om naar terug te bladeren. De komende artikelen, over dashboards en over de data van een vaarseizoen, leunen allemaal op Signal K. Vanaf nu verwijzen we gewoon hierheen.







