OpenCPN, TCP, NMEA 0183

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Oltronix
Inlägg: 324
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

OpenCPN, TCP, NMEA 0183

Inlägg av Oltronix »

Jag försöker bygga en motortermometer för min båtmotor som jag skall presentera på en navigator. Jag börjar med OpenCPN 5.0.0 som har en NMEA debugfunktion jag vill utnyttja. Den loggar alla NMEA 0183 data som kommer in.
User manual https://opencpn.org/OpenCPN/info/manuals.html I pdf-dokumentet sid 189 finns följande text.
TCP
A “connection-oriented” protocol which provides a reliable link between two network
endpoints. TCP ensures that any network packets lost in transit are re-transmitted. Internet
AIS servers normally accept TCP connections as do many serial-to-network/wifi devices.
To make a connection to a remote TCP server, enter its IP address or hostname in the
“Address” box and the TCP port on which the server listens in the “DataPort” box. Many
devices use a non-standard TCP port rather than OpenCPN's standard 10110, so do check the
server's documentation.
If “0.0.0.0” is entered in the Address box, OpenCPN will act as a TCP server accepting a
connection from a remote TCP client. OpenCPN will listen on all its host computer's
network interfaces for TCP connections to the port specified in the “DataPort” field. There
should normally be no reason to select a “DataPort” value other than the standard 10110
unless multiple servers are required:

Python-klienten jag testar med:

Kod: Markera allt

#!/usr/bin/env python3
import socket

HOST = '0.0.0.0'
PORT = 10110

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'$GPGSV 4,1,14,01,29,162,10,03,81,134,13,06,30,307,,09,19,221,27*7D')    
 
Jag får det inte att fungera. Det kommer inte ett pip i debugfönstret från TCP. När jag använder gpsd med GSPD-protokol över lokalnät får jag in data från GPS. Några tips?

Bild från OpenCPN connections:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
kodar-holger
EF Sponsor
Inlägg: 747
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: OpenCPN, TCP, NMEA 0183

Inlägg av kodar-holger »

Prova med "localhost" istället för "0.0.0.0" i pythonkoden.

Jag tolkar det som att 0.0.0.0 i konfigurationen gör att den lyssnar efter inkommande anslutningar. Det har inget att göra med vilken ip-adress den verkligen har. Det är din dators konfiguration som styr.

localhost kan eventuellt ersättas med 127.0.0.1 som är samma sak.
Användarvisningsbild
Oltronix
Inlägg: 324
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: OpenCPN, TCP, NMEA 0183

Inlägg av Oltronix »

Tyvärr localhost och 127.0.0.1 i pythonkoden ger samma resultat. Ingenting
Användarvisningsbild
ajje
Inlägg: 1516
Blev medlem: 12 mars 2010, 16:35:31
Ort: Smedjebacken

Re: OpenCPN, TCP, NMEA 0183

Inlägg av ajje »

Servern lysnar på "0.0.0.0" vilket betyder alla interface i den burken.

Klienten ska konfas att prata med en ipadress som faktiskt finns på servern. (127.0.0.1 om klient och server körs på samma maskin)
nifelheim
Inlägg: 1772
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: OpenCPN, TCP, NMEA 0183

Inlägg av nifelheim »

vad säger
tcpdump broadcast
?
nifelheim
Inlägg: 1772
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: OpenCPN, TCP, NMEA 0183

Inlägg av nifelheim »

skulle visst varit ett litet sudo också :)
jag har ingen koll på python men om du ska skicka broadcast kanske 255.255.255.255 kan funka, annars får du nog göra som ajje skriver.

provade på min uppsättning ais-openCPN
ais skickar broadcast frames på nätverket och open cpn lyssnar på port 10110
tcpdump.JPG


edit: kör du allt på samma maskin?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
JimmyAndersson
Inlägg: 25114
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: OpenCPN, TCP, NMEA 0183

Inlägg av JimmyAndersson »

Apropå 0.0.0.0 osv:
Kika på mitt test här för ledtrådar:
https://elektronikforumet.com/forum/vie ... A#p1015827
Användarvisningsbild
Oltronix
Inlägg: 324
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: OpenCPN, TCP, NMEA 0183

Inlägg av Oltronix »

Hm nu skall vi se...
Ja jag kör på samma maskin. OpenCPN och pythonklienten.
Jag körde först 'sudo tcpdump -i lo'. Sen bytte jag till Wireshark och då upptäckte jag att jag missade att skicka LF o CR (0x0d o 0x0a) på slutet, men att peta dessa gjorde ingen skillnad.
Jag testade även att köra med UDP eftersom nifelheim använde det. Det gjorde inte någon skillnad. Det hände inte något i degbugfönstret på OpenCPN.

Om jag stänger ner OpenCPN får jag felmeddelande från min Pythonklient ('ConnectionRefusedError: [Errno 111] Connection refused). Får även felmeddelande även vid UDP men det ser jag bara i Wireshark och i tcpdump. (vem skickar felmedelande vid UDP? Routern?) Det är väl ok pythonklienten inte skickar felmedelande eftersom jag skickar datagram i detta fall.

Så min tanke för tillfället är att mitt problem är inte ett IP-problem utan något som OpenCPN inte gillar. Jag får kolla den bytesträng jag skickar från klienten igen.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 39194
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: OpenCPN, TCP, NMEA 0183

Inlägg av sodjan »

Inte för att jag vet, men vad ska man ha ett debug fönster
till om det inte även visar felaktiga paket/data?
johano
Inlägg: 1942
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: OpenCPN, TCP, NMEA 0183

Inlägg av johano »

Vet inte alls om detta är relevant men när jag testade här att ta fram checksumman på strängen:
"GPGSV 4,1,14,01,29,162,10,03,81,134,13,06,30,307,,09,19,221,27" så blev det 71 och inte 7D?!
Screenshot 2019-10-15 at 21.16.54.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Oltronix
Inlägg: 324
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: OpenCPN, TCP, NMEA 0183

Inlägg av Oltronix »

Screenshot from 2019-10-15 14-42-36.png
sodjan skrev:Inte för att jag vet, men vad ska man ha ett debug fönster
till om det inte även visar felaktiga paket/data?
Det var det som var det fina i kråksången, tyckte jag, att även felaktiga meddelande skulle visas

edit:
Johano: Använt annan checksumma, 71. Tyvärr hände inget i debugfönstret. Stängde även av checksum-kollen. Inget nytt hände.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
johano
Inlägg: 1942
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: OpenCPN, TCP, NMEA 0183

Inlägg av johano »

Jag blev tvungen att testa så jag sög ner OpenCPN och satte upp en "connection" med samma port som du.
Körde sedan ditt pythonprog och det dyker upp loggningar i debugfönstret.
(Har jag fel checksumma dyker det inte upp någonting dock).

Det är ingen brandvägg eller nåt sånt aktiverat som inte släpper igenom?
Fast då borde ju pythonprogrammet gett socket error 61 tycker jag.

Kod: Markera allt

import socket

HOST = "127.0.0.1"
PORT = 10110

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b"$GPGSV 4,1,14,01,29,162,10,03,81,134,13,06,30,307,,09,19,221,27*71")
Screenshot 2019-10-15 at 23.22.40.png
Screenshot 2019-10-15 at 23.22.51.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Oltronix
Inlägg: 324
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: OpenCPN, TCP, NMEA 0183

Inlägg av Oltronix »

Hm...
Det som skiljer är att du använder en Mac och jag PC med Ubuntu.
Intressant att du har inga \x0d och \x0a i bytesträngen men de kommer ändå i Debugfönstret. Vet inte vad jag skall hitta på nu. Jag får installera om OpenCPN eftersom jag inte har några andra ideer.

Men jag får tacka för allt engagemang jag fått hitills. Det är tryggt när man kört fast och ideer och kunskap sinar. Tack :)
Användarvisningsbild
Oltronix
Inlägg: 324
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: OpenCPN, TCP, NMEA 0183

Inlägg av Oltronix »

Jag tappade farten och energi=> Brist på ideer
Men...
Jag hittade en misstänkt Bug i OpenCPN. I alla fall i min installtion. När jag skickat strängen
" s.sendall(b"$GPGSV 4,1,14,01,29,162,10,03,81,134,13,06,30,307,,09,19,221,27*71\x0d\x0a") "
Så hänger sig OpenCPN och måste starts om. Hittade även logfil som jag får kolla upp senare. Nu måste jag göra annat.

Jag återkommer. :)
Skriv svar