openHAB 5 Persistence - Datenbankanbindung
Um Item Werte zu statistischen Zwecken langfristig zu speichern bietet openHAB 5 eine Datenbank Anbindung an. In openHAB wird diese Technik unter dem Namen Persistence geführt. Die offizielle Dokumentation ist in englischer Sprache hier zu finden.Zuerst muss man sich für eine Datenbank entscheiden. In der openHAB Administration sind im Add-on Store unter Persistence mehrere Schnittstellen verfügbar. Bekannte Datenbanken sind z.B. mySQL oder MariaDB. Ich habe mich für MariaDB entschieden und den Persistence Service JDBC Persistence (MariaDB) installiert.
.png)
Der Datenbank Server kann auf einem beliebigen Device im lokalen Netzwerk installiert werden. Meine openHAB Instanz läuft auf einem Windows Computer und daher bietet es sich an, auch den MariaDB Server unter Windows zu installieren. Download MariaDB (Version 13.0 Stand 10/2026).
Bei der Installation des MariaDB Servers sollte ein Master Passwort (root password) definiert werden:

Der Datenbank Server sollte auch als Service im Hintergrund laufen und der Standard TCP Port 3306 übernommen werden:

Nach Abschluss der Installation ist in der Konfigurationsdatei des MariaDB Servers noch eine Ergänzung vorzunehmen. Dafür mit einem Editor die Datei my.ini öffnen, die sich bei der Standard Windows Installation unter C:\Program Files\MariaDB 13.0\data befindet. Im Abschnitt [mysqld] die Zeile bind-address = 0.0.0.0 ergänzen. Das sorgt dafür, dass der DB Server nicht nur lokal erreichbar ist. Damit die Konfigurationsänderung wirksam wird, muss der mariaDB Service neu gestartet werden. Dazu in Windows ein Eingabeaufforderung Fenster als Administrator öffnen.
net start mariadb
Anschließend wird noch ein Datenbank User angelegt, der von openHAB für das Speichern der Daten genutzt wir. Dazu in der Eingabeaufforderung bleiben:
mariadb.exe -u root -p
Mit dem oben vergebenen root Passwort anmelden und anschließend einen Datenbank User anlegen:
GRANT ALL PRIVILEGES ON *.* TO 'openhab'@'192.168.0.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Der Name des Datenbank Users kann frei gewählt werden. Bei mir heißt dieser openhab. ***** durch ein geeignetes Passwort ersetzen. Durch die Angabe der IP Adresse 192.168.0.% wird der Zugriff auf das lokale Netzwerk beschränkt und muss angepasst werden, sollte der Internet Router eine andere Netzwerk Adresse nutzen. Mit exit wird MariaDB verlassen und das Eingabeaufforderung Fenster kann geschlossen werden.
Für den Zugriff auf die MariaDB Datenbank wird ein Datenbank Client benötigt. Empfehlen kann ich den Open Source Datenbank Client HeidiSQL, der neben mariaDB auch andere Datenbanken unterstützt. Download. Stand 10/2026 steht die Version 12.22.0.7382 zur Verfügung. Nach Installation von HeidiSQL diesen Datenbank Client starten und die Verbindung zur mariaDB Datenbank herstellen. Nach Klick auf Neu werden folgende Angaben benötigt:

Unter Hostname / IP die IP Adresse des Computers eintragen, auf dem die mariaDB Datenbank läuft. Weiterhin werden der Benutzername (bei mir openhab) und das dazugehörige Passwort benötigt. Sollte bei der Installation des mariaDB Datenbankservers der TCP Port geändert worden sein, muss dieser angepasst werden. Nach Klick auf Speichern kann direkt auf die Datenbank zugegriffen werden. Als letzter Schritt muss noch eine Datenbank angelegt werden, damit openHAB Daten speichern kann. Die Datenbank heißt bei mir ebenfalls openhab. Tabellen müssen nicht angelegt werden. Das übernimmt openHAB!
in der openHAB 5 Administrationsoberfläche müssen noch zwei Einstellungen vorgenommen werden.
Administration > Einstellungen > JDBC Persistence (MariaDB) (im Abschnitt Add-on Settings)
Datenbank-URL: jdbc:mariadb://192.168.0.xxx:3306/openhab
Die IP Adresse des mariaDB Datenbank Servers entsprechend anpassen, ebenfalls den Port - sollte er geändert worden sein. Nach dem Schrägstrich folgt der Name der Datenbank (hier: openhab).
Jetzt noch den Datenbank Benutzer und das dazugehörige Passwort eintragen und die Konfiguration speichern.

openHAB unterstützt mehrere Datenbank Schnittstellen. Die Standard Schnittstelle sollte jetzt noch festgelegt werden:
Administration > Einstellungen > Persistence (im Abschnitt Configuration)

Damit jetzt openHAB Daten speichert, muss noch eine Konfigurationsdatei in openHAB erstellt werden. Dazu zum Unterverzeichnis conf\persistence in der openHAB 5 Installation wechseln. Wurde noch keine Datenbank Schnittstelle konfiguriert, befindet sich in diesem Ordner nur eine Datei readme.txt. Mit einem Editor eine neue Datei mit dem Namen jdbc.persist erstellen und mit folgendem Inhalt füllen:
everyMinute : "0 * * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
}
Items {
Bad_Steckdose_Gesamtverbrauch : strategy = everyHour
NetatmoOutdoor_Aussentemperatur : strategy = everyHour
OuterDoorKeller_Balkon_Contact : strategy = everyChange
}
Die Einträge im Bereich Strategies legen Cron Ausdrücke fest, die definieren, wie oft die Daten gespeichert werden (jede Minute, jede Stunde, jeden Tag). Darüber hinaus gibt es einige vordefinierte Strategies, z.B. everyChange.
Die Einträge in Items sind nur examplarisch zu sehen. In diesem Beispiel sollen Werte von drei Items in die Datenbank geschrieben werden. Die beiden Items Bad_Steckdose_Gesamtverbrauch und NetatmoOutdoor_Aussentemperatur stündlich, das Item OuterDoorKeller_Balkon_Contact nur, wenn sich der Status geändert worden ist (also wenn die Türe geöffnet oder geschlossen worden ist).
Nach Speichern der jdbc.persist Datei empfiehlt es sich den openHAB Service neu zu starten.
Und was passiert in der Datenbank?
openHAB legt eine Tabelle mit dem Namen items an. Für jedes in der jdbc.persist Datei enthaltene Item wird ein Datensatz mit zwei Feldern angelegt. Eine eindeutige ID ItemId und der Name des Items im Feld ItemName.

Die Werte von jedem Item werden in einer eigenen Tabelle mit dem Namen item0001, item0002, usw. gespeichert. Die Zahl in der Tabelle entspricht der eindeutigen in der Tabelle items.

In den Werte Tabellen gibt es ebenfalls nur zwei Felder. Ein Zeitstempel im Feld time (Datentyp TIMESTAMP, z.B. 2026-10-30 10:00:00.596) und einem Wert im Feld value (Datentyp DOUBLE, z.B. 57.091) bei Messwerten. Werden Schalterzustände gespeichert, ist das zweite Feld vom Datentyp VARCHAR und speichert z.B. OPEN oder CLOSED.
