Attribut-Liste instanzabhängig zur Laufzeit ändern

Begonnen von Damian, 17 März 2018, 22:21:49

Vorheriges Thema - Nächstes Thema

Phill

Ok. Vielleicht sehe ich das auch zu drastisch.

Nur soll der Entwickler darauf achten, das die ignorierten Attribute nicht bereits existieren.

Gruß
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

HomeAuto_User

#16
Hallo,

ich stieß soeben auf die Funktion

setDevAttrList

Ich habe diese mal ausprobiert und in mein Testmodul eingebaut.
Eine Frage hätte ich diesbezüglich.

Wie kann ich zur Laufzeit modifizierte Attribute, welche mit der Funktion erstellt werden und deren Wert in der fhem.cfg speichern wieder abrufen nach einem FHEM restart?
Die Werte bleiben in der cfg gespeichert aber wenn ich die Attribute erst wieder jedes mal neu erstelle, lesen diese ja nicht die Konfiguration aus der cfg aus.

Gibt es da einen Trick oder überrsehe ich dort etwas?

MfG und Danke im Vorraus.
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

dominik

Wie stellt man sicher, dass die mit setDevAttrList gesetzten/erstellten Attribute nach einem shutdown restart weiterhin vorhanden sind? In meiner aktuellen Implementierung gehen sie nach dem Neustart verloren. Ich mach direkt im Define aktuell immer ein setDevAttrList. Darf ich das vielleicht nur einmal machen?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

rudolfkoenig

Ein Aufruf im DefineFn sollte reichen.
In fhem.pl wird die Variable $defs{x}{".AttrList"} nur im setDevAttrList und in getAllAttr angefasst.

dominik

Ich weiß nun woran es liegt.

Beim Starten wird bei mir nicht das komplette Define durchlaufen, sondern erst zu einem späteren Zeitpunkt. Das führt dazu, dass nach dem Define das Attribut noch unbekannt ist. Erst nach $init_done=1 werden alle Attribute bekannt. Wäre es möglich, dass wir beim Laden der fhem.cfg/config.db alle Attribute zulassen, ohne Prüfung? Weil dann kann man auch später zur Laufzeit noch ein setDevAttrList machen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

rudolfkoenig

Ungern: fhem.cfg Editierer wuerden kein Feedback beim Vertippen bekommen.
Vermutlich gibt es auch andere Nebeneffekte, die ich jetzt nicht abschaetzen kann.

Ich sehe folgende Alternativen:
- setDevAttrList im DefFn auf "Alles" setzen, und sie spaeter nochmal aufrufen, und beschraenken
- gesetzte "Problemattributnamen" zusaetzlich im Device spezifischen userattr setzen.
- "Problemattributnamen" alphabetisch hinter "Bestimmerattributnamen" setzen, und setDevAttrList aus AttrFn(Bestimmeratribut) aufrufen.

dominik

Danke für den Tipp! Das mit dem userattr ist vielleicht eine gute Möglichkeit. Ich kann die userattr kurz anlegen und danach auch wieder löschen wenn setDevAttrList gesetzt ist.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik