Hoe OpenCPN Draw (OD) en Watchdog (WD) samenwwerken


OD en WD zijn twee aparte plugins. Ze kunnen echter uitstekend met elkaar samenwerken.


In OpenCPN Draw (OD) kun je de begrenzingen van de ingetekende gebieden bepaalde kenmerken geven. Die gebiedsbegrenzingen worden in de originele, Engelstalige versie van OD, aangeduid met "Boundaries". De kenmerken van die gebiedsbegrenzingen zijn “Exclusion”, “Inclusion” en “Neither”.

In de Nederlandse versie is "Boundaries" vertaald naar "Lijn (of rechtlijnig gebied)" en zijn de kenmerken "Exclusion", "Inclusion" en "Neither" vertaald in "te ontwijken", "beperkend" en "algemeen".


In Watchdog (WD) kun je aangeven of een alarm moet reageren op:

WD gebiedsalarm kent 4 soorten alarm:

Voor de eerste twee alarmtypen gebruikt WD dezelfde kenmerken van een gebiedsbegrenzing als OD doet. Ook kijkt WD of de gebiedsbegrenzing in OD al dan niet is geactiveerd.

Het derde alarmtype kijkt alleen maar naar een specifiek gebied, op basis van de zogenaamde "GUID". GUID is de afkorting van “globally unique identifier” oftewel "wereldwijde unieke identificatie" en is een uniek nummer dat door OD is toegekend aan het gebied. Een GUID kan er bijvoorbeeld zo uitzien: 48c0ffff-ec1b-45f2-8792-4cfa6c6fffff.

Het vierde alarmtype kijkt naar een specifiek gebied om te controleren of zich daar een AIS-object binnen bevindt. In de praktijk gebruik je dat alarm om te waarschuwen als een ander schip (dat dan natuurlijk wel AIS-signalen moet uitzenden!) dat gebied binnen vaart.


Hoe communiceren OD en WD met elkaar?

WD en OD kunnen met elkaar communiceren door -in computertaal- onderling zogenaamde "JSON-berichten" uit te wisselen. JSON is de afkorting van "JavaScript Object Notation"

 

Om te kunnen bepalen of een alarm moet worden geactiveerd, heeft WD gebiedsinformatie nodig. WD vraagt daarom aan OD, via een JSON-bericht, of een bepaalde positie zich binnen een met OD gemaakt gebied bevindt. WD kan ook aan OD vragen of de gebiedsbegrenzing zich in een bepaalde staat bevindt ("geactiveerd" of "niet geactiveerd") en of het bepaalde kenmerken heeft ("te ontwijken", "beperkend" of "algemeen").

 

Naar aanleiding van het verzoek om informatie vanuit WD, gaat OD na welke punten en gebieden zich binnen de gevraagde positie bevinden. Vervolgens antwoordt OD aan WD met een bericht waarin de gegevens zijn opgenomen van het eerste gebied dat voldoet aan de gevraagde positie en de gevraagde staat en kenmerken.

 

WD gebruikt de ontvangen informatie om te bepalen of een alarm moet worden gegeven. Als het alarm wordt gegeven, kan WD daarbij ook de gegevens van het gebied tonen en de aanleiding voor het alarm (bijvoorbeeld "AIS-object gedetecteerd binnen gebiedsbegrenzing X").

 

De berichten binnen OpenCPN worden zodanig verzonden dat zij beschikbaar zijn voor zowel het hoofd-programma zelf als voor elke plugin die van die berichten gebruik wil maken. Daarbij moet elke plugin elk bericht verwerken en beantwoorden aan OpenCPN (de controller) voordat het bericht door de volgende plugin kan worden verwerkt.

 

OD-berichten kunnen worden gebruikt door elke willekeurige plugin en door OpenCPN zelf. Die OD-berichten hebben een structuur met de volgende elementen:

 

Een verzoek van WD aan OD kan er dus zo uitzien:

 

Die vraag krijgt dan een "bestemming", in dit geval “OCPN_DRAW_PI”, wanneer het verzoek aan OpenCPN (de controller) is afgerond.
Het antwoord kan er zo uitzien:

 

Bij de verzending van het antwoord vermeldt het programma de bestemming van de vrager, in dit geval “WATCHDOG_PI”. Die bestemming wordt in het berichtenverkeer opgenomen zodat elke ontvanger (elke plugin of elk onderdeel van OpenCPN) eenvoudig kan controleren of het voor hem bestemd is.

 

Deze manier van berichtenverkeer wordt gebruikt door OD en WD, maar ook door andere plugins, zoals WR (Weather-Routing) en ook bij het verzenden van AIS-berichten binnen het programma. In sommige gevallen is geen antwoord vereist (zoals bij AIS-berichten) maar in andere gevallen is het antwoord van belang voor een goed verloop van het hele proces.

 

Het maakt OD niet uit van wie een bericht komt of waarom het is verzonden. OD reageert simpelweg op vragen met wat de plugin vindt bij het inspecteren van de verschillende OD objecten.

 

WD wil alleen maar weten of het moet alarmeren Ja of Nee, en stuurt daarom verzoekjes naar OD om er achter te komen of bepaalde condities aanwezig zijn.

AIS verstrekt alleen maar informatie over elk AIS-object waar het mee te maken krijgt.

 

In het WD-scherm kan worden aangegeven met welke tussenpozen WD bij OD gegevens moet checken.
Een ander punt dat het vermelden waard is, is dat voor elke gebieds-check bij een alarm dat is gebaseerd op tijd, er tot 11 positie-berichten worden uitgewisseld tussen OD en WD.
Bij een alarm dat is gebaseerd op afstand kan dat oplopen tot 163 positie-berichten.
Het berichtenverkeer kan dus vrij intensief zijn.

 

SAMEN zijn OD en WD dus een geweldige manier om het navigeren NOG veiliger te maken.

 

Met dank aan Roel Smidt voor de vertaling van deze gecompliceerde samenwerking.