Zugriff auf beliebige readingsProxy Attribute innerhalb von setFn ?

Begonnen von hasselh, 12 Januar 2025, 13:00:07

Vorheriges Thema - Nächstes Thema

hasselh

Hallo @justme1968,

ich würde gerne innerhalb von setFn auf die Attribute meines readingsProxy Devices zugreifen. Z.B. mit:
AttrVal($SELF,'mein_Attribut','')

Aber das führt zu dem Fehler:
Global symbol "$SELF" requires explicit package name (did you forget to declare "my $SELF"?) at (eval 475677) line 1.

Gibt es irgend eine Möglichkeit in setFn auf die Attribute des readingsProxy zuzugreifen - außer das Attribut im Perl Code "hart" reinzuschreiben, oder sogar 33_readingsProxy.pm zu patchen (siehe: Link) ?

Liebe Grüße, hasselh

frober

Wenn $self nicht funktioniert (ist nicht in allen Modulen implementiert), warum schreibst du nicht den Namen vom Device rein?
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

hasselh

das habe ich jetzt auch temporär genau so gelöst...

Allerdings habe ich einige solcher readingsProxy's mit gleich mehreren Referenzen innerhalb von setFn. Deshalb suche ich nach einer Möglichkeit, ob es vielleicht auch irgendwie "weniger manuell" geht... ;)

frober

Deinen Link habe ich gerade erst gesehen, da steht doch die Lösung drin.

$DEVICE anstatt $SELF

Und in der Hilfe, bzw. Comref steht es auch.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

hasselh

Das wäre zu schön gewesen und das war auch das Erste was ich ausprobiert hatte... aber $DEVICE ist leider das parent device, nicht das readingsProxy device. Siehe Comref dazu:

setFn
perl expresion that will return the set command forwarded to the parent device. has access to $CMD, $DEVICE, $READING and $ARGS