FHEM-Reading String auf KNX Gruppenadresse übertragen

Begonnen von mohel, 25 Januar 2020, 12:13:26

Vorheriges Thema - Nächstes Thema

mohel

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

Shadow3561


mohel

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?


Shadow3561

Ja, Leerzeichen gibt es als HEX (20).

Hast du in FHEM das Model auf 16.001 gesetzt?

mohel

Jep, hab ich gesetzt:

define MPD_BadOG_Title KNX 5/4/6:dpt16.001

Hanjo

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

erwin

Hi,
das Problem sollte mit der neuen Version, siehe: https://forum.fhem.de/index.php/topic,116737.0.html erledigt sein.
Bitte testen und wenn erfolgreich mit erledigt/closed markieren.
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...