Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Florian.Reinartz
Beiträge: 117
Registriert: 11. Apr 2022 08:47
Answers: 0
Wohnort: bei Schwerin

Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Beitrag von Florian.Reinartz »

Moin Zusammen,
ich muss sagen, es ist ein steiniger Weg um wieder alles zum laufen zu bekommen aber im Großen und Ganzen ist openHAB 3 echt eine Verbesserung und vor allem eine Komfort-Steigerung.
An dieser Stelle noch mal meinen großen Dankl an allen fürenden Entwickler und alle Helfer.

Nun zu meinerm Problem.
Ich habe unter 2.5 ausgewählte Daten mit rrd4j aufgezeichnet.
Nun habe ich mir gedacht, da ich bei der Umstellung auf 3.3 eh alle Datenbanken verliere kann ich auch auf influxdb umstellen um die vielseitigere Darstellmöglichkeit über Grafana nutzen zu können.
Schöne Idee, bringt mich aber an den Rand des Wahnsinns durch Schlafentzug ;-)
Meine rrd4j.persist sah so aus:

Code: Alles auswählen

Strategies
{
    everyMinute:    "0 * * * * ?"
    everyHour:      "0 0 * * * ?"
    everyDay:       "0 0 0 * * ?"
    default = everyChange
}
Items
{
    gWetter*                                            : strategy = everyMinute, restoreOnStartup
    gPool*                                              : strategy = everyMinute, restoreOnStartup
    gWind*                                              : strategy = everyMinute, restoreOnStartup
    gTempWohnzimmer*                                    : strategy = everyMinute, restoreOnStartup
    gTempArbeitszimmer*                                 : strategy = everyMinute, restoreOnStartup
    gTempBeschlagschuppen*                              : strategy = everyMinute, restoreOnStartup
    gTempBad*                                           : strategy = everyMinute, restoreOnStartup
    gTempFlurUnten*                                     : strategy = everyMinute, restoreOnStartup
    gTempFlurOben*                                      : strategy = everyMinute, restoreOnStartup
    gTempWC*                                            : strategy = everyMinute, restoreOnStartup
    gTempSchlafzimmer*                                  : strategy = everyMinute, restoreOnStartup
    gTempCharlotte*                                     : strategy = everyMinute, restoreOnStartup
    gTempJohanna*                                       : strategy = everyMinute, restoreOnStartup
    gTempGarage_Bad*                                    : strategy = everyMinute, restoreOnStartup
    gTempGarage_Schlafzimmer*                           : strategy = everyMinute, restoreOnStartup
    gTempGarage_Zimmer_hinten*                          : strategy = everyMinute, restoreOnStartup
    gStromversorgung*                                   : strategy = everyMinute, restoreOnStartup
    gMomentGesamtStrom*                                 : strategy = everyMinute, restoreOnStartup
    gMomentGesamtGas*                                   : strategy = everyMinute, restoreOnStartup
    gMomentGesamtWasser*                                : strategy = everyMinute, restoreOnStartup
    gSchmiedeRauch*                                     : strategy = everyChange, restoreOnStartup
    gGarageRauch*                                       : strategy = everyChange, restoreOnStartup
    gDWSRauch*                                          : strategy = everyChange, restoreOnStartup
    gWaermemenge*                                       : strategy = everyMinute, restoreOnStartup
    SolarThermie_Waermemenge_W                          : strategy = everyMinute, restoreOnStartup
    Buderus_heatSources_actualPower                     : strategy = everyMinute, restoreOnStartup
    Buderus_vorruebergehender_manueller_Betrieb         : strategy = everyChange, restoreOnStartup
    Heizung_Schmiede_Arbeit_Urlaub_Verreist             : strategy = everyChange, restoreOnStartup
    DoorBird_Klingel_Snapshot_TimeStamp_Anzeige         : strategy = everyChange, restoreOnStartup
    DoorBird_Bewegung_Snapshot_TimeStamp_Anzeige        : strategy = everyChange, restoreOnStartup
    USV_Last_Self_Test_result                           : strategy = everyChange, restoreOnStartup
    USV_Last_Self_Test_date                             : strategy = everyChange, restoreOnStartup
    Wetter_Daten_Lokal_rainin                           : strategy = everyChange, restoreOnStartup
    Zaehlerstand_Strom_1_0_1_8_0                        : strategy = everyMinute, restoreOnStartup
    Zaehlerstand_Gas                                    : strategy = everyMinute, restoreOnStartup
    Zaehlerstand_Wasser                                 : strategy = everyMinute, restoreOnStartup
}
meine influxdb.persist sieht nicht viel anders aus:

Code: Alles auswählen

Strategies
{
    everyMinute     :   "0 * * * * ?"
    everyHour       :   "0 0 * * * ?"
    everyDay        :   "0 0 0 * * ?"
    default = everyChange
}
Items
{
    gWetter*                                            : strategy = everyMinute, restoreOnStartup
    gPool*                                              : strategy = everyMinute, restoreOnStartup
    gWind*                                              : strategy = everyMinute, restoreOnStartup
    gTempWohnzimmer*                                    : strategy = everyMinute, restoreOnStartup
    gTempArbeitszimmer*                                 : strategy = everyMinute, restoreOnStartup
    gTempBeschlagschuppen*                              : strategy = everyMinute, restoreOnStartup
    gTempBad*                                           : strategy = everyMinute, restoreOnStartup
    gTempFlurUnten*                                     : strategy = everyMinute, restoreOnStartup
    gTempFlurOben*                                      : strategy = everyMinute, restoreOnStartup
    gTempWC*                                            : strategy = everyMinute, restoreOnStartup
    gTempSchlafzimmer*                                  : strategy = everyMinute, restoreOnStartup
    gTempCharlotte*                                     : strategy = everyMinute, restoreOnStartup
    gTempJohanna*                                       : strategy = everyMinute, restoreOnStartup
    gTempGarage_Bad*                                    : strategy = everyMinute, restoreOnStartup
    gTempGarage_Schlafzimmer*                           : strategy = everyMinute, restoreOnStartup
    gTempGarage_Zimmer_hinten*                          : strategy = everyMinute, restoreOnStartup
    gStromversorgung*                                   : strategy = everyMinute, restoreOnStartup
    gMomentGesamtStrom*                                 : strategy = everyMinute, restoreOnStartup
    gMomentGesamtGas*                                   : strategy = everyMinute, restoreOnStartup
    gMomentGesamtWasser*                                : strategy = everyMinute, restoreOnStartup
    gSchmiedeRauch*                                     : strategy = everyChange, restoreOnStartup
    gGarageRauch*                                       : strategy = everyChange, restoreOnStartup
    gDWSRauch*                                          : strategy = everyChange, restoreOnStartup
    gWaermemenge*                                       : strategy = everyMinute, restoreOnStartup
    SolarThermie_Waermemenge_W                          : strategy = everyMinute, restoreOnStartup
    Buderus_heatSources_actualPower                     : strategy = everyMinute, restoreOnStartup
    Buderus_vorruebergehender_manueller_Betrieb         : strategy = everyChange, restoreOnStartup
    Heizung_Schmiede_Arbeit_Urlaub_Verreist             : strategy = everyChange, restoreOnStartup
    DoorBird_Klingel_Snapshot_TimeStamp_Anzeige         : strategy = everyChange, restoreOnStartup
    DoorBird_Bewegung_Snapshot_TimeStamp_Anzeige        : strategy = everyChange, restoreOnStartup
    USV_Last_Self_Test_result                           : strategy = everyChange, restoreOnStartup
    USV_Last_Self_Test_date                             : strategy = everyChange, restoreOnStartup
    Wetter_Daten_Lokal_rainin                           : strategy = everyChange, restoreOnStartup
    Zaehlerstand_Strom_1_0_1_8_0                        : strategy = everyMinute, restoreOnStartup
    Zaehlerstand_Gas                                    : strategy = everyMinute, restoreOnStartup
    Zaehlerstand_Wasser                                 : strategy = everyMinute, restoreOnStartup
}
Leider werden die Daten aber nicht archiviert...
Der Befehl "influx -version" gibt folgendes aus:
InfluxDB shell version: 1.8.10
In Grafana werden auch alle items und gruppen aus influxdb.persist angezeigt aber es scheint als seien keine Daten enthalten.
Jedenfalls werden meine Tagesverbräuche nicht merhr ermittelt.
ODER funktioniert diese art der Berechnung in den Rules in 3.3 nicht mehr?

Code: Alles auswählen

Verbrauch_Strom_Tag.sendCommand((Zaehlerstand_Strom_1_0_1_8_0.deltaSince(now.withTimeAtStartOfDay)) / 1000.0)
Danke und Gruß
Florian
openHAB 4.3.4 (64 bit) auf einem Raspberry Pi 5 Model B Rev 1.0 mit 8GB

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Beitrag von KellerK1nd »

Mach es anders, zumindest hab ich es mir so angewöhnt.

Erstelle eine Gruppe für alle Items die du in Influxdb persistieren möchtest:

Code: Alles auswählen

Group gInfluxdb
deine Influxdb.persist sieht dann so aus:

Code: Alles auswählen

Strategies {
        everyMinute :           "0 * * * * ?"
        everyHour :             "0 0 * * * ?"
        everyDay  :             "0 0 0 * * ?"
        default = everyChange
}
Items{
gInfluxdb* : strategy = everyChange, everyMinute
}
Jetzt taggst du die Items welche in Influxdb gespeichert werden sollen:

Code: Alles auswählen

Number    Shelly14_Temperature            "Temperatur Spannungsversorgung [%.2f °C]"    <temperature>         (gInfluxdb)                                             {channel="mqtt:topic:dockermqtt:Shelly14:temperature"}
Entscheidend ist das tag:

Code: Alles auswählen

(gInfluxdb)
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Beitrag von peter-pan »

...nur am Rande vermerkt: In OH3 ist" rrd4j" die Standard-DB. Da muss überhaupt nichts mehr eingestellt werden.!!! Schau mal unter "Einstellungen/Persistence"
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Beitrag von peter-pan »

...noch mal am Rande :lol: . Hast du das Add-On für influx-DB in OH installiert ? Es reicht nicht, dass die DB-Engine installiert ist. ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Beitrag von KellerK1nd »

Er hat ja die Items schon in der DB nur keine Werte. Ich hatte das mal genau das gleiche Problem, ich glaube das hing mit dem persistieren der Gruppen zu tun. Da ist dann immer die Frage, wie ist die Gruppe definiert. Darum mein Vorschlag, den Udo hier auch mal erwähnt hatte.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

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

Re: Persistence - Umstellung von 2.5 aus 3.3 und gleichzeitig von rrd4j auf influxdb

Beitrag von udo1toni »

Also ganz grundsätzlich: Wenn man keine(!) <dienstart>.persist Datei anlegt, aber die Persistence installiert ist, dann wird openHAB als default alle Items mit everyChange persistieren. (verständlich, weil die *.persist Dateien bisher nicht über die UI erstellt werden können, aber eine Abkehr von der Regel, dass nur das passiert, was auch konfiguriert wurde).
Es kann also gut sein, dass die Items nur deshalb in der InfluxDB enthalten sind, weil das System sie zu Anfang mal default persistiert hat, jetzt aber keine Daten mehr nach kommen, weil irgendwas in der *.persist Datei nicht passt.

Ansonsten: gWetter* -> alle Items, welche der Gruppe gWetter angehören werden persistiert. gWetter selbst wird nicht persistiert. Enthält gWetter weitere Untergruppen, so werden diese Items nicht persistiert, wohl aber der Status der Untergruppe selbst. Ausnahme dieser Regel: * persistiert einfach alle Items, egal, welcher Gruppe sie angehören oder auch nicht...

everyMinute sollte bei InfluxDB nicht nötig sein, wenn im gewählten Zeitraum mindestens ein Messwert liegt und der Grafana Channel auf fill(previous) konfiguriert ist.

Da die Items in Grafana auftauchen, sollte die Kommunikation grundsätzlich funktionieren oder zumindest schon mal funktioniert haben.

Übrigens hindert Dich Niemand, mehrere Persistence Services parallel zu betreiben, so ist das Konzept eigentlich gedacht.
Messwerte landen in InfluxDB, wiederherzustellende Werte (restoreOnStartup) landen in mapDB, für simple Grafik landen die Messwerte in rrd4j, andere Messwerte und Status landen z.B. in MySQL, um sie später über externe Softe auszuwerten (bei mir z.B. die Anruferliste und wann die Klingel betätigt wurde - kann man auch wunderbar mit Grafana als Top-Liste ausgeben, Grafana kann inzwischen nicht nur InfluxDB...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten