[gelöst] kompliziertes reading macht Probleme

Begonnen von TiPpFeHlEr, 25 Februar 2022, 17:49:23

Vorheriges Thema - Nächstes Thema

TiPpFeHlEr

Hi Leute,

ich habe da ein reading eines ECMD Devices mit dem reading
setstate Fehler 2022-02-25 17:40:29 state Error -;;-;;-;;-;;-\
die eigentlichen Daten, die von meiner Heizung kommen, sind folgende: "-;-;-;-;-\n\n"

nun versuche ich mir diese Daten in einem DOIF per Telegram zu senden.
({ my $state = ReadingsVal("Fehler","Error",0);fhem("set teleBot send Heizung Fehler: $state ");};)
Hier bekomme ich folgenden Fehler
{ my $state = ReadingsVal("Fehler","Error",0);fhem("set teleBot send Heizung Fehler: $state ");}: Unknown command -, try help.
Unknown command -, try help.
Unknown command -, try help.
Unknown command -

, try help.


was muss ich machen damit ich die kompletten Daten  "-;-;-;-;-\n\n" übermittelt bekomme?

Gruß Maik

Otto123

Hallo Maik,

Du musst das/die Semikolon vor dem senden maskieren/verdoppeln -> ; -> ;;

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Kannst du ein Beispiel zeigen wie du das machen würdest ?

So klappts nicht:  ;D

{ my $state = qq("-;-;-;-;-\n\n");;$state=~s/;;/;;;;/g;;fhem ("set tb_TelegramBot msg Heizung Fehler: $state")}

Die Semikola müssten wie ichs verstehe vor dem einlesen mit ReadingsVal verdoppelt werden, sonst gehts nicht weiter.

Otto123

defmod wert dummy
attr wert room Test

setstate wert 2022-02-25 18:43:54 test "-;;-;;-;;-;;-\n\n"


{my $val=ReadingsVal('wert','test','');;$val =~ s/;;/;;;;/g;;return $val}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

#4
Sag ich doch, die Semikola müssten vorher verdoppelt werden.

Probiers mal direkt, mein Beispiel klappt auch wenn ich die Senikola verdoppele.

edit:

Davon ab, das Reading müsste eh zuvor editiert/formatiert werden, kann mir nicht vorstellen das TiPpFeHlEr die Message so erhalten möchte wenn Werte vorhanden sind.

Otto123

#5
Aber so hat er es doch. Im Reading stehen sie einzeln
Internals:
   FUUID      5c4c5665-f33f-27f7-af99-9b7bc734532e15ad
   NAME       wert
   NR         45
   STATE      ???
   TYPE       dummy
   READINGS:
     2022-02-25 18:43:54   test            "-;-;-;-;-\n\n"
Attributes:
   room       Test

Ergibt in der Raw Def doppelt siehe mein Beispiel
Und für den test in der Kommandozeile muss wieder alles doppelt - damits einfach wird
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Ja, Raw Def  ::) , dein Beispiel klappt.

Direkt, ohne Reading (ReadingsVal,in der Kommandozeile) bekomm ichs nicht hin:

{ my $state = '"-;-;-;-;-\n\n"');;$state=~s/;;/;;;;/g;;fhem ("set tb_TelegramBot msg Heizung Fehler: $state")}
{ my $state = q("-;-;-;-;-\n\n");;$state=~s/;;/;;;;/g;;fhem ("set tb_TelegramBot msg Heizung Fehler: $state")}
{ my $state = qq("-;-;-;-;-\n\n");;$state=~s/;;/;;;;/g;;fhem ("set tb_TelegramBot msg Heizung Fehler: $state")}

Otto123

#7
klar weil Du Deinen String "Kommandozeilengerecht" schreiben musst. ;)

@Maik Du musst in Deinen Code in der DEF einfügen:

({ my $state = ReadingsVal("Fehler","Error",0); $state =~ s/;/;;/g; fhem("set teleBot send Heizung Fehler: $state ");};)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TiPpFeHlEr

Danke Euch allen,

wieder was gelernt  ;)

Gruß Maik