Hallo,
ich bastle jetzt schon einige Zeit rum aber irgendwie verstehe ich das mit der Perl Syntax nicht ganz richtig. Ich kann mit:
{ fhem "set Signal msg @#ABCDEFGEHIJKLMN123== Heute wird { ReadingsVal ('Muelltonnen','now_text','') } abgeholt" }
eine Nachricht an Signal senden aber leider wird das { ReadingsVal ('Muelltonnen','now_text','') } als text in dieser Nachricht angezeigt.
Könnte mir bitte jemand da mal helfen wie ich das Reading now_text aus dem device Muelltonnen auslesen kann und in dies Nachricht intergriert werden kann?
Danke
Kohle
Evtl. hilft es, den Rückgabestring/die Message vorher zusammenzubauen und in eine Variable zu packen. In der Message-Anweisung dann nur die Variable versenden. Also zwei-Zeiler statt one-Liner...
Moin,
was Du willst, nennt sich set magic. Wenn Du die commandref (https://fhem.de/commandref_DE.html#set)zu set aufmerksam liest steht dort:
{(Perlausdruck)}
Dir fehlen also die zusätzlichen () :)
Das hilft Dir genau in dem Moment, längerfristig ist der Vorschlag von Beta-User besser.
Gruß Otto
Hi,
hab jetzt folgendes Probiert:
{ fhem "set Signal msg @#ABCDEFGEHIJKLMN123== Heute wird { (ReadingsVal ('Muelltonnen','now_text','')) } abgeholt" }
und
{ fhem ("set Signal msg @#ABCDEFGEHIJKLMN123== Heute wird { (ReadingsVal ('Muelltonnen','now_text','')) } abgeholt") }
aber bei beidem bekomme ich die Meldung:
Heute wird { (ReadingsVal ('Muelltonnen','now_text')) } abgeholt.
Gibt es nicht eine und Verknüpfung? Ich stelle mir so etwas vor:
"Heute wird " && { (ReadingsVal ('Muelltonnen','now_text')) } && "abgeholt."
Gruß
Kohle
Hi,
das hier { (ReadingsVal ('Muelltonnen','now_text','')) }
und das hier { (ReadingsVal ('Muelltonnen','now_text')) } ist völlig unterschiedlich und beides falsch!!!
Aber vergiss alles was ich gesagt habe, Du willst Perlcode und normalen Text im set mischen, das funktioniert so unter Umständen nicht! Das hatte ich wieder ausgeblendet!
So wirds (nach Beta-User) ;) und falls Du sowieso noch mehr Perl ringsherum hast.
{my $val= ReadingsVal ('Muelltonnen','now_text','');; fhem ("set Signal msg @#ABCDEFGEHIJKLMN123== Heute wird $val abgeholt") }
Oder exakt set magic :) wenn Du nichts weiter in Perl brauchst.
set Signal {("msg @#ABCDEFGEHIJKLMN123== Heute wird ".ReadingsVal ('Muelltonnen','now_text','nichts')." abgeholt")}
ich erzeuge damit einfach den kompletten String für den set Befehl mit concatenation.
Was bei mir allerdings auch funktioniert sieht so aus:
set Signal msg @#ABCDEFGEHIJKLMN123== Heute wird [Muelltonnen:now_text] abgeholt
Gruß Otto
Danke das funktioniert.
Gruß
Christian