Autor Thema: Attribut-Liste instanzabhängig zur Laufzeit ändern  (Gelesen 8519 mal)

Offline Phill

  • Developer
  • Full Member
  • ****
  • Beiträge: 409
  • Langsam wird'n Schuh d'raus.
    • iVDR
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #15 am: 22 März 2018, 15:25:18 »
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

Offline HomeAuto_User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1028
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #16 am: 11 September 2019, 17:29:26 »
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.
« Letzte Änderung: 11 September 2019, 18:46:49 von HomeAuto_User »
"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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20451
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #17 am: 11 September 2019, 17:32:29 »
mit AttrVal. wie jedes andere attribut auch.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2207
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #18 am: 27 September 2020, 09:32:18 »
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?
fhem_pythonbinding -  https://github.com/dominikkarall/fhem_pythonbinding: GoogleCast, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, ...
Kaffeespende: https://paypal.me/todominik

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23116
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #19 am: 27 September 2020, 11:01:51 »
Ein Aufruf im DefineFn sollte reichen.
In fhem.pl wird die Variable $defs{x}{".AttrList"} nur im setDevAttrList und in getAllAttr angefasst.

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2207
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #20 am: 29 September 2020, 22:15:11 »
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.
fhem_pythonbinding -  https://github.com/dominikkarall/fhem_pythonbinding: GoogleCast, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, ...
Kaffeespende: https://paypal.me/todominik
Zustimmung Zustimmung x 1 Liste anzeigen

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23116
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #21 am: 30 September 2020, 08:40:25 »
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.

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2207
Antw:Attribut-Liste instanzabhängig zur Laufzeit ändern
« Antwort #22 am: 30 September 2020, 18:57:30 »
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.
fhem_pythonbinding -  https://github.com/dominikkarall/fhem_pythonbinding: GoogleCast, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, ...
Kaffeespende: https://paypal.me/todominik