[gelöst] Speichern der fhem.cfg löscht UniqueID-Einträge

Begonnen von zife, 05 September 2020, 09:08:03

Vorheriges Thema - Nächstes Thema

zife

Hallo fhem-Gemeinde,

ich bin fortgeschrittener Anfänger, also einer mit gefährlichem Halbwissen. Noch dazu gehöre ich zu den Bösen, die gerne in der fhem.cfg direkt editieren (Krankheit aus alten Programmierer-Tagen). Ich weiß um die Nachteile, aber bisher lief alles tadellos, auch weil ich auf alle möglichen sicht- und unsichtbaren Zeichen achte.

Nun mein Problem:

Ich habe jüngst ein neues Gerät in fhem aufgenommen, das auch zwei Einträge in der UniqueID setzt (über set [device] password und set [device] clientSecret). Das funktioniert auch - sobald die beiden SET-Befehle abgesetzt sind, tauchen die Einträge in der UniqueID auf. Sie überleben auch ein "shutdown restart" - soweit alles super. So sehen die Einträge dann aus:

MieleAtHome_MieleConnection_clientSecret: (...)
MieleAtHome_MieleConnection_passwd: (...)
MieleAtHome_MieleConnection_OAUTH2_ACCESS_TOKEN: (...)
MieleAtHome_MieleConnection_OAUTH2_REFRESH_TOKEN: (...)
MieleAtHome_MieleConnection_OAUTH2_EXPIRES_IN: (...)
MieleAtHome_MieleConnection_OAUTH2_EXPIRES_AT (...)

ABER:
Sobald ich die fhem.cfg öffne und speichere, sind diese neuen Einträge verloren, die UniqueID steht wieder auf dem Stand von davor - und somit muss ich password und clientSecret neu setzen. Immer wieder, nach jedem Speichern der Konfig.

Geprüft habe ich schon:
... Fehlermeldungen beim Setzen von password und clientSecret --> keine
... Struktur der UniqueID --> korrekt, keine Leerzeilen, etc.
... Laden der beiden Einträge über Kommandozeile --> werden korrekt wiedergegeben



Kann mir jemand helfen? Ist für mich als Anfänger ne dicke Nuss - ich weiß nicht, wo ich wie weiter forschen sollte.
fhem mit EnOcean, Gardena, Vorwerk, Miele und Teufel/Raumfeld-Integration... nur meine Kinder wollen sich damit nicht anständig steuern lassen. Wer weiß Rat?

amenomade

#1
Eine Frage, die ich im anderen Thread vergessen habe:

wie genau editierst Du fhem.cfg? Über die Weboberfläsche? Wenn ja, dann passiert folgendes:
Zitat von: CommandRefeditConfig
Falls dieses FHEMWEB Attribut (auf 1) gesetzt ist, dann kann man die FHEM Konfigurationsdatei in dem "Edit files" Abschnitt bearbeiten. Beim Speichern dieser Datei wird automatisch rereadcfg ausgefuehrt, was diverse Nebeneffekte hat.

Zitat von: CommandRefrereadcfg [fhem-config-file]

Liest entweder die aktuelle Konfigurationsdatei oder die angegebene Datei ein.
Der Ablauf ist dabei wie folgt:  Zuerst wird das statefile gesichert. Dann werden alle Geräte gelöscht. Dann wird die aktuelle Konfigurationsdatei (oder die angegebene Datei) eingelesen zuletzt wird das statefile neu eingelesen.
Wenn dieser Ablauf abgeschlossen ist, wird das globale REREADCFG Ereignis ausgelöst. Alle existierenden Verbindungenwerden bis zum "rereadcfg" Ereignis getrennt.

Bei "alle Geräte gelöscht" wird die Funktion undefFn aufgerufen. Und die führt bei MieleAtHome zu eine Löschung der Keys, was bei einem shutdown/restart natürlich nicht passiert. Das macht nicht jedes Modul, [EDIT: weil es eigentlich der deleteFn Funktion und nicht undefFn gehört]

Ich vermute, dass deine MieleAtHome keys auch ein "rereadcfg" ohne Änderung nicht überleben.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rudolfkoenig

Im rereadcfg wird (nur) UndefFn aufgerufen. Der Zweck ist Filedescriptoren zu schliessen, Timer zu loeschen, etc, d.h. alle Ressourcen, die zur Laufzeit benoetigt werden, und die bei einem erneuten Start (define) wieder angelegt werden.

Im delete wird UndefFn _und_ DeleteFn aufgerufen.
Letzteres sollte persistente Daten entfernen, z.Bsp. gespeicherte Logindaten.

amenomade

Danke Rudolf, das bestätigt meine Vermutung. In dem Sinn habe ich im Miele@Home Thread eine neue Version vorgeschlagen.

Mir war nicht klar, ob in DeleteFn das vollständige hash des Devices, also z.B. $hash->{irgendwas}, noch vorhanden ist (bis auf was man evtl. in UndefFn schon gelöscht hat). Aber es scheint der Fall zu sein.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

zife

#4
Also, die neue Version des MieleAtHome Moduls löst das Problem! Danke! Da geht was, wenn die "Alten Hasen" in Fahrt kommen  ;D

Und ja, ich editiere die fhem.cfg im Web-Editor der fhem-Oberfläche...

EDIT:
Gibt's dazu noch was zu diskutieren, oder kann ich den Fred gelöst setzen? Von mir aus wäre er es...
fhem mit EnOcean, Gardena, Vorwerk, Miele und Teufel/Raumfeld-Integration... nur meine Kinder wollen sich damit nicht anständig steuern lassen. Wer weiß Rat?