UDP Kommunikation mit Marstek Venus E

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
Raspi123
Beiträge: 3
Registriert: 6. Dez 2025 23:01
Answers: 0

UDP Kommunikation mit Marstek Venus E

Beitrag von Raspi123 »

Hallo,
Ich habe eine laufende UDP-Kommunikation zwischen einem Arduino Uno R4 WIFI und einem Marstek Venus E, es gelingt mir aber nicht diese auf meinen Openhab-RasPi zu übertragen.
Ich benutze das Smarthome/J TCP/UDP-Binding und habe je einen TCP/UDP Client und einen TCP/UDP-Receiver angelegt.

Client-Konfiguration:

Code: Alles auswählen

UID: tcpudp:client:VenusE_TCP_UDP_Client
label: TCP/UDP Client
thingTypeUID: tcpudp:client
configuration:
  protocol: UDP
  delay: 0
  port: 30000
  host: 192.168.178.52
  refresh: 30
  timeout: 3000
  bufferSize: 2048
channels:
  - id: UdpToVenusE
    channelTypeUID: tcpudp:string
    label: UdpToVenusE
    description: ""
    configuration: {}
Receiver-Konfiguration:

Code: Alles auswählen

UID: tcpudp:receiver:UdpReceiver
label: TCP/UDP Receiver
thingTypeUID: tcpudp:receiver
configuration:
  protocol: UDP
  port: 30000
  localAddress: 0.0.0.0
  bufferSize: 2048
channels:
  - id: VenusE_UdpRec1
    channelTypeUID: tcpudp:receiver-string
    label: VenusE_UdpRec1
    description: ""
    configuration: {}
Der Beispiel-Request-String funktioniert und ist unstrittig:

Code: Alles auswählen

items.getItem('UdpToVenusE').sendCommand('{\"id\": 1, \"method\": \"ES.GetStatus\", \"params\": {\"id\": 0}}');
Das Problem besteht offenbar darin, dass der Request laut Wireshark-Mittschnitt im Fall von OpenHab gegenüber dem Arduino unerwartete Source-Ports eingetragen werden (siehe Bild), obwohl dies in der Konfiguration überhaupt nicht angeboten wird.
Inhaltlich enthält die Antwort den erwarteten Response-String. Wegen des falschen Source-Ports kommt die Antwort aber nicht in Openhab an.
Laut Wireshark ist der Port unreachable (siehe Bild).

Frage: Woher kommt der fehlerhafte Source-Port und wie lässt sich das Problem beseitigen ?

Vielen Dank 
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15507
Registriert: 11. Apr 2018 18:05
Answers: 250
Wohnort: Darmstadt

Re: UDP Kommunikation mit Marstek Venus E

Beitrag von udo1toni »

Raspi123 hat geschrieben: 7. Dez 2025 00:50 Das Problem besteht offenbar darin, dass der Request laut Wireshark-Mittschnitt im Fall von OpenHab gegenüber dem Arduino unerwartete Source-Ports eingetragen werden (siehe Bild), obwohl dies in der Konfiguration überhaupt nicht angeboten wird.
Nein. :)

Egal ob nun TCP oder UDP, es gibt immer eine Source IP mit Source Port und eine Destination IP mit Destination Port, und das gilt uneingeschränkt.
Weiter stehen insgesamt 2^16 Ports zur Verfügung, von denen allerdings die ersten 1024 nur mit erweiterten Rechten genutzt werden können.
Alle Ports über 1024 können grundsätzlich immer nur von einem Programm/Thread verwendet werden, wenn Du also einen Receiver auf Port 30000 laufen lässt, so steht dieser Port nicht als Sender zur Verfügung.
Allgemein sollte ein Programm, welches TCP/UDP verwendet aber den Source Port allenfalls zur Kenntnis nehmen (Ausnahme: Firewall/Packetfilter), weil der Sourceport einer Kommunikation dynamisch ist und gemeinhin ausgewürfelt oder hochgezählt wird.
Bei bestimmten Protokollen können Portranges definiert sein, weil die entsprechenden Dienste exposed sind - z.B. (S-)RTP bei VoIP.
Letztlich ist es aber die Entscheidung des Senders, welchen Port er zum senden verwendet.

Das UDP Paket hat eine komplett andere Größe, eventuell ist hier das Problem zu suchen. In dem Datum sind nach den Nutzdaten nicht nur 00-Bytes enthalten, $00a7 ff " 2500".
Kannst Du auf dem Arduino selbst in die Kommunikation schauen?
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

Raspi123
Beiträge: 3
Registriert: 6. Dez 2025 23:01
Answers: 0

Re: UDP Kommunikation mit Marstek Venus E

Beitrag von Raspi123 »

Ich habe die Paket-Länge angepasst und auf die Mindestlänge wie beim Openhab/Raspi Request gesetzt.
Ich hatte vorher bei Arduino einen gemeinsamen größeren Buffer für andere längere Requests.
Daran liegt es nicht. Es schaden weder die vorher längeren Pakete des Arduino-Request, noch nutzen sie etwas im Vergleich zum Fehler beim Openhab-Raspi, denn es klappt beim Arduino auch, wenn sie gleich lang sind, wir beim Openhab-Raspi.
Auffällig ist halt der identische Source- und Destination-Port bei Ardunino gegenüber den unterschiedlichen Ports bei Openhab-Raspi.

Gibt's eine Möglichkeit die Source und Destination-Adresse per Openhab-Konfiguration gleich zu setzen oder siehst du noch einen anderen markanten Unterschied zwischen den beiden Paketen, wo man ansetzen könnte ?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Raspi123
Beiträge: 3
Registriert: 6. Dez 2025 23:01
Answers: 0

Re: UDP Kommunikation mit Marstek Venus E

Beitrag von Raspi123 »

Bitte vergiss meine Frage nach identischen Source und Destination-Ports. Ich hab mir den Wireshark-Mitschnitt nochmal genauer angeschaut. Es gibt bei der UDP-Kommunikation zwischen Openhab-Raspi und Marstek einige fehlerfreie Request/Response-Paarungen (siehe anliegende Wireshark-Bilder), es gibt Requests ohne Response (nicht ungewöhnlich, auch beim Arduino) und es gibt die Request mit der Fehlermeldung „Port unreachable“ !?

Meine Frage wäre nun, warum sehe ich innerhalb Openhab im UDP-Receiver nie etwas anderes als „NULL“ (=> Bild), obwohl manche Request-/Response-Paarung iO sind ? (siehe Bild) Ich würde zunächst erwarten wenigstens manchmal den auswertbaren Response-String zu sehen.
Meine Openhab-UDP-Konfiguration gibt’s in meiner ersten Anfrage.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten