Weer een stap verder in de koppeling SPD - Signal K
Bij de beschrijving hier was Signal K al geconfigureerd en ontvangt NMEA data.
De verbinding van NMEA van Signal K naar SPD loopt hier via een virtuele seriele poort. Voor de seriele poort op de pi heb ik het volgende commando gebruikt (op windows zou je hier op een andere manier een seriele poort moeten maken):
socat -d -d PTY,raw,echo=0,link=/dev/ttySPD PTY,raw,echo=0,link=/dev/ttySPDin
Voor nu schrijft Signal K naar /dev/ttySPD en leest SPD de data in vanuit /dev/ttySPDin. Vanwege configuratie van Signal K en SPD in verschillende dockers heeft verbinding via netwerk voorkeur, dit moet ik in Signal K nog uitzoeken. SPD kan alleen seriele poort uitlezen, dus daar blijft socat commando voorlopig nodig.
In Signal K moet je bepalen welke NMEA data je naar de seriele poort voor SPD schrijft. Omdat SPD ook weer data terug schrijft, krijg je mogelijk een loop. Ik ga ik er daarvoor vanuit dat van de originele NMEA data alleen de specifieke data die SPD nodig heeft naar SPD geschreven moet worden.
Installeer hiervoor de nmea0183-to-nmea0183 plugin in Signal K. Input event name nmea0183 is hier de originele nmea dataset. De aangevinkte nmea0183 sentences komen in de nme0183spd dataset die we voor de SPD seriele poort gebruiken.
Vink de NMEA sentences aan die SPD gebruikt: DBK, DBT, DBT, DPT, HDG, HDM, HDT, MWV, RMA, RMB, RMC, ROT, VHW, VWR, XDR
Maak vervolgens in Signal K een data connectie aan. Dit is de NMEA 0183 output die Signal K aan SPD gaat leveren. /dev/ttySPD is hier de virtuele seriele poort waar Signal K naar schrijft. De gefilterde nmea0183spd dataset wordt met deze instellingen naar de seriele poort geschreven.
De data die via /dev/ttySPD op de seriele poort /dev/ttySPDin terecht komt, moet door SPD ingelezen worden. Hiervoor is in de boatspecifics file de seriele poort aangepast. SPD staat in 'live' mode (boatspecifics) en start automatisch op met de juiste parameters zonder vragen (aanpassing in processlist.txt) voor de Gotcha! SPD kan door middel van VNC eventueel in een webbrowser bekeken worden.
Na de berekeningen in SPD, moeten de uitkomsten naar Signal K. Dit gaat met behulp van de websocket output omdat hier alle info in zit en er aan de signal k kant geen trucs gebruikt hoeven te worden om 'custom' NMEA string in te lezen. De data stuurt SPD als 1 bericht uit via een websocket (aanpassing in sendoverwifi.txt). Onderstaande flow in de Node red plugin in Signal K vangt die data vervolgens weer als een json bericht op.
De kern van de node red flow is een splitsing van het bericht in een array van losse berichten per variabele. In de flow worden alle variabelen daarna los verwerkt (oa omgezet naar standaard Signal K eenheden). Door de waarden en meta data aan Signal K aan te leveren, kan in applicaties die verbinding met Signal K kunnen maken, vervolgens op een makkelijke manier een keuze gemaakt worden welke waarden worden getoond. De flow is eventueel het aanknopingspunt om andere specifieke NMEA vertalingen te doen.