FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kohle77 am 01 Juni 2020, 08:56:03

Titel: Signal - Message mit ReadingsVal in Perl
Beitrag von: Kohle77 am 01 Juni 2020, 08:56:03
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
Titel: Antw:Signal - Message mit ReadingsVal in Perl
Beitrag von: Beta-User am 01 Juni 2020, 09:03:53
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...
Titel: Antw:Signal - Message mit ReadingsVal in Perl
Beitrag von: Otto123 am 01 Juni 2020, 09:56:30
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
Titel: Antw:Signal - Message mit ReadingsVal in Perl
Beitrag von: Kohle77 am 01 Juni 2020, 17:18:14
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
Titel: Antw:Signal - Message mit ReadingsVal in Perl
Beitrag von: Otto123 am 01 Juni 2020, 17:35:17
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
Titel: Antw:Signal - Message mit ReadingsVal in Perl
Beitrag von: Kohle77 am 02 Juni 2020, 11:00:27
Danke das funktioniert.

Gruß
Christian