MQTT2_DEVICE readingName aus ReadingsVal

Begonnen von nuccleon, 21 Januar 2019, 20:43:22

Vorheriges Thema - Nächstes Thema

nuccleon

Hallo zusammen,

ich scheitere gerade daren den readingName im attribute readingList aus ReadingsVal() zu erzeugen.


defmod MQTT2_heizkreise MQTT2_DEVICE
attr MQTT2_heizkreise IODev mqtt2
attr MQTT2_heizkreise readingList homie/io_dg/in_0/alias:.* dg_in_0_alias\
homie/io_dg/in_0/state:.* { {ReadingsVal($NAME,"dg_in_0_alias","dg_in_0_state")=>$EVTPART0} }
attr MQTT2_heizkreise room Heizung
attr MQTT2_heizkreise verbose 5


Für homie/io_dg/in_0/alia wir ein entsprechendes reading angelegt. Für homie/io_dg/in_0/state kommt nichts an.
Aus dem Log werde ich auch nicht schlauer :-/


2019.01.21 20:30:46 4: MQTT2_DEVICE_Parse: MQTT2_heizkreise homie/io_dg/in_0/alias => dg_in_0_alias
2019.01.21 20:30:46 4: MQTT2_DEVICE_Parse: MQTT2_heizkreise homie/io_dg/in_0/state => { {ReadingsVal($NAME,"dg_in_0_alias","dg_in_0_state")=>$EVTPART0} }


Hat jemand eine Idee was ich falsch mache, bzw evtl falsch verstanden habe?

rudolfkoenig

Ich gehe davon aus, dass
Zitat{ReadingsVal($NAME,"dg_in_0_alias","dg_in_0_state")=>$EVTPART0}
kein Hash zurueckliefert.

nuccleon

Hm ok, die Antwort verstehe ich nicht :D
Wenn ich ReadingsVal($NAME,"dg_in_0_alias","dg_in_0_state") in der Kommandozeile eingebe ($NAME natürlich durch den DeviceName ersetzt), kommt der string den ich erwarte

rudolfkoenig

Zitatin der Kommandozeile eingebe ($NAME natürlich durch den DeviceName ersetzt), kommt der string den ich erwarte
Es sollte sowas wie HASH(0x7ff17aece0f8) erscheinen.

Aus dem commandref:
ZitatreadingList <regexp> [readingName|perl-Expression] ...
      If the regexp matches topic:message or cid:topic:message either set
      readingName to the published message, or evaluate the perl expression,
      which has to return a hash consisting of readingName=>readingValue
      entries.

nuccleon

Ok, ich formuliere meine Frage anders:

Da {ReadingsVal($NAME,"dg_in_0_alias","dg_in_0_state")=>$EVTPART0} keinen Hash zurückliefert, was muss ich tun um einen HASH zu erhalten der aus ReadingsVal und $EVTPART0 besteht?

rudolfkoenig

Zitat{ my %h;; $h{ReadingsVal($NAME,"dg_in_0_alias","dg_in_0_state")} = $EVTPART0;; \%h }
Das ist ungetestet. Wenn jemandem was Eleganteres einfaellt, bitte melden.