Welkom  

   

Mijn Menu  

   

What's Up  

za mei 18 @12:00AM
ZF Pinkstertrip 2024
   

Wedstrijd  

Geen evenementen
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Welkom, Gasten
De mogelijkheden om zelf te knutselen/ontwikkelen met de nieuwste generatie mini-PC's is eindeloos. Omdat er diverse fraaie initiatieven lopen die best wat eigen plek behoeven, bundelen we onze kennis in deze categorie.

Onderwerp: Simarine Pico -> SignalK python script

Simarine Pico -> SignalK python script 02 jan 2020 08:19 #1114345

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Hoi,

Aangezien de Simarine Pico NMEA2000 interface er nog niet is en omdat de data toegankelijk leek vanwege de iPhone app, ben ik gaan kijken of ik het niet zelf kon lezen vanaf de RPi om het daarna via SignalK op de N2K bus te zetten.

Het begin is er: github.com/htool/Pico2SignalK

Er zijn wel een aantal dingen die beter moeten:
1. De CRC check snap ik nog niet. Daarom moet ik de CRCs van een capture gebruiken.
2. Ik heb nog maar 1 sensor (temperatuur) eraan hangen, dus nu doet ie:
1. PICO INTERNAL - spanningsmeting op de PICO
2. Barometer - luchtdruk in Pa
3. Temperatuur in kajuit
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 08:26 #1114349

Da’s een leuk projectje, ga ik even volgen.
Hoe heb je het hardware technisch aan elkaar geknoopt?
aka jumpinjack
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 08:30 #1114353

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Met een Pican2 boardje op de Raspberry Pi.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 08:45 #1114358

Leuk!

Is er een overzicht welke PGN’s Signal-K ondersteunt in N2K schrijvende modus; hoe de aanmelding verloopt en welke ISO requests ondersteund worden?

Hier blijken in de praktijk verschillen te bestaan tussen verschillende N2K netwerken: wat op mijn netwerk goed werkt, werkt niet overal... Ben benieuwd of DAT stuk in Signal-K goed werkt/breed getest is.
Laatst bewerkt: 02 jan 2020 08:47 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 08:47 #1114360

  • brambo
  • brambo's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 7275
OpenPlotter (beta 2.0) via de Can Bus instellingen ondersteund standaard een aantal Can bus boardjes en adapters. Zoals NGT-1, Canable boardje en MCP2515.

Dan invoer daarna koppelen aan SignalK en het werkt.
Laatst bewerkt: 02 jan 2020 08:52 door brambo.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:17 #1114375

Vanaf de sicom poort op pican2 en dan met een andere pican2 naar nmea2k?
aka jumpinjack
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:19 #1114376

Brambo, het gaat hier om uitvoer niet invoer. Dat het lezen van N2K werkt is bekend en relatief eenvoudig.

Bij schrijven komt er (veel) meer bij kijken dan alleen de PGN’s met op de plotter of MFD weer te geven data op de bus te plempen. Ik ben benieuwd hoe (of...) Signal-K het “overhead verkeer” afhandelt, dus de ISO requests waarmee de plotter of MFD’s het virtuele Signal-K apparaat zullen ondervragen. Zolang dit niet of niet goed gebeurt zal een plotter of MFD de (wel op de bus aanwezige data) niet weergeven.

Vandaar mijn vraag: op welke PGN’s zal Signal-K aktief reageren? Wanneer dit hoed en breed getest is, kan ik hier in mijn projectje gebruik van maken.

Ben net even aan het zoeken geweest: vind slechts cases waar het dmv een N2K debugger mogelijk is de door Signal-K verzonden data te terug te lezen. Dat is niet de door TS (en mij) gewenste netwerk-integratie.

Kun jij dat overzicht geven? Niet elk netwerk reageert hetzelfde (been there...). Wat op mijn N2K netwerk goed werkt, werkt bij anderen aan boord niet of niet volledig. Dit ISO verkeer netjes afhandelen is essentieel voor een functionele integratie. Zou mooi zijn als Signal-K hier als een (aan de N2K specs voldoend) gateway kan dienen.
Laatst bewerkt: 02 jan 2020 09:31 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:23 #1114378

Jumpinjack schreef :
Vanaf de sicom poort op pican2 en dan met een andere pican2 naar nmea2k?

TS wil Modbus (dat gaat over RS485 en tegenwoordig ook over TCP/IP) lezen en dit via Signal-K en het PiCAN2 boardje beschikbaar maken op zijn N2K netwerk lees ik op github.
Laatst bewerkt: 02 jan 2020 09:27 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:39 #1114385

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Nee, de Pico stuurt UDP broadcast over de wifi. Die vang je op door gewoon te luisteren op de juiste UDP port. Je kunt dan met tcp connecten op de Pico om de namen van de sensors te lezen.
Het script maakt er dan output van die SignalK leest (zie github voor SignalK config). SignalK zet het dan via het Pican2 board op de N2K bus.

@Nachtvlinder: je kunt alles zien wat SignalK schrijft op de bus via candump.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:42 #1114386

Klopt, via candump of andere debugger zichtbaar. Maar ook op je mfd’s en plotters?

Hier lees je wat je waarschijnlijk tegen gaat komen (tenzij Signal-K deze overhead autonoom kan afhandelen - waar ik op hoop)!

zeilersforum.nl/index.php/foru...box?start=125#827666
Laatst bewerkt: 02 jan 2020 09:44 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:45 #1114390

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Dat is precies wat SignalK doet. Je ziet hier de ISO request gaan die vraagt om product identification:
2020-01-02-09:41:17.294 6 0 255 59904 ISO Request: PGN = 126996

Als eerste zie je m'n Seatalk -> SeatalkNG converter antwoorden:
2020-01-02-09:41:17.312 6 115 255 126996 Product Information: NMEA 2000 Version = 1300; Product Code = 16763; Model ID = E22158; Software Version Code = 2.0316-08-16 10:48:47; Model Version = SeaTalk-STNG-Converter; Model Serial Code = 0490855; Certification Level = 1; Load Equivalency = 1

Dan SignalK:
2020-01-02-09:41:17.321 3 7 255 126996 Product Information: NMEA 2000 Version = 1300; Product Code = 667; Model ID = Signal K; Software Version Code = 1.0; Model Version = canbusjs; Model Serial Code = 123456; Certification Level = 1; Load Equivalency = Unknown

En dan de B&G Triton2:
2020-01-02-09:41:17.369 6 0 255 126996 Product Information: NMEA 2000 Version = 2100; Product Code = 1964; Model ID = Triton2 Instrument; Software Version Code = 01000_E 1.0.54.3.21; Model Version = ; Model Serial Code = 004464#; Certification Level = 1; Load Equivalency = 4

SignalK maakt zich als volgt bekend op de bus:
const addressClaim = {
pgn: 60928,
dst: 255,
"Unique Number": 1263,
"Manufacturer Code": 667, // Made up
"Device Function": 130, // PC gateway
"Device Class": 25, // Inter/Intranetwork Device
"Device Instance Lower": 0,
"Device Instance Upper": 0,
"System Instance": 0,
"Industry Group": 4, // Marine
"Reserved1": 1,
"Reserved2": 2
}
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:51 #1114394

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Dat wordt allemaal door SignalK gedaan. Op de Triton2 zie ik de info die SignalK op de bus zet.
Ik moet voor de laatste dingen nog even verifieren, maar heb geen reden te twijfelen dat bijv tank levels, battery levels, barometer en temperatuur probleemloos op de andere apparaten wordt gelezen.

Ik ben ook met iets anders bezig: een Simrad AP44 na-apen en dan de Raymarine autopilot info om te zetten naar de AP44 om zo de Triton2 te laten denken dat die op de bus zit en zo de autopilot page toegankelijk te maken.
Daarvoor zal ik wel zelf de address claim en product code afhandeling moeten doen.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 09:52 #1114395

Super! Werk aan de winkel, ook voor mij ;)

Succes en houd ons op de hoogte met je project!
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 10:03 #1114398

  • brambo
  • brambo's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 7275
Kwam dit bericht nog tegen:

Even the NMEA consortium has somehow accepted this fact and officially supports SignalK through certified N2K-gateways.

www.nmea.org/Assets/nmea%20sig...0k%20recognition.pdf

I talked to some engineering guys of B&G and they told me it might be possible to see an SK gateway in their Zeus MFDs or H5000 cpus in the future. (in addition to their NMEA0183 translation). There are already commercial solutions available like iKommunikate. (and of course quote a lot of homebrew solutions like RP with PICAN2, Actisense NGT, ..)

Volop beweging met dit open-bron project.

Bram
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 10:41 #1114416

Zoals ik al eerder aangaf zijn er echter niet zo heel veel zinnen die vertaald worden.
Of zijn er meer die niet in dit lijstje zijn vermeld?
Ging er van uit dat dit alles was, of is er ook een lijst met Signalk to N2K?

Zeilprutser schreef :
Ook de de NMEA0183 vertalingen naar NMEA2000 vallen me nog tegen die zijn nu beperkt tot:
AIS (129794, 129038, 129041)
Battery (127506 & 127508)
COG & SOG (129026)
Depth (128267)
Temperature, exhaust (130312)
Engine Parameters (127489,127488)
Location (129025,129029)
Heading (127250)
Speed (128259)
System Time (126992)
Tank Levels (127505)
Outside Temperature (130312)
Inside Temperature (130312)
Engine Room Temperature (130312)
Refridgerator Temperature (130312)
Wind (130306)

De bewuste plotters moeten natuurlijk wel de gewenste PGN's kunnen weergeven, dat is vaak ook niet zo!
Onno Harders eigenaar van
www.boatcontroller.nl en www.pcnautic.nl
Prutsen is de meest onderschatte fase van een creatief proces
Laatst bewerkt: 02 jan 2020 10:43 door Zeilprutser.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 11:37 #1114436

Maar ook worden dus een aantal ISO-PGN's autonoom beantwoord. Ik ben benieuwd welke. In elk geval wordt een ISO request naar Product Information ondersteund en wordt er een ISO Address Claim verzonden. Da's al heel mooi want je hoeft die niet meer zelf af te handelen.

OpenCPN heeft een performance plug-in. Zou je die informatie (de actuele performance) kunnen mappen naar (bv) Battery Current? Dat mappen zou dan een feature van die plug-in moeten worden, of kun je dit zelf scripten?

Excuus als dit niet relevant is in dit draadje - dacht even een performance functie...
Laatst bewerkt: 02 jan 2020 11:39 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 11:41 #1114438

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Nachtvlinder: dat is vrij eenvoudig. Als je een script hebt dat de data heeft dan kun je het in elk gewenste SignalK variable laten landen. Als je er kiest die al verstuurd wordt (bijv battery level) dan kun je die vervolgens kiezen op je display.
Laatst bewerkt: 02 jan 2020 11:45 door hanst.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 12:15 #1114443

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Dit is wat het pico.py script als output produceert. Als je script dat als output heeft kun je 't in SignalK inlezen (via settings.json, zie github README).
{
  "updates":[
  {
    "source":{
      "label":"Simarine Pico"
    },
    "values":[
    {
      "path":"tanks.freshWater.1.name",
      "value":"Front"
    },
    {
    "path":"tanks.freshWater.1.type",
    "value":"fresh water"
    },
    {
      "path":"tanks.freshWater.1.capacity",
      "value":300
    },
    {
      "path":"tanks.freshWater.1.currentLevel",
      "value":1.0
    },
    {
      "path":"tanks.freshWater.1.currentVolume",
      "value":0.3
    },
    {
      "path":"environment.outside.pressure",
      "value":102570
    },
    {
      "path":"electrical.batteries.1.name",
      "value":"Service"
    },
    {
      "path":"electrical.batteries.1.voltage",
      "value":12.721
    },
    {
      "path":"electrical.batteries.1.temperature",
      "value":277.65
    },
    {
      "path":"environment.inside.temperature",
      "value":277.65
    }
    ]
  }
  ]
}
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 12:43 #1114451

Cool! Wat ik dan zou willen is de performance data die beschikbaar is in de OpenCPN Tactics plug-in via OpenCPN naar een Signal-K variable kopieren en signal-K die variabele naar het N2K netwerk laten schrijven.

Zou zoiets kunnen denk je?
Laatst bewerkt: 02 jan 2020 12:43 door Nachtvlinder.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 02 jan 2020 16:54 #1114529

Nachtvlinder schreef :
Cool! Wat ik dan zou willen is de performance data die beschikbaar is in de OpenCPN Tactics plug-in via OpenCPN naar een Signal-K variable kopieren en signal-K die variabele naar het N2K netwerk laten schrijven.

Zou zoiets kunnen denk je?

Zekers kan dat. Alleen nog even maken...
Hans Fix, Feeling 29DI
Met elektrische hulpmotor.
hansfix.nl/electric/
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 09 jan 2020 19:55 #1116719

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Ik heb intussen wat voortgang geboekt. Momenteel zijn de volgende dingen geconfigureerd op de Pico:
Barometer (intern)
Service accu (intern)
Watertank 1
Watertank 2
Dieseltank
Temperatuur Kajuit
Start accu (werkt zodra ik de motor main switch 'on' zet)
Ankerlier accu (maar spanning wordt nog niet goed gelezen - bedrading ding)
Boegschroef accu (maar spanning wordt nog niet goed gelezen - bedrading ding)

De niveaus/waarden worden gelezen en doorgezet naar SignalK dmv wat hardcoded dingen. Wat nog niet lukt is om de config te lezen en dan van de data stream de juiste data bij de juiste config te zoeken.
Dus voor nu mij werkend gemaakt dmv hard coded info.

github.com/htool/Pico2SignalK
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 10 jan 2020 07:58 #1116818

Je gaf aan de data kwam beschikbaar via de iphone app, hoe krijg je de data in de pi?
Onno Harders eigenaar van
www.boatcontroller.nl en www.pcnautic.nl
Prutsen is de meest onderschatte fase van een creatief proces
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 10 jan 2020 10:08 #1116865

  • hanst
  • hanst's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 429
Als je de Simarine Pico installeerd, dan kun je 'm op je boot wifi laten connecten (of z'n eigen access point laten zijn) en dan kun je daarna met de App de Pico bedienen.

Wanneer je Pico dus bereikbaar is over wifi, dan kan het script dat op bijv een raspberry pi draait de Pico ook over het netwerk bereiken en zo de data lezen.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 10 jan 2020 10:55 #1116871

kun je ook data terug sturen naar de pico? :whistle:
Prachtig display voor weinig naar mijn mening!!
Onno Harders eigenaar van
www.boatcontroller.nl en www.pcnautic.nl
Prutsen is de meest onderschatte fase van een creatief proces
Laatst bewerkt: 10 jan 2020 10:55 door Zeilprutser.
Alleen ingelogde leden kunnen reageren.

Simarine Pico -> SignalK python script 11 jan 2020 02:47 #1117050

  • ReneK
  • ReneK's Profielfoto
  • Offline
  • Gebruiker
  • Berichten: 4335
Zeilprutser schreef :
kun je ook data terug sturen naar de pico? :whistle:
Prachtig display voor weinig naar mijn mening!!

er is wel communicatie , hoeveel weet ik niet maar je kunt wel bijvoorbeeld via wifi je instellingen veranderen opde pico
www.svbluepearl.com

Inmiddels hebben we Kroatië verlaten en zijn we (weer) onderweg globaal richting Nieuw Zeeland ;)
Alleen ingelogde leden kunnen reageren.
Tijd voor maken pagina: 0.343 seconden
Gemaakt door Kunena
   
   
   
   
© Zeilersforum.nl