[configDB] FHEM im rescue-Modus starten

Begonnen von betateilchen, 25 März 2018, 21:02:01

Vorheriges Thema - Nächstes Thema

betateilchen

In äußerst seltenen Fällen kann es vorkommen, dass beispielsweise durch eine falsch definierte Funkhardware oder sonstige Schnittstelle fhem an einem korrekten Start gehindert wird.

Um auch Anwendern mit configDB eine Möglichkeit zu bieten, ihr fhem wieder zu "reparieren", gibt es die Möglichkeit, FHEM in einem von verschiedenen Rettungsmodi zu starten, um dann eine vorherige (funktionierende) Version aus der configDB wiederherzustellen.

Die Konfiguration eines rescue modes erfolgt ab sofort in der ohnehin vorhandenen Konfigurationsdatei configDB.conf

Folgende rescue modes stehen zur Verfügung


  • nostate = "1" bewirkt, dass FHEM mit der bestehenden Konfiguration, aber ohne Einlesen des stateFile gestartet wird.
  • rescue = "1" bewirkt, dass FHEM mit einer absolut minimalen Konfiguration gestartet wird, in der nur ein FHEMWEB device auf port 8083 und ein telnet device auf port 7072 definiert werden. Damit kann dann z.B. ein "configdb recover" zum manuellen Laden einer bestimmten Konfiguration, die man sich per "configdb info" ausgesucht hat, durchgeführt werden.
  • loadversion = "x" bewirkt, dass anstatt der zuletzt gespeicherten Konfiguration direkt beim FHEM Start eine frühere Version geladen wird, deren Nummer als "x" angegeben wird. Beispielsweise lädt der Parameter loadversion => "3" das Laden der Version Nr. 3 aus der Datenbank.

Die Parameter werden in der Konfigurationsdatei in folgender Form eingetragen:


%dbconfig= (
connection => "SQLite:dbname=/opt/fhem/sqldb/configDB.db",
user => "",
password => "",
#nostate => "1",
#rescue => "1",
#loadversion => "7",
);


(natürlich ohne die Kommentarzeichen am Anfang!)

Nach dem Eintragen einer rescue-Option muss FHEM neu gestartet werden.

Nach erfolgreicher Reparatur muss natürlich vor dem nächsten FHEM Start die Konfigurationszeile wieder entfernt oder zumindest auskommentiert und FHEM danach neu gestartet werden!

Damit hoffe ich, im einen oder anderen Katastrophenfall eine Lösung zu bieten, sein FHEM wieder zu reparieren, wenn man sich in der Konfiguration einmal wirklich komplett verrannt hat.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#1
Seit Juli 2022 gibt es noch eine weitere Option, mit der man einzelne Devices beim Start temporär ausschließen kann, falls man deren Namen kennt. Beispielsweise, wenn eine falsch durchgeführte Definition einen FHEM-Start verhindert.

https://forum.fhem.de/index.php/topic,128400.0.html



In manchen Problemsituationen kann es hilfreich sein, ein einzelnes device beim Systemstart nicht anzulegen.
Das geht ... auch in configDB relativ einfach mit einem zusätzlichen Eintrag in der Konfigurationsdatei configDB.conf


%dbconfig= (
connection => "SQLite:dbname=/opt/fhem/sqldb/configDB.db",
user => "",
password => "",
exclude => "test1,test2",
);


Der Eintrag "exclude" enthält eine kommagetrennte Liste mit device-Namen, die beim Starten nicht angelegt werden sollen.

2022.07.14 18:33:09 1: configDB excluding test1 (define test1 dummy)

Die Namen müssen korrekt eingetragen werden, das gilt auch für die Groß-/Kleinschreibung
Die Konfiguration selbst wird nicht verändert
Nicht vergessen, den exclude-Eintrag aus der Konfiguration wieder zu entfernen, wenn man das eigentliche Problem gelöst hat
Beim Starten wird FHEM trotzdem versuchen, alle readings zu setzen - auch die für das ausgeschlossene device. Dazu kommt es zu Fehlermeldungen wegen des nicht vorhandenen device. Diese Meldungen können getrost ignoriert werden. Das Unterdrücken dieses Verhalten würde einen unverhältnismäßig hohen Eingriff in die Logik erfordern, den ich mir einfach erspart habe.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!