FHEM Forum

FHEM => Automatisierung => Thema gestartet von: hasselh am 12 Januar 2025, 13:00:07

Titel: Zugriff auf beliebige readingsProxy Attribute innerhalb von setFn ?
Beitrag von: hasselh am 12 Januar 2025, 13:00:07
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 (https://forum.fhem.de/index.php?topic=102163.0)) ?

Liebe Grüße, hasselh
Titel: Aw: Zugriff auf beliebige readingsProxy Attribute innerhalb von setFn ?
Beitrag von: frober am 19 Januar 2025, 13:59:51
Wenn $self nicht funktioniert (ist nicht in allen Modulen implementiert), warum schreibst du nicht den Namen vom Device rein?
Titel: Aw: Zugriff auf beliebige readingsProxy Attribute innerhalb von setFn ?
Beitrag von: hasselh am 26 Januar 2025, 17:55:27
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... ;)
Titel: Aw: Zugriff auf beliebige readingsProxy Attribute innerhalb von setFn ?
Beitrag von: frober am 26 Januar 2025, 22:00:44
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.
Titel: Aw: Zugriff auf beliebige readingsProxy Attribute innerhalb von setFn ?
Beitrag von: hasselh am 30 Januar 2025, 16:10:25
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