Schepen volgen én weten wat ze aan het doen zijn
- Sector
- Binnenvaart en zeevaart
- Periode
- 2016–heden
- Rol
- Architect en hoofdontwikkelaar
- Stack
- Ruby on Rails · PostgreSQL · PostGIS · AIS · Binaire TCP-protocollen
Situatie
Een uitbater met schepen, vrachtwagens en wagens in het veld kon "waar is het" beantwoorden en zo goed als niets anders. De positie kwam van welke tracker er ook gemonteerd was, en verschillende voertuigen hadden hardware uit verschillende tijdperken, elk met een eigen protocol.
Positie alleen blijkt een mager antwoord. Weten dat een schip midden op de rivier ligt, zegt niet of het vaart of stilligt, hoeveel brandstof het onderweg verbruikt heeft, of er een generator de hele nacht gedraaid heeft, of de bemanning aan boord de bemanning is die er hoort te zijn. Die informatie bestond wel — aan boord, in de systemen daar — en bleef daar.
Wat ik gebouwd heb
Eén kaart, één vloot. Schepen, vrachtwagens en wagens zijn allemaal gevolgde objecten op één kaart met lagen erover, live en historisch. Een dispatcher spoelt terug door een dag en ziet de route opnieuw afgelegd worden in plaats van coördinaten te lezen.
Gegevens van aan boord, naast de positie. Wat doorgestuurd wordt, blijft niet beperkt tot een positiebepaling. Metingen uit de systemen aan boord — toestand van motor en machines, tank- en brandstofpeilen, draaiuren, tellers eigen aan de uitrusting — reizen mee met het positiebericht en worden erbij bewaard. Het resultaat is een spoor waar je vragen aan kan stellen: niet alleen waar het schip gevaren heeft, maar wat het onderweg aan het doen was, en wat dat aan brandstof gekost heeft.
Een ontvanger die spreekt wat er gemonteerd staat. Trackers verbinden over TCP, en ze zijn het nergens over eens. Verschillende spreken eigen binaire formaten; andere komen binnen als AIS-stromen of als klantspecifieke feeds. Een aparte ontvangerdienst bevat één handler per protocol, decodeert de binaire frames veld per veld, en herkent zelf welk protocol een verbindend toestel gebruikt, in plaats van een poort per leverancier te vragen. Een andere tracker monteren betekent een handler toevoegen, niet het systeem herwerken — en dat telt wanneer hardware over tien jaar stuk per stuk vervangen wordt.
Zones die alarmen geven. Zones worden getekend als echte geometrie en in PostGIS bijgehouden, zodat "ligt dit schip binnen die zone" een ruimtelijke query is en geen benadering. Een zone binnenvaren of verlaten geeft een alarm bij de mensen die met dat schip bezig zijn.
Wie er aan boord is. Bemanning en aannemers melden zich aan boord aan met badges en contactsleutels, tegenover een registratie van welke machtigingen iemand heeft. Het vlootoverzicht beantwoordt "wie zit er nu op dat schip, en mag die daar zijn" — een vraag die belangrijker blijkt dan vlootsoftware doorgaans veronderstelt.
Resultaat
De uitbater ging van een positieweergave naar een operationeel dossier. Brandstof- en machinegegevens naast de positie betekenen dat verbruik aan echte vaarten toegewezen kan worden, en zonealarmen betekenen dat uitzonderingen opduiken in plaats van achteraf opgemerkt te worden.
De les die ik hier telkens uit meeneem: het moeilijke was nooit de kaart. Het was aanvaarden dat een vloot altijd een museum van trackerhardware zal zijn, en de inname zo bouwen dat een nieuw toestel een kleine, afgezonderde toevoeging is.