Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
prinzipal
Beiträge: 8
Registriert: 22. Dez 2019 14:48
Answers: 0

Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von prinzipal »

Hallo zusammen,

nachdem ich jetzt im Netz seit einigen Tagen nach dem richtigen Input gesucht habe und auch hier im Forum einiges gelesen und ausprobiert habe, hoffe ich jetzt auf Hilfe bzw. Denkanstöße für die richtige Richtung...

Nachdem seit mehr als fünf Jahren ein openhab2 System auf einem Raspi seinen Dienst versieht, kam die Zeit und das Interesse sich das neue openhab5 system näher anzuschauen.

Hierzu wurde ein kleiner Intel nuc angeschafft uund ein proxmox-System installiert. (ebeneso ein Interessensgebiet ;) )

Die anschliessende Installation von openhab5 verlief problemlos, aber es hat etwas gedauert, bis ich mit der neuen Bedienung warm geworden bin bzw. ich bin immer noch dabei, das System kennenzulernen.

Pages mit Liniendiagrammen von Wetterstationen aus einigen Berufsschulen in Europa habe ich bereits erstellt!
Sehr zur Freude meiner Kolleginnen und Kollegen aus dem Ausland!

Hier zuhause werkeln hauptsächlich Homematic-Komponenten und einige Systeme, die ihre per MQTT versenden, wie beschriebene Wetterstationen!

Jetzt möchte ich mein SmartHome wieder in den Fokus rücken (Anschaffung eines Balkonkraftwerks) :D

Nun mchte ich die Messdaten wieder in eine Datenbank speichern und da ich bei dem ersten System mariadb verwendet habe, lag die Entscheidung nahe, dass nun auch wieder zu tun.

Hierzu habe ich in proxmox einen neuen lxc erstellt und mariadb installiert. (Beide Systeme bekommen von der Fritzbox feste IPs zugewiesen.)

In mariadb habe ich eine Datenbank mit Namen: openhab angelegt und einen User mittels

create user 'openhab'@'IP_ADRESSE_LXC_OPENHAB' identified by 'passwort';

ebenso die Rechte mittels

grant all privileges on openhab.* to 'openhab'@'IP_ADRESSE_LXC_OPENHAB' identified by 'passwort';
flush privileges;


angepasse! (hoffentlich)

Desweiteren in der mariadb-Installation die in

/etc/mysql/my.cnf

den Port 3306 aktiviert (Entfernen des #-Zeichens) und in der

/etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 0.0.0.0


eingetragen!

Beide Systeme neu gestartet.

In openhab das JDBC Persistence (MariaDB) Addon installiert und unter Datenbank-URL:

jdbc:mariadb://IP_ADRESSE_LXC_MARIADB:3306/openhab

eingetragen.

Ebenso Benutzername und Passwort eingegebenen.

Für die Art des Speicherns eine Textdatei jdbc.persist unter persistence gespeichert. (Mit der Konfiguration über das MainUI komme ich noch nicht klar!)

Code: Alles auswählen

// persistence strategies have a name and a definition and are referred to in the "Items" section
 
Strategies {
  everyMinute : "0 * * * * ?"
  every5Minutes : "0 0/5 * * * ?"
  everyHour : "0 0 * * * ?"
  everyDay : "0 0 0 * * ?"
  default = everyChange
}
 
Items {
 //ein Item wird jede Minute persistiert:
 
    * : strategy = everyMinute, everyChange, restoreOnStartup
}
Wenn ich mir nun Werte auf einer Page anzeigen lassen möchte, dann bekomme ich immer nur den aktuellsten Wert, aber nicht mehr!

Mittlerweile glaube ich, dass eine Verknüpfung stattgefunden hat, da in der Tabelle der Datenbank mehrere itemXX angezeigt werden.

Wieso bekomme ich aber nur immer den aktuellsten Wert angezeigt? Wird nicht auf die Datenbank zugegriffen? :?: :oops:

Im LogViewer sehe ich überhaupt nicht von einem Datenbankzugriff oder ähnlichem :(

In welcher Richtung kann ich noch suchen bzw. welche Einstellungen noch überprüfen?

Vielen Dank und vorab schöne Feiertage
Martin

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

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von udo1toni »

Vermutlich wirst Du die default Persistence noch nicht auf jdbc geändert haben.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

prinzipal
Beiträge: 8
Registriert: 22. Dez 2019 14:48
Answers: 0

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von prinzipal »

Guten Moren Udo,

danke für deinen Hinweis. Ich hatte in den General Settings JDBC als Standard Service ausgewählt.

Dies hatte ich heute Morgen noch einmal wiederholt und das openhab-System über proxomox rebootet.

Nun erhalte ich in den Pages auch entsprechende grafische Darstellungen :) , wobei ich hierbei noch ein wenig zweifels.

Wenn ich mir die 2 Tages Ansicht anschaue, dann kann ich daran erkennen, dass das System auch gestern schon Werte persistiert hat.
Messwerte 2 Tages Ansicht.JPG
Ok, dass passt, da ich gestern schon daran gearbeitet habe.

Wenn ich nun im Intervall tiefer reinzoome (12 h), ...
Messwerte 12 Stunden Ansicht.JPG
dann wird erscheinen mir die Übertragungen bzw. Speicherungen doch recht grob zu sein. Sicherlich ist zu berücksichtigen, wann und wie die Sensoren senden.

Zoome ich noch tiefer hinein (1h), ...
Messwerte 1 Stunden Ansicht.JPG
dann erscheinen nur noch Geraden ohne scheinbare Messpunkte. Ich bin mir sicher, dass die Homemticsensoren häufiger messen und senden.

Dasselbe Verhalten habe ich auch bei Komponenten die ihre Werte über MQTT senden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

prinzipal
Beiträge: 8
Registriert: 22. Dez 2019 14:48
Answers: 0

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von prinzipal »

MQTT Messwerte 2 Tages Ansicht.JPG
MQTT Messwerte 1 Stunden Ansicht.JPG
Erst bei einer Auswahl von 4h in den pages erhalte sinnvolle Grafiken. Bei 1h bzw. 2h erhlate ich nur die durchgehende Liniendarstellung.

Das finde ich doch reckt merkwürdig :?:

Aber ich lasse das System erstmal so weiter laufen.

Viele Grüße
Martin
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von udo1toni »

Kannst Du bitte noch die Zeile

Code: Alles auswählen

default = everyChange
aus den Strategies entfernen? Diese Definition gibt es seit openHAB 5.1.x nicht mehr. Es sollte auch im Log eine entsprechende Fehlermeldung auftauchen.

Grundsätzlich sollten mit Deiner Konfiguration alle Items minütlich persistiert werden, sodass ein Stunden-Chart mindestens 60 Messwerte abbilden müsste. Falls der Sensor nur einmal pro Stunde einen Messwert liefert, hättest Du dann keine flache Schräge, sondern zwei Horizontalen, verbunden mit einer sehr steilen Schrägen. Ich nutze für die Charts rrd4j (das macht dafür am wenigsten Ärger...) und sichere in jdbc tatsächlich nur mittels everyChange. Warum die minütliche Auflösung nicht funktinoiert, kann ich mir nicht erklären, außer evtl, dass zu viele Items persistiert werden müssen (Du hast ja einfach für alle Items definiert, dass sie minütlich persistiert werden sollen, alle zum exakt gleichen Zeitpunkt).
ein möglicher Ausweg wäre, verschiedene Zeitpunkte für Itemgruppen festzulegen, so dass es z.B. mehrere minütliche Strategies gäbe, die sich dann jeweils nur um einen Teil der Items kümmern:

Code: Alles auswählen

// persistence strategies have a name and a definition and are referred to in the "Items" section
 
Strategies {
  everyMinute : "0 * * * * ?"
  everyMinute15 : "15 * * * * ?"
  everyMinute30 : "30 * * * * ?"
  everyMinute45 : "45 * * * * ?"
  every5Minutes : "0 0/5 * * * ?"
  everyHour : "0 0 * * * ?"
  everyDay : "0 0 0 * * ?"
 
 
Items {
 //ein Item wird jede Minute persistiert:
 
    * : strategy = everyChange, restoreOnStartup
    itemGroup1* : strategy = everyMinute
    itemGroup2* : strategy = everyMinute15
    itemGroup3* : strategy = everyMinute30
    itemGroup4* : strategy = everyMinute45
}
Du musst dann nur noch die Items sinnvoll gleichmäßig auf die vier Groups verteilen und reduzierst damit die Last zur vollen Minute.

Ansonsten kann ich InfluxDB empfehlen, welches gewöhnlich ähnlich wie rrd4j speichert (älteste Werte werden jeweils gelöscht), allerdings mit einer Retention, die normalerweise auf 1 Jahr eingestellt ist, bei voller Genauigkeit. Man kann innerhalb InfluxDB automatisch Daten zusammenfassen lassen (nutze ich selbst aber nicht) womit man dann auch wesentlich längere Zeiträume mit erträglichem Speicherbedarf abdecken kann. InfluxDB ist eine auf zeitbasierte Datenreihen optimierte Datenbank. Als mächtiges grafisches Frontend kann man dann Grafana nutzen, um maximale Flexibilität bei der Visualisierung zu erreichen. Beide Komponenten lassen sich bequem als separate Container (LXC, Docker...) installieren, auf Wunsch kann man auch Grafana Ansichten dynamisch in openHAB einbinden. Beide Pakete stehen in einer kostenlosen Version zur Verfügung.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

prinzipal
Beiträge: 8
Registriert: 22. Dez 2019 14:48
Answers: 0

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von prinzipal »

Hallo Udo,

die default-Anweisung ist gelöscht! :D

die Ideen mit den Gruppen werde ich so umsetzen, muss mal schauen, welche items ich wirklich benötige.
Hierzu werde ich noch entsprechende Gruppen anlegen.

Bei der 5-Version und der MainUI muss ich nochmal schauen, wie man Gruppen anlegt!

Früher war es textbasiert. Ok, viel Schreibarbeit, aber es gab nur eine Quelle. Wenn ich es richtig verstehe kann man bei der openhab5-Version sowohl textbasiert arbeiten, wie auch in der MainUI zusammenklicken.

Angenommen, ich habe für eine Sache z.B. eine persistence, beides eine .persist-Datei und Angaben in MainUI; welche Angaben werden vom openhab-System genommen? Gibt es einen Vorrang? :?:

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

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von udo1toni »

Grundsätzlich war openHAB1 die einzige rein textbasierte Variante. Seit openHAB2 wurden Stück für Stück alle Bereiche für die Konfiguration über die UI erschlossen, es ist aber nach wie vor möglich, das System (fast) vollständig über Textdateien zu konfigurieren. Fast deshalb, weil die Main UI als Oberfläche davon ausgenommen ist. Solange man diese nicht verwendet, kann man ohne Einschränkungen alles wie gewohnt über die altbekannten Textdateien erledigen.
Wenn man über Textdateien konfiguriert, sind alle dort vorgenommenen Einstellungen "read-only", d.h. man wird alle Einstellungen in der Main UI vorfinden, aber es ist jeweils ein Schloss abgebildet. Sobald man eine *.persist Datei anlegt, kann man über die Main UI für den zugehörigen Persistence Service keine Einstellungen mehr vornehmen.
Es ist natürlich möglich, zuerst in der UI zu konfigurieren, und anschließend eine passende persist-Datei anzulegen, das ist aber keine gute Idee ;)
Die wichtigsten Konfigurationen können außerdem bequem aus der Main UI heraus sowohl im DSL-Format als auch als yaml exportiert werden, so dass man die verschiedenen Konfigurationen in das jeweils andere Format überführen kann.

Vorteil der DSL Konfiguration (/etc/openhab/*): bekanntes Textformat, vergleichsweise leicht lesbar ohne allzuviel Platz zu benötigen.
Vorteil der UI Konfiguration: man kann direkt über die UI arbeiten, viele Dinge lassen sich "automatisch" konfigurieren und alle möglichen Parameter werden über die UI zumindest angeboten, an vielen Stellen auch mit Hilfstexten oder eingeschränkter Auswahl (weniger fehlerträchtig).
Vorteil der yaml Konfiguration: Man kann Things/Channel und zugehörige Items in einer einzigen Datei definieren (nach dem Export die einzelnen yaml Dateien zusammenführen)

Wie schon immer gilt, dass die UIDs nicht nachträglich geändert werden können (bei den Items der Itemname). Das gilt im Prinzip auch für die Textkonfiguration, ändert man dort UID oder Itemname, so wird die alte UID gelöscht und die neue UID angelegt. Der Unterschied ist z.B. bei den Items mit der Persistence gut sichtbar, weil die bestehenden Daten beim Ändern des Itemnamens verloren gehen. Auch sämtliche anderen Bezüge (Rules usw.) müssen händisch angepasst werden. In der Main UI kann man lediglich den yaml Code in die Zwischenablage übernehmen, ein neues Item/Thing/... anlegen und den yaml Code dort einfügen.

Beide Optionen haben Vor- und Nachteile. Ein rein über die UI konfiguriertes System kann bei Updates triviale Anpassungen automatisch vornehmen, bei der Text-Variante muss der Administrator alles selbst anpassen, weil openHAB im conf-Zweig (/etc/openhab/...) niemals schreibend zugreift.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

prinzipal
Beiträge: 8
Registriert: 22. Dez 2019 14:48
Answers: 0

Re: Probleme mit openhab5 und einer mariadb in zwei lxc-Containern bzw. das Anzeigen der Messwerte

Beitrag von prinzipal »

Vielen Dank für die ausführliche Antwort :)
Das hilft mir auf jeden für das Verständnis des Systems weiter.

Ich werde mich mal weiter mit den Neuerungen des Systems (Pages, Dashboards, ...) auseinandersetzen.

Irgendwann soll es mal das alte 2.5 System ablösen, da das immer wieder mal Ausfallerscheinungen zeigt.

Antworten