Verbesserung der Verwaltung der Geräte-Datenhistorie: Integration einer konfigurierbaren Granularität für die Speicherung von Zuständen
Hallo zusammen,
Ich möchte eine Verbesserung vorschlagen, die darauf abzielt, die Art und Weise zu optimieren, wie Gladys Assistant die von verbundenen Geräten empfangenen Daten verwaltet und speichert. Derzeit wird jeder von einem Gerät für eine bestimmte Funktion übermittelte Zustand in der Datenbank gespeichert, unabhängig davon, ob er sich gegenüber dem vorherigen Zustand geändert hat oder nicht. Diese Methode, obwohl zuverlässig für die Datenspeicherung, kann zu einer schnellen Ansammlung redundanter Daten führen, insbesondere bei Geräten, die in kurzen Intervallen kommunizieren.
Aktuelles Problem: Im aktuellen Kontext führt ein Gerät, das seine Daten alle 30 Sekunden sendet, dazu, dass jeder empfangene Datenwert gespeichert wird, selbst wenn dieser sich nicht verändert hat. Dies kann die Datenbank schnell mit wenig nützlichen Informationen überfluten, insbesondere bei Daten, die eine geringere Granularität erfordern (z. B. Luftfeuchtigkeit oder Batteriestand, die sich kaum ändern).
Vorschlag: Ich schlage vor, eine flexiblere Konfiguration der Granularität der Zustandsaufzeichnung für jede Funktion eines Geräts zu ermöglichen. Dies könnte auf zwei Arten geschehen:
- Hinzufügen eines globalen Parameters in den Systemeinstellungen, mit dem eine Zeitspanne definiert werden kann, während der, wenn sich die Daten nicht geändert haben, sie nicht in der Datenbank gespeichert werden. Diese Zeitspanne könnte je nach den Bedürfnissen des Benutzers angepasst oder leer gelassen werden, um das aktuelle Verhalten (systematische Aufzeichnung) beizubehalten. Relativ einfach umzusetzen.
- Hinzufügen einer spezifischen Spalte in der Tabelle
t_device_feature, um die Aufzeichnungsgranularität pro Funktion zu definieren. Dies würde maximale Flexibilität bieten und es ermöglichen, die Aufzeichnungsfrequenz je nach Art und Nutzen jedes Datenwerts anzupassen.
Vorteile:
- Signifikante Reduzierung des gespeicherten Datenvolumens, indem nur die wesentlichen Informationen beibehalten werden.
- Optimierung der Datenbankleistung, indem die Anzahl der Schreibvorgänge begrenzt wird.
- Erhöhte Anpassungsfähigkeit für den Benutzer, der das Aufzeichnungsverhalten entsprechend den Besonderheiten seiner Smart-Home-Installation anpassen kann.
Beispiel:
Ich habe vor nur 1 Woche einen Thermostat installiert. Ich möchte ihn entfernen:
Er hat bereits 280.000 Werte, obwohl er nur alle 2 Minuten pollt. Und die meisten Werte sind identisch. Dies würde die Anzahl der Daten mindestens um das Vierfache reduzieren (etwa 70.000).













