„Nicht gespeicherte neue identische Werte“ + Unabhängige Backup-Dauerauswahl für jede Device Features

Hallo,

Aufgrund eines umfangreichen Erfahrungsberichts zur Nutzung und Größe der Datenbank schlage ich diesen neuen Feature-Request vor und denke, dass er schnell dringend werden könnte. Ich erkläre:

  • Ich habe 92 Geräte und 143 Gerätefunktionen, bestehend aus:

    • 4 Kameras (mit einer Abfragezeit zwischen 10 Sekunden und 1 Minute - für einige wäre es notwendig, eine Echtzeitabfrage oder alle 2 Sekunden gelegentlich zu haben, aber das ist nicht möglich: macht die Oberfläche zu langsam),
    • 2 Geräte / 9 Gerätefunktionen Z-Wave,
    • 9 Geräte / 18 Gerätefunktionen Philips Hue,
    • 19 Geräte / 27 Gerätefunktionen Tasmota,
    • 58 Geräte / 87 Gerätefunktionen MQTT,
  • Darauf laufen nur 25 Szenen.

  • Heute besteht meine Tabelle device_feature_state aus mehr als 900.000 Zeilen. Und meine Variable DEVICE_STATE_HISTORY_IN_DAYS ist auf 30 Tage für Testzwecke eingestellt. Aber normalerweise müsste ich bestimmte Daten immer behalten (heute mache ich das auf Gladys V3), wie den dreiphasigen Stromverbrauch usw. Heute ist das unmöglich.

  • Die Datenbank wiegt etwa 250 MB für 30 Tage, seit 9 Monaten, in denen ich diese Tests durchführe, wenn ich « Historische Daten immer behalten » ausgewählt hätte, wäre ich heute bei fast 3 GB Datenbank.

Alle 30 Tage, seit 6 Monaten, muss ich eine vollständige Neuinstallation von Gladys V4 durchführen, weil:

  • Zufällig, aber sehr regelmäßig (etwa 15 Mal pro Tag), dauert es 5 Minuten, bis das Dashboard angezeigt wird,
  • Zufällig, selbst wenn das Dashboard angezeigt wird, bewegt sich der Cursor nach dem Drücken eines Dashboard-Befehls nicht mehr und der Befehl wird nicht ausgeführt.
  • Zufällig werden Szenen nicht mehr rechtzeitig ausgelöst, ebenso wie Szenen, die durch Bewegungsmelder ausgelöst werden, aber 5 Minuten oder manchmal 30 Minuten nach der Zeit ausgelöst werden.
  • Nach einem Neustart des Pi ist nichts gelöst,
  • Nach einem Stop/Start des Docker-Containers ist nichts gelöst,
  • Wenn ich direkt in der Datenbank alle Feature-Zustände lösche, funktioniert Gladys wieder richtig, aber die Gladys Plus-Backups funktionieren nicht mehr.

Bald werde ich (sobald der Dienst veröffentlicht ist) hinzufügen können:

  • 25 Geräte / 122 Gerätefunktionen für den neuen Netatmo-Dienst.

Heute betrifft dieses Problem anscheinend nur mich, vielleicht weil ich viel Material habe, aber ich denke, dass sehr bald viele Leute mit diesem Problem konfrontiert sein werden.

@pierre-gilles, wir haben bereits darüber gesprochen, aber es scheint mir, dass eine gute Lösung wäre:

  • Die Möglichkeit, « keep_history » für jede Funktion jedes Dienstes zu ändern (z. B. persönlich habe ich nicht die Notwendigkeit, die Werte meiner Bewegungsmelder in jedem Raum zu speichern - außer vielleicht, wenn ich in den Urlaub fahre, keine Notwendigkeit, die Batteriewerte zu speichern usw.), oft reicht der « last_value » zusammen mit « last_value_changed ».
  • Ein Kontrollkästchen unter jeder Funktion, um zu sagen « Ich möchte neue Werte nur dann speichern, wenn sie sich von den vorherigen unterscheiden » (z. B. für den Philips Hue-Dienst und bald für Netatmo führen wir « Polls » durch, um die Daten zu erhalten. Diese werden daher ständig « alle Minuten » z. B. in einer neuen Zeile neu geschrieben. Nun, in 99,99% der Fälle benötigen wir keine neue Zeile in der Tabelle « state », es reicht, die Spalte « last_value_changed » zu ändern, die bei Bedarf mit der Spalte « created_at » der Tabelle « device_feature_state » verglichen werden könnte, die übrigens 2 Spalten hat, die heute immer identisch sind, obwohl sie hier einen Nutzen finden könnten.
  • Schließlich würde ein letzter Punkt, der erheblich helfen würde, Speicherplatz freizugeben: die unabhängige Auswahl der zu speichernden Historie für jede Funktion. Tatsächlich könnte mir ein Backup von 1 Woche oder 2 Wochen für alle binären Funktionen ausreichen. Vielleicht reicht mir das Backup der Temperaturen/Hygrometrien für 1 Monat. Aber für alle Strom- und Wasserverbräuche müsste ich dann in der Lage sein, die Diagramme über das Jahr oder über 10 Jahre für eine Solaranlage zu erstellen.

Hallo @Terdious :slight_smile:

Ich bin mir nicht sicher, ob diese Anforderung nach dem Wechsel zu DuckDB noch aktuell ist!

Könnten wir sie schließen?

Noch einmal zu deiner Netatmo-Integration: Es ist durchaus möglich, nicht identische Werte zwischen zwei Polls zu speichern. Man muss nur eine if-Bedingung vor dem Senden des neuen Werts einfügen. Das mache ich zum Beispiel in der LAN Manager-Integration (z. B. LAN Manager: Should save a 0 once if a device is not discovered by Pierre-Gilles · Pull Request #2164 · GladysAssistant/Gladys · GitHub), aber für mich ist das kein globaler Ansatz, sondern lokal für jede Integration!