plötzlich ganz viele persistenztabellen in der mysql

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
rebell21
Beiträge: 125
Registriert: 23. Aug 2024 09:34
Answers: 0

plötzlich ganz viele persistenztabellen in der mysql

Beitrag von rebell21 »

ich habe eine Konfigurationsdatei für die Persistierung von bestimmten items. Diese enthält 31 zu persistierende items.
Nun schaue ich in die entsprechende mysql DB und finde dort in der Tabelle "openhab.items" 146 Datensätze. Es werden viel mehr items dort gespeichert als von mir in der Datei jdbc.persist angegeben. In der Tabelle "items" sind ganz viele items enthalten, die überhaupt nicht in der Datei jdbc.persist auftauchen. So z. B. items vom Typ Switch wie Steckdosen oder eine Sirene und dort steht meist "OFF" drin. Ich finde auch 146 items-Tabellen. Von item0001 bis item0146. Allerding hat openhab nicht alle items gespeichter. Ich habe 280 items und davon werden 146 gespeichert. Speichern wollte ich aber nur 31.

Wie kann das sein ?

hier ist die jdbc.persist-Datei

Code: Alles auswählen


Strategies {
       every30Seconds:     "5/30 * * * * ? *"
       every15Seconds:     "5/15 * * * * ? *"
       everyMinute:  "0 0/1 * ? * * *"
       everySecondMinute:  "0 0/2 * ? * * *"
       everyFifthMinute:  "0 0/5 * ? * * *"
}

Items {
        Helligkeitssensor_Terrasse_Current_Illumination: strategy = every30Seconds
        Temperatur_Terrasse_Actual_Temperature : strategy = everyMinute
        Temperatur_Terrasse_Humidity: strategy = everyMinute
        Temperatur_Wohnzimmer_Actual_Temperature : strategy = everyMinute
#        Temperatur_Wohnzimmer_Humidity: strategy = everyMinute
        Temperatur_Schlafzimmer_Actual_Temperature : strategy = everyMinute
#        Temperatur_Schlafzimmer_Humidity: strategy=everyMinute
        Temperatur_Badezimmer_OG_Actual_Temperature: strategy = everyMinute
        Temperatur_Badezimmer_OG_Humidity: strategy = everyMinute
        Fronius_Symo_Inverter_AC_Voltage : strategy = everyMinute
        Fronius_Symo_Inverter_Solar_Plant_Power: strategy = every30Seconds
        Fronius_Symo_Inverter_AC_Power: strategy = every30Seconds
        Fronius_Symo_Inverter_Grid_Power: strategy = every30Seconds
        Fronius_Symo_Inverter_Load_Power: strategy = every30Seconds
        Fronius_Symo_Inverter_Battery_Power: strategy = every30Seconds
        Fronius_Symo_Inverter_Inverter_Power: strategy = every30Seconds
        Fronius_Symo_Inverter_Battery_State_of_Charge: strategy = everyMinute
        Fronius_Symo_Inverter_Autonomy:strategy=everyMinute

        HeizungViessmann_Common_Supply_Temperature : strategy = everySecondMinute
        HeizungViessmann_Burner_Status : strategy = everySecondMinute
        HeizungViessmann_Burner_Modulation : strategy = everySecondMinute
        HeizungViessmann_Heating_Gas_Consumption_Summary_Heating_CurrentYear : strategy = everySecondMinute
        HeizungViessmann_Outside_Temperature : strategy = everySecondMinute

        ESP32Semsor_CO2Kanal : strategy = everyMinute
        Feinstaub_PM1 : strategy = everyFifthMinute
        Feinstaub_PM2_5 : strategy = everyFifthMinute
        Feinstaub_PM4 : strategy = everyFifthMinute
        Feinstaub_PM10 : strategy = everyFifthMinute
        AQI_Feinstaub_PM2_5 : strategy = everyFifthMinute
        AQI_Feinstaub_PM10 : strategy = everyFifthMinute
}


Ich will das jetzt auch nicht komplett neu aufsetzen, denn dann verliere ich ja die Daten, die bisher gespeichert wurden.

Eine weitere Beobachtung. Einige der Tabellen, in denen items gespeichert werden, die nicht in der jdbc.persist Datei sind, sind recht klein und enthalten erst seit dem 6.3. Datensätze. Die anderen Tabellen werden schon seit Anfang Februar beschrieben. Ich weiß aber nicht, was ich am 6.3. hieran geändert habe. Wie kann ich die unerwünschten Tabellen wieder loswerden , ohne das gesamte Persistenz-System neu aufzusetzen ? Soll ich einfach in der Tabelle 'items' Datensätze löschen, oder kommt openhab dann ins schleudern, weil openhab bestimmte items-Tabellen nicht mehr findet ? Ich möchte einige Daten/Tabellen nicht verlieren

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

Re: plötzlich ganz viele persistenztabellen in der mysql

Beitrag von udo1toni »

openHAB hat ein asynchrones Design. Das heißt, beim Starten des Systems werden einfach alle Teile des Systems gestartet und kommen selbständig bis zum normalen Betriebszustand.
Vorteil: das System ist vergleichsweise schnell betriebsbereit, obwohl hunderte Komponenten teils recht komplex voneinander abhängen.
Nachteil: Es kann sein, dass Teile des Systems schon initialisiert sind, aber die entsprechende Konfiguration noch fehlt. Das hier dürfte so ein Fall sein.

Die jdbc Persistence wird initialisiert und läuft, ohne dass die zugehörige jdbc.persist Datei eingelesen wurde. In der Folge werden alle Items persistiert, bis die Konfiguration verarbeitet wurde.
Da die Items meist in immer der selben Reihenfolge initialisiert werden, kommen meist immer von den selben Items Aktualisierungen ungewollt in der Datenbank an, aber eben nur einige Sekunden, bis alle Teilsysteme komplett laufen.
Da das systemimmanent ist, wird es nichts nutzen, openHAB neu aufzusetzen. Das einzige, was Du damit erreichst, ist, dass sich die betroffenen Items ändern :)
Allerdings ist es ja nicht so, dass die zu viel persistierten Daten irrsinnig viel Platz benötigen, es sind ja in der Tendenz nur wenige Datensätze.
Die pragmatische "Lösung" ist also, ab und zu die ungewünschten Tabellen zu leeren oder auch komplett zu droppen - nicht schön, aber zumindest nicht unmöglich...

PS: besser zu viele Daten, als zu wenige... ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

rebell21
Beiträge: 125
Registriert: 23. Aug 2024 09:34
Answers: 0

Re: plötzlich ganz viele persistenztabellen in der mysql

Beitrag von rebell21 »

ich habe einiger der unerwünschten Tabellen gedroppt. Hätte ich besser nicht gemacht. Jetzt hagelt es im Log Warnungen, dass die Tabellen nicht existieren und die items nicht mehr gespeichert werden können. Diese items stehen nicht in meiner jdbc.persist. Kann ich openhab irgendwie überreden, diese items nicht zu persistieren

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

Re: plötzlich ganz viele persistenztabellen in der mysql

Beitrag von udo1toni »

Das ist seltsam.
Erster Versuch: Schreibe die Items in die Persistence rein, speichere und lösche sie anschließend wieder raus.
Im Zweifel kannst Du auch den Eintrag in der items-Tabelle entfernen (dort natürlich nur jeweils die Zeile, welche zum Item gehört), dann kann es natürlich passieren, dass openHAB (nach einem Neustart) das Item wieder hinzufügt, dann mit einer neuen Tabelle.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

rebell21
Beiträge: 125
Registriert: 23. Aug 2024 09:34
Answers: 0

Re: plötzlich ganz viele persistenztabellen in der mysql

Beitrag von rebell21 »

ich hatte zunächst nichts gemacht, weil ich keine Zeit hatte und Deine Antwort abwarten wollte. Ich habe die Warnungen akzeptiert und ignoriert.

Im Laufe der Zeit sind es von alleine immer weniger Warnungen geworden. Es sieht so aus, als hätte sich openhab nach einer gewissen Zeit, bzw. einer bestiimmten Anzahl Versuche zu speichern , daran gewöhnt, dass z.B die Tabelle item0070 nicht mehr existiert und dann nicht mehr versucht, das entsprechende item in dieser Tabelle der Datenbank zu speichern. Nun keine Warnungen mehr und die Tabellen, die ich gedroppt hatte, sind auch nicht wieder aufgetaucht.


Die items, die ich in jdbc.persist habe, werden gespeichert. Items, die nicht in jdbc.persist stehen, deren Tabellen ich nur geleert hatte (truncate) aber nicht gedroppt hatte, werden nun auch nicht mehr geschrieben. Die Tabellen bleiben leer. Erst mal in Ordnung so.

Ich habe jetzt alle items, die ich nicht speichern will, aus der items-Tabelle gelöscht. Ich bin gespannt was nach dem nächsten Neustart von openhab passiert.

Aber schon seltsam das Verhalten an dieser Stelle.

Antworten