Signal - Message mit ReadingsVal in Perl

Begonnen von Kohle77, 01 Juni 2020, 08:56:03

Vorheriges Thema - Nächstes Thema

Kohle77

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

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

Moin,

was Du willst, nennt sich set magic. Wenn Du die commandref 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
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

Kohle77

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

Otto123

#4
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
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

Kohle77