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
Hallo Maik,
Du musst das/die Semikolon vor dem senden maskieren/verdoppeln -> ; -> ;;
Gruß Otto
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.
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}
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.
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
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")}
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 ");};)
Danke Euch allen,
wieder was gelernt ;)
Gruß Maik