Persistence Verständniss ...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

EmptySoft
Beiträge: 188
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Persistence Verständniss ...

Beitrag von EmptySoft »

thomas_w hat geschrieben: 2. Jul 2020 17:01 Eventuell wird der "Schaltknopf" zur Auswahl der Stunden, Tages Wochen Grafik auch gleich mit gespeichert. Wenn er zur Gruppe* gehört
den Auswahlknopf speichere ich aber in der mapdb Persistence, von dem brauche ich keine History, nur den letzten Zustand
BYe
Harald

thomas_w

Re: Persistence Verständniss ...

Beitrag von thomas_w »

EmptySoft hat geschrieben: 3. Jul 2020 08:29 den Auswahlknopf speichere ich aber in der mapdb Persistence, von dem brauche ich keine History, nur den letzten Zustand
Stimmt, wenn Du nur den letzten Zustand die merken willst, ist das der richtige Weg, soweit ich es verstanden habe. Mit der mapdb Persistence wird immer nur der letzte Wert eines Items gespeichert.

Im Thread ging es darum, den Zeitpunkt des Schaltens zu protokollieren.

Grüße
Thomas

thomas_w

Re: Persistence Verständniss ...

Beitrag von thomas_w »

..so hier meine rein visueller Vorschlag für ein Schaltprotokoll. Ohne jede Rules. Also ein bißchen auf die Schnelle und bestimmt mit Angängerfehlern drin.. :roll: Schau mer mal...

schaltprotokoll2.JPG

Ausgangspunkt ist folgende in der sitemap
schaltprotokoll1.JPG

.sitemap (ausschnitt)

Code: Alles auswählen

            Text label="Schaltprotokoll" icon="switch" {
                Switch item=itemLampe1 label="Schalter Lampe 1" mappings=[1="On", 0="Off"] 
                Switch item=itemLampe2 label="Schalter Lampe 2" mappings=[1="On", 0="Off"] 
                Switch item=ItemSchaltProtokoll label="Zeiteinheit" icon="switch" mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Jahr"]
                Chart item=gSchaltProtokoll service="rrd4j" period=h refresh=7200 visibility=[ItemSchaltProtokoll==0, ItemSchaltProtokoll=="Uninitialized"]
                Chart item=gSchaltProtokoll service="rrd4j" period=D refresh=14400 visibility=[ItemSchaltProtokoll==1]
                Chart item=gSchaltProtokoll service="rrd4j" period=W refresh=14400 visibility=[ItemSchaltProtokoll==2]
                Chart item=gSchaltProtokoll service="rrd4j" period=Y refresh=14400 visibility=[ItemSchaltProtokoll==3]
            }
schalter.items

Code: Alles auswählen

// Items Schalterprotokollierung
// Stand 04.07.2020
Group gSchaltProtokoll "Schalterprotokoll" <switch> 
Number ItemSchaltProtokoll "switch chart" 

// Schalter Items 0=Off 1=On
Number itemLampe1 "Lampe 1" <lightbulb> (gSchaltProtokoll) 
Number itemLampe2 "Lampe 2" <lightbulb> (gSchaltProtokoll) 
rrd4j.persistens (nur gSchaltProtokoll* ist relevant für das Beispiel)

Code: Alles auswählen

// 
// 11.06.2020 + 04.07.2020
Strategies {
        everyMinute : "0 * * * * ?"
        everyHour   : "0 0 * * * ?"
        everyDay    : "0 0 0 * * ?"
        default = everyChange
}

Items {
        gOpenWeatherGrafikTemperatur* : strategy = everyUpdate, everyMinute, restoreOnStartup
        gSchaltProtokoll* : strategy = everyUpdate, everyMinute, restoreOnStartup
}
Bei mir läuft es jetzt so seit einer Stunde. Ich habe die Erfahrung gemacht, dass nach einem Reboot von OpenHAB manches plötzlich anders läuft oder aussieht als vorher. Zum Beispiel die zweite "1" neben der Lampe 1 ist nicht jetzt mehr in den Items, aber zum Anfang. Keine Ahnung wo das jetzt herkommt.
Den Reboot habe ich noch nicht getestet.

So, ich hoffe, das Beispiel hilft einen Schritt weiter...

Danke und Grüße
Thomas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: Persistence Verständniss ...

Beitrag von Steinspiel »

Moin,
thomas_w hat geschrieben: 4. Jul 2020 12:40 ..so hier meine rein visueller Vorschlag für ein Schaltprotokoll.
[...]
Erst einmal vielen Dank! Ich habe Deine Vorlage etwas angepasst und in meine Sitemap integriert. Funktioniert! :-)

Ist noch nicht so aussagekräftig wie ich es mir Vorgestellt hatte (Balkendiagram) aber vieleicht ist das mit OH auch gar nicht möglich und man müsste Grafana installieren...
Das die vertikale Anzeige immer mal mit Kommastellen angezeigt wird gefällt mir auch noch nicht, aber das ist erst einmal egal. Ich sammel Daten und habe einen funktionierenden Grundstock zum Ausprobieren!

Bild

Eines habe ich noch: wenn ich Deine Items (also die Gruppen und so) in meine *.items kopiere funktioniert das ganze überhaupt nicht!
Ich muss die Items + Gruppen in eine seperate *.items speichern!
Kannst Du Dir vorstellen was der Grund dafür sein könnte?

Noch mal Danke und einen schönen Sonntag
bis dann, Steinspiel

thomas_w

Re: Persistence Verständniss ...

Beitrag von thomas_w »

Steinspiel hat geschrieben: 5. Jul 2020 14:39 Erst einmal vielen Dank! Ich habe Deine Vorlage etwas angepasst und in meine Sitemap integriert. Funktioniert! :-)

Ist noch nicht so aussagekräftig wie ich es mir Vorgestellt hatte (Balkendiagram) aber vieleicht ist das mit OH auch gar nicht möglich und man müsste Grafana installieren...
Das die vertikale Anzeige immer mal mit Kommastellen angezeigt wird gefällt mir auch noch nicht, aber das ist erst einmal egal. Ich sammel Daten und habe einen funktionierenden Grundstock zum Ausprobieren!

Eines habe ich noch: wenn ich Deine Items (also die Gruppen und so) in meine *.items kopiere funktioniert das ganze überhaupt nicht!
Ich muss die Items + Gruppen in eine seperate *.items speichern!
Kannst Du Dir vorstellen was der Grund dafür sein könnte?
Schön das es funktioniert.

Wieso meine Items nicht einfach in Deine .items Datei kopiert werden können verstehe ich auch nicht. Vielleicht hat es etwas mit der internen Aktualisierung von OH und caching zu tun. Änderung werden nicht (schnell) erkannt, neue Dateien schon. Ist aber nur eine Idee meinerseits.

Beim OH Chart hat man nicht viele Einflussmöglichkeiten auf die Darstellung. Da wird gerne auf https://community.openhab.org/t/influxd ... hing/13761 verwiesen. Damit habe ich seither keine eigene Erfahrung.

Der rrd4j speichert ja pro Schaltvorgang, also bei einer Änderung (meiner Vorstellung nach): Timestamp, Itemname, NumerischerWert
Um ein echtes Balkendiagramm zu erzeugen müßte rrd4j jeden Wert jede Minute speichern, auch wenn er sich nicht ändert. Keine Ahnung ob das irgendwie klappt.

Wie hast Du denn die "laufen Bilder" erzeugt? GIF Grafiken?

Grüße
Thomas

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

Re: Persistence Verständniss ...

Beitrag von udo1toni »

Erst mal muss rrd4j den Wert minütlich speichern, damit der Graph überhaupt gezeichnet wird (everyMinute ist bei rrd4j + Graph zwingend)
Die Graphen lassen sich tatsächlich nur rudimentär konfigurieren, mit Grafana hat man derlei Einschränkungen nicht. Grafana kann seinerseits aber nicht auf rrd4j zugreifen, also müssen die Daten in anderer Form bereitgestellt werden. influxDB war anfangs (~2013) die einzige Möglichkeit dazu, inzwischen kann Grafana aber auch mit SQL umgehen, also z.B. MySQL oder MariaDB als Datenquelle verwenden.
Nur so als Denkanstoß, manchmal läuft sowas ja schon irgendwo...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: Persistence Verständniss ...

Beitrag von Steinspiel »

Moin,
thomas_w hat geschrieben: 5. Jul 2020 15:19 [...]
Wieso meine Items nicht einfach in Deine .items Datei kopiert werden können verstehe ich auch nicht.
[...]
Ich habe lange probiert und glaube das Problem jetzt behoben zu haben: Deine Gruppe

Code: Alles auswählen

Group gSchaltProtokoll "Schalterprotokoll" <switch> 
Habe ich in meiner *.items nach unten gesetzt, also nach Deinem/meinem/unseren Items. Meine Gruppen standen bisher auch am Ende der Datei, deshalb habe ich mir nichts dabei gedacht...
Egal, ich habe alle Gruppen an den Anfang der Datei (vor all diesen virtuellen Switch`s und Number`s)geschoben, OH erneut gebootet und siehe da... :-)
Beim OH Chart hat man nicht viele Einflussmöglichkeiten auf die Darstellung
Ich habe noch etwas rumgeschaut und wie @udo1toni schon sagte scheinen die Möglichkeiten bei rrd4j + OH begrenzt.
Inzwischen habe ich ein paar Sachen gelesen über Grafan und influxDB . Das ist dann aber wieder ne ganze andere Hausnummer, na mal sehen.
Wie hast Du denn die "laufen Bilder" erzeugt? GIF Grafiken?
Genau, den Bildschirm aufgenommen, etwas rumgeschnippelt in der Aufnahme, das ganze als *.mp4 ausgegeben und es mit https://instagiffer.com/ zu nem animated Gif gemacht. Ohne viel Faxen ne schnelle Nummer! ;-)
bis dann, Steinspiel

thomas_w

Re: Persistence Verständniss ...

Beitrag von thomas_w »

Steinspiel hat geschrieben: 5. Jul 2020 18:49 Genau, den Bildschirm aufgenommen, etwas rumgeschnippelt in der Aufnahme, das ganze als *.mp4 ausgegeben und es mit [url]https://instagiffer.com
Lustige Idee, wobei es auf die dauer nervt. Wenn man irgendwie noch "start" und "stop" machen könnte, wäre es klasse.

Ja, zu rrd4j fehlt mir eine mir verständliche Doku https://www.openhab.org/addons/persistence/rrd4j/ Das ganze kommt mir wie eine Blackbox vor. Ich bin eigentlich ansonsten mit SQL Datenbanken ganz gut unterwegs, aber bei rrd4j geht irgendwie alles von alleine, aber nur das was vorgesehen ist.

Grüße
Thomas

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

Re: Persistence Verständniss ...

Beitrag von udo1toni »

rrd4j ist eigentlich ganz gut dokumentiert, nur halt nicht in der openHAB Doku. rrd4j ist eine allgemein verwendete Datenbank Engine.
Dabei steht rrd für RoundRobin Database und das 4j für for Java.
RoundRobin bedeutet, dass die Werte rollierend gespeichert werden.
Dabei gibt es verschiedene Stufen der (zeitlichen) Auflösung. In jeder Auflösung kann eine bestimmte Menge an Datensätzen gespeichert werden, wenn mehr Datensätze vorliegen, bildet rrd automatisch Mittelwerte und speichert nur diesen Mittelwert. Das gleiche passiert, wenn eine Auflösungsstufe überschritten wird. Wenn also z.B. die Daten in Minutenauflösung vorliegen, die nächste Stufe aber nur 10-Minutenauflösung bietet, nimmt rrd alle 10 Minuten die ältesten 10 1-Minuten Werte, bildet den Mittelwert und speichert ihn in der nächsten Stufe. Danach löscht es die zehn Werte.
In der gröbsten Auflösung werden die ältesten Werte jeweils gelöscht, wenn "neue" Werte in der gröbsten Auflösung gespeichert werden.
Je weiter in der Vergangenheit die Werte liegen, umso geringer ist die Auflösung. Für das Erstellen von Grafiken, die immer einen Zeitabschnitt bis zur Gegenwart darstellen, ist diese Form der Speicherung ideal, denn die Größe der Dateien ändert sich niemals.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: Persistence Verständniss ...

Beitrag von Steinspiel »

Moin,
thomas_w hat geschrieben: 5. Jul 2020 20:01 [animated gif]
Lustige Idee, wobei es auf die dauer nervt. Wenn man irgendwie noch "start" und "stop" machen könnte, wäre es klasse.
Gibt bestimmt Mecker weil es ja nicht hier her gehört, aber es gibt Foren wo in den Threads Videos verschiedener Plattformen eingebunden werden können. Die laufen dann in nem kleinen Fenster mit PAUSE Funktion usw und man kann direkt zur Plattform wechseln wenn man das ganze größer sehen möchte. So schlecht ist das nicht...
Ansonsten gibt es wohl Browser Add On`s zum stoppen von GIF`s bzw. bei Firefox die ESC Taste... Das war es jetzt aber auch dazu! ;-)

Ich suche jetzt erst mal Grafana Tutorials...
bis dann, Steinspiel

Antworten