FHEM Forum

FHEM - Hausautomations-Systeme => KNX/EIB => Thema gestartet von: mohel am 25 Januar 2020, 12:13:26

Titel: FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: mohel am 25 Januar 2020, 12:13:26
Hallo zusammen,

ich habe mir eine kleine MPD Steuerung auf einem MDT KNX Taster gebaut mit On/Off, Volume-Steuerung und Next/Prev. Dabei würde ich gerne den Titel im KNX Display anzeigen lassen. Dafür gibt ein Telegram mit KNX Gruppenadresse und FHEM Device-Name "MPD_BadOG_Title" mit dem Typ "16.001 Zeichen ISO8859-1". Das würde ich im FHEM gerne mit dem Reading "rawTitle" aus dem MPD Device "MPD_BadOG" belegen.

Dazu hab ich ein Notify erstellt und mit $EVTPART1 etc. rumprobiert, allerdings schneidet der ja nach jedem Leerzeichen ab und schickt nur das erste Wort. Ich würde gerne natürlich den gesamten Text übertragen. Danach hab ich versucht die EVTPARTS 1-10 zu verknüpfen, allerdings hab ich da nicht die richtige Stringfunktion in Perl gefunden.

Danach bin ich zu split übergegangen und wollte das Reading einfach nach "rawTitle" teilen und dann den hinteren Teil übertragen:

define MPD_BadOG_Title_notify notify MPD_BadOG:rawTitle:.* {\
my $string = (split 'rawTitle', ReadingsVal("MPD_BadOG","rawTitle",0))[1];;\
fhem("set MPD_BadOG_Title $string")}


Damit bekomme ich leider aber auch kein gescheites Ergebnis. Das ganze übersteigt auch langsam meine FHEM/Perl Kenntnisse und bei Google bin ich auch nicht weitergekommen. :-)

Kann mir da mal jemand einen Tipp geben, wie ich das am besten bewerkstelige?

Vielen Dank, mohel
Titel: Antw:FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: Shadow3561 am 25 Januar 2020, 17:45:32
Moin,
hast du es mal mit $EVENT versucht?

MfG
Titel: Antw:FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: mohel am 25 Januar 2020, 19:29:54
Moin,

gerade getestet, leider wird immer noch nur das erste Wort übertragen. Danach schneidet der irgendwie ab.

Im FHEM Event Log steht folgendes:
2020-01-25 19:21:39 MPD MPD_BadOG rawTitle: Lena: Thank You

Im FHEM.cfg steht folgendes:
define MPD_BadOG_Title_notify notify MPD_BadOG:rawTitle:.* set MPD_BadOG_Title $EVENT

Im ETS Gruppenmonitor kommt folgendes an:
DecodedDpValue 4C 65 6E 61 3A 00 00 00 00 00 00 00 00 00 | Lena:

Er schneidet also wieder nach dem ersten Wort ab.

Leider kein Erfolg.

Ich hab gerade im FHEM Log geschaut:
2020.01.25 19:23:14 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at ./FHEM/10_KNX.pm line 2031, <GEN123165> line 31.
2020.01.25 19:23:14 3: eval: {MPD_EVENT('MPD_BadOG','playlist+player|file: http://br-br3-live.cast.addradio.de/br/br3/live/mp3/128/stream.mp3|Title: Lena: Thank You|Name: Bayern 3|Pos: 0|Id: 16390|file: http://swr-swr2-live.cast.addradio.de/swr/swr2/live/mp3/256/stream.mp3|Name: SWR2|Time: 0|duration: 0.000|Pos: 1|Id: 16391|file: http://swr-swr3-live.cast.addradio.de/swr/swr3/live/mp3/128/stream.mp3|Title: Direkter Kontakt zu SWR3 via Twitter: #swr3 **|Name: SWR3|Pos: 2|Id: 16392')}


Er scheint also das Leerzeichen als "Illegales" Hexwert zu definieren. Aber ist nicht leerzeichen auch als Hexwert definiert? Oder kann ich das evtl. vorher mit "_" ersetzen?

Titel: Antw:FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: Shadow3561 am 26 Januar 2020, 11:12:26
Ja, Leerzeichen gibt es als HEX (20).

Hast du in FHEM das Model auf 16.001 gesetzt?
Titel: Antw:FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: mohel am 26 Januar 2020, 12:51:28
Jep, hab ich gesetzt:

define MPD_BadOG_Title KNX 5/4/6:dpt16.001
Titel: Antw:FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: Hanjo am 08 September 2020, 22:17:50
Hi mohel,

ich hatte gerade das gleiche Problem wie du. Scheinbar gab es irgendwann mal einen Syntax-Wechsel im Code. Heute verwendet man set <device> <gadname> <Test 123>. Der Code für diese neue Syntax verarbeitet aber das Leerzeichen nicht korrekt. Konkret werden die Argumente in ein Array gepackt aber nur der erste Wert weiterverarbeitet.

Korrekt wäre an dieser Stelle natürlich den Code zu fixen, aber bis dahin gibt es einen Workaround:

Die alte Syntax lässt sich nämlich immer noch verwenden, und das geht so:
set <device> string <Test 123> g3
Wobei 3 die Nummer deiner Gruppe ist. So landet dann der korrekte String auf dem Bus.

Grüße
Hanjo
Titel: Antw:FHEM-Reading String auf KNX Gruppenadresse übertragen
Beitrag von: erwin am 15 Dezember 2020, 21:07:10
Hi,
das Problem sollte mit der neuen Version, siehe: https://forum.fhem.de/index.php/topic,116737.0.html (https://forum.fhem.de/index.php/topic,116737.0.html) erledigt sein.
Bitte testen und wenn erfolgreich mit erledigt/closed markieren.
l.g. erwin