UDP/TCP Binding

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Olli
Beiträge: 3
Registriert: 10. Aug 2018 20:16
Answers: 0

UDP/TCP Binding

Beitrag von Olli »

Hallo liebe Fangemeinde,

nachdem ich mich nun eine Weile mit OpenHab beschäftigt habe und so einiges erreicht habe, würde ich gern wieder zu meinem "Startprojekt" zurückkehren und dieses endlich zum laufen bekommen.
Mein Openhab 2.3 habe ich auf einer Synology laufen und bis auf das versenden von UDP Messages habe ich eigentlich alles hinbekommen, was ich bislang angefangen habe. Dies wäre unter anderem jointspace zur Steuerung meines Philips Fernsehers, http Binding zur Steuerung meiner Enigma2Box, MQTT Binding zur Ansteuerung meiner Rollläden (inkl. JaroliftDongle), Fritzbox TR064 für meine Fritzbox, etc.

Mein Startprojekt, warum ich überhaupt Openhab ausgesetzt habe, ist mein Heimkinosystem von LG. Nachdem die FernsteuerApp nicht mehr auf meinem Handy funktionierte (wird nicht weiterentwickelt), suchte ich nach einer Alternative. Da kam mir Openhab in den Sinn, da ich sowieso irgendwann eine Hausautomatisierungslösung haben wollte.

Nachdem ich per Wireshark gesehen habe, dass die LG App einfache UDP Befehle an die Anlage versendet, um diese zu steuern, habe ich das UDP/TCP binding installiert.
Trotz verschiedenster Konfigurationen der udp.cfg Datei und ein positiver Start des UDP Services laut openhablogdatei, versendet das Bindung keine UDP-Messages.
Log Datei Openhab:
2018-08-09 20:06:40.634 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The maximum buffer will be set to the default value of 1024
2018-08-09 20:06:40.636 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The interval to retry connection setups will be set to the default value of 5
2018-08-09 20:06:40.638 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The cron job to reset connections will be set to the default value of 0 0 0 * * ?
2018-08-09 20:06:40.641 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The port to listen for incoming connections will be set to the default value of 0
2018-08-09 20:06:40.643 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to share channels within an Item will be set to the default value of true
2018-08-09 20:06:40.645 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to share channels between the items with the same direction will be set to the default vaulue of true
2018-08-09 20:06:40.647 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to share channels between directions will be set to the default vaulue of true
2018-08-09 20:06:40.650 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to use address masks for incoming connections will be set to the default value of true
2018-08-09 20:06:40.655 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The maximum timeout for blocking write operations will be set to the default value of 3000
2018-08-09 20:06:40.656 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The blocking nature of read/write operations will be set to the default value of false
2018-08-09 20:06:40.657 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The preamble for all write operations will be set to the default value of
2018-08-09 20:06:40.658 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The postamble for all write operations will be set to the default value of
2018-08-09 20:06:40.662 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - Updating states with returned values will be set to the default value of true
2018-08-09 20:06:40.664 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The character set will be set to the default value of ASCII
2018-08-09 20:06:40.672 [INFO ] [b.core.service.AbstractActiveService] - UDP Refresh Service has been started
2018-08-09 20:06:40.696 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - 'Connecting' the channel Channel [item=LG_Volume, command=DOWN, direction=OUT, remote=/192.168.178.29:9741, buffer=, isBlocking=false, isReconnecting=false, channel=, host=192.168.178.29, port=9741]
2018-08-09 20:06:40.801 [INFO ] [b.core.service.AbstractActiveService] - JointSpace Refresh Service has been started
2018-08-09 20:31:07.653 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The maximum buffer will be set to the default value of 1024
2018-08-09 20:31:07.658 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The interval to retry connection setups will be set to the default value of 5
2018-08-09 20:31:07.660 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The cron job to reset connections will be set to the default value of 0 0 0 * * ?
2018-08-09 20:31:07.661 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to share channels within an Item will be set to the default value of true
2018-08-09 20:31:07.662 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to share channels between the items with the same direction will be set to the default vaulue of true
2018-08-09 20:31:07.664 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - The setting to share channels between directions will be set to the default vaulue of true
2018-08-09 20:31:07.668 [INFO ] [g.tcp.AbstractDatagramChannelBinding] - Listening for incoming data on /0:0:0:0:0:0:0:0:25001
2018-08-09 20:31:07.672 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The maximum timeout for blocking write operations will be set to the default value of 3000
2018-08-09 20:31:07.675 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The blocking nature of read/write operations will be set to the default value of false
2018-08-09 20:31:07.677 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The preamble for all write operations will be set to the default value of
2018-08-09 20:31:07.679 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - The postamble for all write operations will be set to the default value of
2018-08-09 20:31:07.680 [INFO ] [ing.tcp.protocol.internal.UDPBinding] - Updating states with returned values will be set to the default value of true


Mein entsprechendes Item:
/* LG-Receiver */
String LG_Volume "Lautstärke" <soundvolume> { udp=">[DOWN:192.168.178.29:9741:'MAP(lg_av_receiver.map)']" }
Meine Map-Datei:
DOWN=\08\03\12\00*\08\08\01\12\04\08\19\10\02
Mein entsprechende Sitemap:
Switch item=LG_Volume mappings=[DOWN="▼"]
Klicke ich den "Down" Button im BasicUI, erkennt Openhab dies einwandfrei, aber es wird keine UDP Message ausgegeben. Es erfolgt keine Fehlerausgabe in der Openhablogdatei. Es bleibt einfach nur alles ruhig. Selbst wenn ich etwas anderes als den HEX Code senden möchte (z.B. nur den Text 'ON'), kommt einfach nichts.

Hat jemand vielleicht eine Idee und kann mir weiterhelfen?

Danke & viele Grüße
Olli

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

Re: UDP/TCP Binding

Beitrag von udo1toni »

Hast Du eine udp.cfg unterhalb services/ angelegt? Ich erinnere mich dunkel, dass die Dati zumindest einen verwendeten Parameter braucht, selbst, wenn der Default Wert aktiv gesetzt wird.
Statt DOWN solltest Du auch ein * setzen, denn Du möchtest ja nicht nur die Lautstärke verringern...

Code: Alles auswählen

String LG_Volume "Lautstärke" <soundvolume> { udp=">[*:192.168.178.29:9741:'MAP(lg_av_receiver.map)']" }
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Olli
Beiträge: 3
Registriert: 10. Aug 2018 20:16
Answers: 0

Re: UDP/TCP Binding

Beitrag von Olli »

Moin,

ja, die udp.cfg Datei musste ich anlegen, da das Binding nur eine tcp.cfg anlegt und ich habe auch mit diversen Werten gespielt (aktiviert/deaktiviert), da laut Dokumentation -und wie Du schon sagtest- sonst keine Messages herausgegeben werden. Aber hat bislang alles nicht geholfen.
Eine Erweiterung des Befehlssatzes werde ich vornehmen, sobald es grundsätzlich erstmal funktioniert.

VG

Olli
Beiträge: 3
Registriert: 10. Aug 2018 20:16
Answers: 0

Re: UDP/TCP Binding

Beitrag von Olli »

Ich habe inzwischen herausbekommen, dass mein Wireshark wohl nicht alle Daten mitbekommen hat, speziell von Openhab nicht (fragt mich nicht warum). Deswegen habe ich nun Packetsender als Schnüffler genommen und hier funzt das ganze wunderbar. Soweit bin ich erstmal glücklich, dass das Binding an sich läuft :D

Jetzt habe ich aber noch eine bescheidene Frage: Wie bekomme ich es hin, dass das Binding ein Backslash sendet? Wenn ich als Beispiel \08\05\09 senden möchte, kommt nur 080509 an. Gebe ich zwei Backslashs in Folge ein ( \\08\\05\\09 ) kommen beide Backslashs an: \\08\\05\\09

Wer weiß hier Rat?

Antworten