Uppdatering av navigationsutrustning, mjukvarulösning
Så, det är dags att fortsätta på dokumentationen av planerad uppdatering av elektroniken ombord på Helga, nu med planerade mjukvaror.
En not kanske, varför lägger jag energi på att skriva ner detta kan man undra?
Det tjänar faktiskt flera syften för mig själv. Det är ett sätt att dokumentera det vettiga och viktiga jag hittar när jag surfar runt på internet. Man går genom många villospår när man söker information om hur öppen källkod kan och bör konfigureras, det är inte helt lätt att komma ihåg och hitta tillbaka till det vettiga. Det är också ett sätt att dokumentera de planer jag har, vad jag vill uppnå, så jag håller riktningen i implementationen. Det är annars lätt att lägga till nice features efter hand mer av eget syfte, än det faktiska ursprungliga behovet. Slutligen blir det (förhoppningsvis) ett sätt att dokumentera vad jag gjort så jag slipper leta efter mina egna konfigurationer och lösningar när det blir dags att uppdatera systemet ytterligare och avhjälpa fel etc.
Dessutom blir det kanske så att jag kan hjälpa någon som funderar på att göra något liknande med sin båt i framtiden, om de lyckas hitta in på denna sida.
Så, jag avslutade förra inlägget med att nämna att jag planerar en lösning baserad på OpenPlotter https://openmarine.net/openplotter. Först några ord om vad det faktiskt är kanske.

OpenPlotter är, trots namnet, inte en plotter. Det är egentligen en samling av smarta mjukvaror och en installationsprogamvara som gör det enkelt att installera och konfigurera en båtelektroniklösning baserat på RaspberryPi och dess Linuxdistributioner. Man kan faktiskt ladda ner färdigkonfigurerade filer att skiva på det minneskort man stoppar i sin RaspberryPi och starta upp, inga installationer av operativsystem osv. Det ger ett grafiskt interface för att ställa in och koppla ihop den konfiguration av mjukvara och hårdvara man tänkt sig, utan att man behöver sniffa runt i Linux och editera i diverse textfiler man inte förstår och där man riskerar att göra systemet obrukbart med ett kommatecken på fel ställe. Det ger en upplevelse liknande Windows.

Vill man går det faktiskt att sätta ihop en hel Plotter med de program OpenPlotter samlar och de tutorials man hittar på sidan, som synes på denna bild där en 7″ touchskärm har kopplats till en RaspberryPi. Det kanske blir en sådan lösning i framtiden, men för nu gör vår 9″ Axiom det jobbet.
Som jag skrev i förra inlägget var de initiala behoven två:
- Övervaka, kurs, fart, vind, autopilot, AIS och position
- Ändra inställningar av autopilot

För att göra detta behöver man få information visad för sig. Bläddrar man runt bland funktionerna och pluginsen som finns i det mer eller oändliga bibliotek man får tillgång till genom OpenPlotter så hittar man snabbt pluginet (till SignalK) KIP https://github.com/mxtommy/Kip vilket är en grafisk display av den data man väljer att visa via html (det medium du nu använder, en internetsida). Väjer man att titta på datan med en mobil enhet (android/ios) kan man spara ner genvägen på hemskärmen så att upplevelsen blir densamma som en dedikerad app för funktionen.

Det går att lägga in flera vyer som man bläddrar mellan med sidosvep vilket faktisk alltihop ger det jag listade ovan med lite ytterligare integrationer av plugins, i detta fall Freeboard-SK https://github.com/SignalK/freeboard-sk som ger AIS-info och -varning, ankarvakt, varning för grunt vatten och säkert något mer. Detta bygger på att man har ett koppel ytterligare plugin aktiverade, bara att läsa och göra. Sjökort i servern finns att få för hela världen via OpenCPN, eller, de går att hitta, om jag förstår det rätt.

Till och med mjukvarukontroll av autopilot verkar gå att få, via SignalK-Autopilot https://github.com/SignalK/signalk-autopilot/tree/master, även om dokumentationen är något luddig här. Dels så kan jag inte utläsa om pluginet är färdigutvecklat, eller om jag behöver ge mig på att göra hemsidan som skickar kommandon enligt specifikationen. Ofta är hjälpavsnitten dåligt gjorda när det gäller öppen källkod, utvecklaren har ju löst sitt problem. Dels är jag inte helt säker på att autopiloten accepterar kommandon från STNG via konvertern till ST1, även om det borde vara så. Detta ska bli intressant att se om det fungerar.

Jaha, men hur går detta till, vilken magi ligger bakom, och hur kommer man åt denna information?
Kärnan i OpenPlotter är serverprogramvaran SignalK https://signalk.org/index.html vilken fungerar som ett informationsnav i systemet. Programvaran läser in sensor- och instrumentdatan från båtens datanätverk (STNG/ST1/NMEA 0183/NMEA 2000, vilka alla egentligen är olika generationer av CAN-nätverk, samma typ av nätverk som styrt funktionerna i bilar sedan 90-talet) samt översätter dem, och gör dem tillgängliga på tcp-ip-nätverket (båtens LAN, eller för den delen Wi-Fi). Från denna server kan webapplikationer hämta den information den är intresserad av, och det går också att skicka information från webapplikationerna för översättning och vidare transport ut på CAN i båten.
Med SignalK i båten får man alltså en brygga mellan de olika nätverkstyperna CAN och TCP-IP, och de klienter (användarenheter, den pryl som visar information för personerna ombord) man behöver endast kunna läsa ett webinterface för att få ut informationen vi önskar. Detta givet att man har en server i systemet där de programvaror (plugins) som utför beräkningar och skickar kommandon kan husera. För dessa applikationer är behoven av minne och processorkraft små, vilket gör att allt kan finnas i samma dator, och alla enheter (datorer, plattor och telefoner) som finns ombord och är anslutna till båtens Wi-Fi kan vara en del av navigationssystemet om de så önskar.
Så, med de enheter vi redan bär med oss kan vi alltså göra samma sak som Raymarine vill att vi betalar massvis av 1000-lappar för om vi köper deras enheter? Japp, exakt så!
Detta går att göra snyggt hårdvarumässigt också, men det är ett senare inlägg.
Så, redan här är vi hemma med de ursprungliga behoven!
Och, det finns mer att få.

Helga kom med Navionics sjökort för hela Östersjön, helt ok och bra kort får jag säga. Med Navionics lösning innebär det att jag nu har ett abonnemang hos dem för sjökortsuppdateringar, vilket också ger mig sjökortet på mina mobila enheter (jag använder både telefon och patta som backup och för kontroll av sjökort när man inte är vid styrplatsen). De mobila enheterna ansluts till Axiom-plottern för att uppdatera sjökorten där (av någon outgrundlig anledning tillåter inte Raymarine att plottern hämtar ner nya sjökort direkt). Nåväl, med pluginet UDP-NMEA till SignalK https://github.com/SignalK/udp-nmea-plugin blir det möjligt att koppla vår server till Navionics i de mobila enheterna genom samma port.

Med kopplingen mellan vår server och Navionics i de mobila enheterna får Navionics tillgång till båtens system av sensorer med GPS, djup, kurs osv. Även AIS-information ska propagera vidare, så länge som all info följer NMEA 0183 formatet. kort sagt, Navionics i mobilen får samma (/liknande?) funktioner som Navionics i plottern. Det jag inte sett ännu är seglingsinformation av typen polardiagram och layines (hjälp för planering av seglingen, baserat på Helgas segelprestanda), vilka finns i OpenCPN (som också finns i en Android/iOS version) i OpenPlotter.
SignalK har också flera separata plugin för AIS-information, utvecklat för att koppla båten till publika system som MarineTraffic https://www.marinetraffic.com/ och AISCatcher https://aiscatcher.org/. AIS-forwarder https://github.com/hkapanen/ais-forwarder nämns för att ansluta till MarineTraffic, där data ska gå att hämta hem, samt för anslutning till Navionics. AIS-Catcher https://github.com/jvde-github/AIS-catcher verkar vara ett mer omfattande plugin för att styra en mjukvarudefinierad radio (för att fånga AIS-info direkt) och för att dela den med andra användare. gemensamt för dessa plugin är att det blir möjligt att hämta (alla kända) AIS-mål bortom horisonten, om man har internetanslutning. Det ska bli spännande att experimentera med för att få till en rimlig och bra uppsättning.

Utökad loggning då?
Med pluginet Semi-Automatic electronic logbook för SignalK https://github.com/meri-imperiumi/signalk-logbook kan servern tjäna som vår logg ombord, och loggningen kan förhoppningsvis bli betydligt bättre än den är nu, och innehålla faktisk information om position, fart och segelsättning (med pluginet Sails configuration and inventory https://www.npmjs.com/package/@signalk/sailsconfiguration). Här har vi ett blogginlägg av utvecklaren där han beskriver det ytterligare, https://bergie.iki.fi/blog/electronic-logbook/.

Med lite uppladdningsmagi går det att få riktiga spår publicerade på den utökade loggen (här på sidan alltså), rimligen exporterade automagiskt via ett Cron-job ett visst klockslag varje natt, vid uppstart, samt vid någon trigger som borde gå att koda in via SignalK (kanske?). Länk till skaparens blogg och logg, https://lille-oe.de/ (riktigt snygg!) samt den data han exporterar https://github.com/meri-imperiumi/log/tree/main/_data/logbook.
Ok, så långt så gott, och för tillfället räcker det nog med navigationsprestanda. Som jag skrivit vid något tillfälle får man även de ”traditionella plotter-funktionerna” med programvaran OpenCPN vilken visar sjökort, tar hem väder, beräknar rutter baserat på polardiagram, styr autopilot osv. Eftersom det finns en Axiom som fungerar gott och vi än så länge endast seglar inom Östersjön känns det som att en separat navigationsplats där allt är integrerat ännu inte behövs. Något för framtida uppdateringar av systemet kanske.
Det intressanta som händer när man lägger till denna typ av serverfunktionalitet är att man även kan köra andra servrar på dem för att administrera underhållningen ombord, om man lägger till tillräckligt med lagringsutrymme. Det blir t.ex. möjligt att köra en Plex-server https://www.plex.tv/ för filmer och serier samt en Spotify-server https://github.com/Spotifyd/spotifyd vilket gör att servern kan agera musikcentral och som den enhet som handhållna enheter spelar upp sin musik på, givet att servern har förstärkare och högtalare kopplad till sig. Kom ihåg att ladda hem ordentligt med musik, poddar och böcker i appen i den handhållna enheten bara!
Ok, så långt med mjukvaran, hårdvara blir ett kommande inlägg.