Mit openHAB Daten aus einer MySQL DB darstellen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Elton
Beiträge: 3
Registriert: 18. Mär 2023 12:01
Answers: 0

Mit openHAB Daten aus einer MySQL DB darstellen

Beitrag von Elton »

Hallo Community, :)

Ich speichere derzeit Wetterdaten mit mehreren ESP8266 in eine MySQL-Datenbank. Dazu habe ich eine Homepage und Grafiken erstellt. Jetzt möchte ich das Ganze in openHAB einbinden, stehe aber leider schon komplett an. Ich kann auf die Datenbank zugreifen und meine jdbc.cfg sieht wie folgt aus:

Code: Alles auswählen

url=jdbc:mysql://192.168.178.34:3306/esp_wetter?serverTimezone=Europe/Berlin
user=esp2
password=***
Die Datenbank im log:

Code: Alles auswählen

[DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
[DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
[INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
[DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::setDbConnected true
[DEBUG] [stence.jdbc.internal.db.JdbcMysqlDAO] - JDBC::initAfterFirstDbConnection: Initializing step, after db is connected.
[DEBUG] [tence.jdbc.internal.utils.DbMetaData] - dbMajorVersion = '8'
[DEBUG] [tence.jdbc.internal.utils.DbMetaData] - dbMinorVersion = '0'
[DEBUG] [tence.jdbc.internal.utils.DbMetaData] - driverMajorVersion = '8'
[DEBUG] [tence.jdbc.internal.utils.DbMetaData] - driverMinorVersion = '0'
[DEBUG] [tence.jdbc.internal.utils.DbMetaData] - dbProductName = 'MySQL'
[DEBUG] [tence.jdbc.internal.utils.DbMetaData] - dbProductVersion = '8.0.32-0ubuntu0.22.04.2'
Jetzt möchte ich ein Item erstellen, das den letzten Wert aus der Datenbank holt. Ich probiere das so:

Code: Alles auswählen

Number TempTest "Current Temperature [%.1f °C]" {jdbc="<[jdbc:${jdbc:url}?user=${jdbc:user}&password=${jdbc:password}:SELECT value1 FROM bastelzimmer ORDER BY rowid DESC LIMIT 1;:60000:jdbc.cfg]"}

Code: Alles auswählen

[DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
[DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
[DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
[WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::query: database not connected, query aborted for item 'TempTest'
Wieso kann er sich jetzt nicht mit der Datenbank verbinden, obwohl es beim Start von openHAB funktioniert? Danke für eure Hilfe! :)

Liebe Grüsse
von udo1toni » 19. Mär 2023 20:59
Du kannst auch Grafana Charts in openHAB einblenden :) und Du hast sogar zwei verschiedene Optionen hierfür, entweder embedded oder als Grafik :)

Wenn openHAB die Daten selbst in die Datenbank geschrieben hat, kann openHAB natürlich auch vollständig auf diese Daten zugreifen und eigene Charts erzeugen (aber openHAB ist eben kein Chart Spezialist, da geht nur ein kleiner Bruchteil von dem, was bei Grafana geht.

Als Datenbank ist übrigens InfluxDB empfehlenswert. InfluxDB ist darauf spezialisiert, Time Series zu speichern, also genau das, was man für die Charts braucht. "Spezialisiert" bedeutet vor allem Effizienz, hohe Leistung bei minimalem Speicherbedarf und Prozessorlast.
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mit openHAB Daten aus einer MySQL DB darstellen

Beitrag von udo1toni »

So funktioniert openHAB nicht :)
Die Anbindung einer Datenbank dient ausschließlich der Persistence, also dem Erhalt von Zuständen, die openHAB dafür in der Datenbank abspeichert.
Du möchtest aber auf Daten zugreifen, die openHAB nicht selbst in die Datenbank gespeichert hat.

Es wäre natürlich möglich, die Tabellen der Datenbank so aufzubereiten, dass Du aus openHAB heraus darauf zugreifen kannst, aber der Aufwand dürfte nicht ganz unerheblich sein. Und openHAB ist nicht gut dazu geeignet, Daten grafisch aufzubereiten, das ist einfach nicht die Aufgabe von openHAB (also, man kann schon Charts bekommen, aber es wäre sinnvoller, ein anderes Tool dafür zu nutzen).

Schau Dir mal Grafana an, das kann schon seit Jahren ohne Probleme auch auf MySQL Datenbanken zugreifen. Grafana ist darauf spezialisiert, Daten grafisch aufzubereiten.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Elton
Beiträge: 3
Registriert: 18. Mär 2023 12:01
Answers: 0

Re: Mit openHAB Daten aus einer MySQL DB darstellen

Beitrag von Elton »

"Danke dir. Ich habe noch nie von Grafana gehört, aber ich habe es gerade installiert und die ersten Charts mit HabPanel erstellt. Es sieht super aus :) Ich werde es auch auf meiner Homepage einbinden. :D


Bild

Bei openHAB selbst kann man keine direkten Charts anzeigen lassen, aber man könnte den letzten aktuellen Wert einfach als Zahl anzeigen lassen, oder?

Wie würdest du am besten vorgehen?

Nochmals danke für die Hilfe. :)

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mit openHAB Daten aus einer MySQL DB darstellen

Beitrag von udo1toni »

Du kannst auch Grafana Charts in openHAB einblenden :) und Du hast sogar zwei verschiedene Optionen hierfür, entweder embedded oder als Grafik :)

Wenn openHAB die Daten selbst in die Datenbank geschrieben hat, kann openHAB natürlich auch vollständig auf diese Daten zugreifen und eigene Charts erzeugen (aber openHAB ist eben kein Chart Spezialist, da geht nur ein kleiner Bruchteil von dem, was bei Grafana geht.

Als Datenbank ist übrigens InfluxDB empfehlenswert. InfluxDB ist darauf spezialisiert, Time Series zu speichern, also genau das, was man für die Charts braucht. "Spezialisiert" bedeutet vor allem Effizienz, hohe Leistung bei minimalem Speicherbedarf und Prozessorlast.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Elton
Beiträge: 3
Registriert: 18. Mär 2023 12:01
Answers: 0

Re: Mit openHAB Daten aus einer MySQL DB darstellen

Beitrag von Elton »

Du merkst ich muss mich noch in die ganze Materie einarbeiten. :D wir können den Thread als gelöst markieren.

Sieht doch schon super aus. :P

Bild


Danke dir :!:

Antworten