Frage zur Persistence

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Frage zur Persistence

Beitrag von PeterA »

Wenn ich alle Mitglieder einer Gruppe persistiere, werden diese dann auch über die Gruppe bei einem Neustart mit dem
persistierten Wert gesetzt ?

Hier gehts um den den Eintrag:

Code: Alles auswählen

gShellys*                              : strategy = everyChange, restoreOnStartup
mapdb.persist

Code: Alles auswählen

Strategies {
default = everyChange
}
Items {
// Lüftungsanlage
    Lueftungstandby_off_last               : strategy = everyChange, restoreOnStartup
    Lueftungstandby_on_last                : strategy = everyChange, restoreOnStartup
    Filterwechsel_last                     : strategy = everyChange, restoreOnStartup
    Luefterstufe_0_last                    : strategy = everyChange, restoreOnStartup
    Luefterstufe_1_last                    : strategy = everyChange, restoreOnStartup
    Luefterstufe_2_last                    : strategy = everyChange, restoreOnStartup
    Luefterstufe_3_last                    : strategy = everyChange, restoreOnStartup
    LuefterStufe                           : strategy = everyChange, restoreOnStartup
    WAC350_Durchschnitt_Feuchte_Haus       : strategy = everyChange, restoreOnStartup
    WAC350_Durchschnitt_Feuchte_Haus_Zwang : strategy = everyChange, restoreOnStartup
    Lueftung_min_max_Temp                  : strategy = everyChange, restoreOnStartup
    Lueftung_Temperatur2                   : strategy = everyChange, restoreOnStartup
    Lueftung_Temperatur                    : strategy = everyChange, restoreOnStartup
    Lueftung_Feuchte                       : strategy = everyChange, restoreOnStartup
    Lueftung_Zeit                          : strategy = everyChange, restoreOnStartup
    Lueftung_Bad                           : strategy = everyChange, restoreOnStartup
    FanStandby_Switch                      : strategy = everyChange, restoreOnStartup
// Rolladen
    // Rolladen Westseite
    Rolloautomatik                         : strategy = everyChange, restoreOnStartup
    Rolloautomatik_oeffnen                 : strategy = everyChange, restoreOnStartup
    Rolloautomatik_azimuth_start           : strategy = everyChange, restoreOnStartup
    Rolloautomatik_elevation_ende          : strategy = everyChange, restoreOnStartup
    Rolloautomatik_temp_min                : strategy = everyChange, restoreOnStartup
    Rolloautomatik_wolken_max              : strategy = everyChange, restoreOnStartup
    Rolloautomatik_zielwert                : strategy = everyChange, restoreOnStartup
    Rolloautomatik_ende_last               : strategy = everyChange, restoreOnStartup
    Rolloautomatik_start_last              : strategy = everyChange, restoreOnStartup
    // Rolladen Suedseite
    Rolloautomatik_Sued                    : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_oeffnen            : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_azimuth_start      : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_elevation_ende     : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_temp_min           : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_wolken_max         : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_zielwert           : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_ende_last          : strategy = everyChange, restoreOnStartup
    Rolloautomatik_Sued_start_last         : strategy = everyChange, restoreOnStartup
// Astro
    DayTime                                : strategy = everyChange, restoreOnStartup
    NightTime                              : strategy = everyChange, restoreOnStartup
// WifiRGB
    WifiRGB408867Power                     : strategy = everyChange, restoreOnStartup
    WifiRGB408867brightness                : strategy = everyChange, restoreOnStartup
    WifiRGB408867Color                     : strategy = everyChange, restoreOnStartup
    WifiRGBDDC4B2Power                     : strategy = everyChange, restoreOnStartup
    WifiRGBDDC4B2brightness                : strategy = everyChange, restoreOnStartup
    WifiRGBDDC4B2Color                     : strategy = everyChange, restoreOnStartup
// Heimkino
    DenonInputAuto_to_IRP                  : strategy = everyChange, restoreOnStartup
// Charts
    gAllCharts*                            : strategy = everyChange, restoreOnStartup
    gALLChartsProxy                        : strategy = everyChange, restoreOnStartup
//System
    LogsetINFOLastexecution                : strategy = everyChange, restoreOnStartup
    LogsetWARNLastexecution                : strategy = everyChange, restoreOnStartup
//Shellys
    gShellys*                              : strategy = everyChange, restoreOnStartup
}
- OpenHab 2.4
#PWRUP

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Frage zur Persistence

Beitrag von peter-pan »

Ich würde sagen, ja ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Frage zur Persistence

Beitrag von PeterA »

Prima.
Merci!
- OpenHab 2.4
#PWRUP

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Frage zur Persistence

Beitrag von PeterA »

Noch eine weitere Frage:

In dieser Gruppe "gShellys*" dürfen da nur Items vom selben Typ sein oder auch gemischt ?
- OpenHab 2.4
#PWRUP

Benutzeravatar
peter-pan
Beiträge: 2769
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Frage zur Persistence

Beitrag von peter-pan »

Ich würde mal sagen, da darf alles drin sein. Du musst dann halt aufpassen, dass du diese Gruppe nicht zu anderen Zwecken (z.B. in Rules) verwendest, wo es evtl. auf Gleichheit der Gruppenmitglieder ankommt.
Übrigens, wenn du das Gruppen-Item auch persistieren wolltest, was normalerweise keinen Sinn macht, wenn du die Gruppen-Mitglieder persistierst, es sei denn, du willst nur das Gruppen-Item persistieren, dann kannst du das machen und es anlegen wie ein Einzel-Item, also ohne "*"
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Frage zur Persistence

Beitrag von PeterA »

Ok, dann können da alle Item Typen rein.
Diese Gruppe ist nur fürs automatische Persistieren der Entsprechenden Items gedacht.
Somit muss ich nicht nochmal zusätzlich etwas in der persist Datei eintragen.
Natürlich darf ich dann nicht vergessen die Items in die Gruppe zu packen.

.... Jeden Tag etwas schlauer.
- OpenHab 2.4
#PWRUP

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

Re: Frage zur Persistence

Beitrag von udo1toni »

Genau. Gruppen sind ein äußerst mächtiges Werkzeug mit vielen Anwendungszwecken.
Von Programmiererseite musst Du Dir die Gruppe einfach als Auflistung von Items vorstellen. An jeder Stelle, wo Du ein Groupitem verwenden kannst, muss openHAB dann noch erkennen, wie es mit dem Groupitem verfahren soll, ob es das Item als Item oder als Liste von Items betrachten soll. Deshalb braucht es in der *.persist Datei den *, in der Sitemap braucht es das Group Widget und in der Rules DSL die Methoden .members und .allMembers.

Bei der Persistence muss man natürlich im Hinterkopf behalten, dass einige Persistence Services nur reale Zahlen speichern können. Entsprechend kann es dann schon Einschränkungen geben (z.B. kein String, kein Switch, kein Location), aber grundsätzlich wird die Persistence jedes Item der Gruppe persistieren, da die Gruppe ja nur eine Auflistung der zu persistierenden Items ist.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

stue
Beiträge: 2
Registriert: 22. Dez 2020 23:43
Answers: 0

Re: Frage zur Persistence

Beitrag von stue »

Zusatzfrage:
Gibt es eine Möglichkeit die Werte von jedem Member der Gruppe in EINER Tabelle abzulegen?

Beispiel:
Group grpMeinSensor1
Number MeinSensor1_Strom "Strom [%.3f A]" (grpMeinSensor1,gPersiMariaMin) {channel="mqtt:topic:MeinBroker:MeinSensor1Topics:current"}
Number MeinSensor1_Spannung "Spannung [%.1f V]" (grpMeinSensor1,gPersiMariaMin) {channel="mqtt:topic:MeinBroker:MeinSensor1Topics:voltage"}
Number MeinSensor1_Leistung "Leistung [%.1f W]" (grpMeinSensor1,gPersiMariaMin) {channel="mqtt:topic:MeinBroker:MeinSensor1Topics:powerload"}
DateTime MeinSensor1_OwnTime "Systemzeit [%1$tT, %1$tY-%1$tm-%1$td]" (grpMeinSensor1,gPersiMariaMin) {channel="mqtt:topic:MeinBroker:MeinSensor1Topics:OwnTime"}

Bei diesem ähnlich von mir verwendetem Beispiel legt OH per Persistence für jedes der vier Items EINE Tabelle an.
Ergebnis:
Tabelle: MeinSensor1_Strom:
Spalte1: Zeitstempel des Datenbankzugriffes (time)
Spalte2: von OH übergebener Wert (value)

Tabelle: MeinSensor1_Spannung :
Spalte1: Zeitstempel des Datenbankzugriffes (time)
Spalte2: von OH übergebener Wert (value)

Tabelle: MeinSensor1_Leistung:
Spalte1: Zeitstempel des Datenbankzugriffes (time)
Spalte2: von OH übergebener Wert (value)

Tabelle: MeinSensor1_OwnTime :
Spalte1: Zeitstempel des Datenbankzugriffes (time)
Spalte2: von OH übergebener Wert (value)

eigentlich gewünschtes Ergebnis:
Tabelle: grpMeinSensor
Spalte1: MeinSensor1_Strom (value)
Spalte2: MeinSensor1_Spannung (value)
Spalte3: MeinSensor1_Leistung (value)
Spalte4: MeinSensor1_OwnTime (value)
Spalte5: Zeitstempel des Datenbankzugriffes

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

Re: Frage zur Persistence

Beitrag von udo1toni »

openHAB kennt keine Tabellen.
Beziehst Du Dich eventuell auf die jdbc Persistence?
So, wie Du Dir das vorstellst, funktioniert openHAB nicht.
Der Zeitstempel gibt ja an, wann der Wert geschrieben wurde.
Der Zeitstempel ist also für jeden der Werte unterschiedlich (wir reden hier von Millisekunden), es ist demnach sinnlos, die Werte gruppiert zu speichern.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

stue
Beiträge: 2
Registriert: 22. Dez 2020 23:43
Answers: 0

Re: Frage zur Persistence

Beitrag von stue »

udo1toni hat geschrieben: 23. Dez 2020 01:10 openHAB kennt keine Tabellen.
... aber bringt (über die persistence) die jeweilige Datenbank dazu eine Tabelle für jedes (gewünschte) Item anzulegen und einen Wert zu hinterlegen.
udo1toni hat geschrieben: 23. Dez 2020 01:10 Der Zeitstempel gibt ja an, wann der Wert geschrieben wurde.
Der Zeitstempel ist also für jeden der Werte unterschiedlich (wir reden hier von Millisekunden), es ist demnach sinnlos, die Werte gruppiert zu speichern.
Das ist mein/openHABs Problem. Es wird kein Primärschlüssel übergeben bei der Übertragung der Daten an die Datenbank.
Gibt es eine persistence, die das kann?
Sinnlos ist es nach meinem empfinden nicht, da es die Wertigkeit/Übersichtlichkeit der Daten verbessern würde.
udo1toni hat geschrieben: 23. Dez 2020 01:10 So, wie Du Dir das vorstellst, funktioniert openHAB nicht.
Was ist die eleganteste Lösung openHAB(3) dazu zu bringen?
- andere persistence?
- binding?
- rule?
- Funktion/addon?
- ...?

Antworten