Seite 1 von 1

Restoreonstartup Probleme bei MariaDB

Verfasst: 22. Dez 2025 11:44
von mothabrain
Hallo zusammen,

ich habe die Persistenz für OH bei mir per jdbc via Weboberfläche eingerichtet.
Die Daten der items werden in die MariaDB sauber geschrieben. Soweit so gut.

Allerdings werden eine paar items nach einem Neustart nicht restored und verbleiben auf NULL.
In der Datenbank werden auch diese Datenpunkte kontinuierlich fortgeschrieben, sobald ich die Werte in OH händisch wieder setze.

Meine default.persist sieht wie folgt aus

Code: Alles auswählen

Strategies {
    everyChange   : "jdbc"
    everyUpdate   : "jdbc"
    everyMinute   : "jdbc"
}

Items {
    * : strategy = everyUpdate, everyChange, restoreOnStartup
}

Meine jdbc.cfg ist komplett auskommentiert, da wie oben beschrieben, die Konfiguration per UI vorgenommen wurde.

Hat jemand eine Idee, woran es liegen könnte, dass die letzten Daten der items nicht restored werden?

Re: Restoreonstartup Probleme bei MariaDB

Verfasst: 23. Dez 2025 02:25
von udo1toni
Ich bin mir ziemlich sicher, dass die von Dir gezeigte Konfiguration nichts bewirkt. Eine default.persist Datei gibt es nicht.

Die Persistence wird stattdessen pro Persistence Service definiert.
Der Strategies Block dient ausschließlich dazu, spezielle zeitliche Strategies zu definieren. Ein Bezug auf die zu verwendende Persistence wird hier nicht angegeben.
Stattdessen sollte es (als xtext Konfiguration) folgendermaßen aussehen:
Dateipfad: /etc/openhab/persistence/jdbc.persist

Code: Alles auswählen

Strategies {
    everyMinute   : "0 * * * * ?" // zur vollen Minute
}
Items {
    * : strategy = everyUpdate, restoreOnStartup
}
Die Strategy everyUpdate beinhaltet auch everyChange. Der Unterschied besteht darin, dass auch bei Updates ohne Wertänderung ein neuer Datensatz geschrieben wird.
Der Strategies Block ist in der aktuellen Version (OH5.x) nicht zwingend notwendig.
Die beste Variante (wenn Du den Rest eh über die UI einrichtest) wäre es, diese Konfiguration ebenfalls über die UI zu erledigen, das hilft, Fehler zu vermeiden.

Die Default Persistence kann ebenfalls konfiguriert werden, dies betrifft aber ausschließlich den Lesezugriff z.B. aus den Charts heraus, falls die Datenquelle nicht angegeben ist, wird die gesetzte Default Persistence verwendet. Wichtig ist aber, dass dort die Daten auch tatsächlich vorliegen :)

Es gab früher mal eine default Strategy, die gibt es meines Wissens aber nicht mehr. Außerdem bezog sich diese auch wieder nur auf den durch die Datei konfigurierten Persistence Service und dort nur auf die Vorgabe, welche Strategies verwendet werden sollten, wenn bei einem Item keine Strategy angegeben war.

Re: Restoreonstartup Probleme bei MariaDB

Verfasst: 23. Dez 2025 09:45
von mothabrain
Vielen Dank, Sie haben mir soeben weitere Stunden des Fehlersuchens erspart. :D
Das war die Lösung des Problems.
Die default.persist war wohl noch ein Überbleibsel aus einem alten Backup.

Re: Restoreonstartup Probleme bei MariaDB

Verfasst: 27. Dez 2025 17:27
von mothabrain
Hallo,

nun tritt ein weiteres Problem zur o.g. Thematik auf:

Die einzelnen Datenpunkte werden nicht mehr in der MainUI (Graphen) dargestellt, bzw. fortgeschrieben.
In der UI ist die jdbc als default persistence definiert.
Die auch installierte mapDB wird garnicht erst angezeigt und kann auch somit nicht selektiert werden.

Wie bekomme ich es hin in der UI hin, dass beides gleichzeitig geschrieben wird?

Re: Restoreonstartup Probleme bei MariaDB

Verfasst: 27. Dez 2025 18:19
von udo1toni
MapDB erzeugt pro Item nur exakt einen Datenpunkt. Deshalb ist MapDB gewöhnlich ausschließlich für restoreOnStartup und maximal noch zur Ermittlung des letzten Update/Änderungszeitpunkts nutzbar.
Für die Charts muss eine Datenbank eingerichtet sein, die Messwertreihen speichern kann. Dabei gilt es zu bedenken, dass Items, welche per everyChange gespeichert werden, eventuell auch über längere Zeiträume keinen Datenbankeintrag erzeugen. Hat ein darzustellendes Item weniger als zwei Datenpunkte innerhalb des dargestellten Zeitfensters, kann der Graph nicht erstellt werden. Es kann aber auch noch weitere Ursachen geben, die das Erstellen des Graphen verhindern. Aber selbst everyUpdate muss nicht zwingend zu mehr Datenpunkten führen.
Das ist einer der Gründe, warum rrd4j als Default Persistence angeboten wird. Man verliert über die Zeit keinen Speicherplatz (die Dateigröße bei rrd4j ist fix) und man hat keinerlei Aufwand, weil die rrd Engine direkt im Addon enthalten ist.

Ich nutze hier rrd4j, MapDB, jdbc und InfluxDB - Letzteres allerdings nur für die Grafana Anbindung. Dafür habe ich dort aber noch andere - von openHAB unabhängige Metriken hinterlegt. Zugegen, mit meinem Server ist Speicherplatz eher ein theoretisches Problem, aber tatsächlich ist die Datenmenge sehr überschaubar.

Re: Restoreonstartup Probleme bei MariaDB

Verfasst: 27. Dez 2025 20:12
von mothabrain
Danke für einen weiteren sehr hilfreichen Tipp.

Die Umstellung auf rrd4j habe ich erfolgreich hinbekommen.
Somit läuft es nun wie gewünscht, die Graphen werden wieder angezeigt.

Ich hatte bereits in Ihrer Signatur gesehen, dass Sie einiges an Daten vorhalten können ;)