beste Art der dauerhaften Datenhaltung in einem Device?

Begonnen von mumpitzstuff, 23 April 2018, 08:41:23

Vorheriges Thema - Nächstes Thema

mumpitzstuff

Was ist die beste Art sich in einem Device dauerhaft Daten zu halten bzw. diese zu aktualisieren, ohne das Gesamtsystem negativ zu beinflussen? Reicht es aus hier mit versteckten Readings zu arbeiten oder bringt das nicht viel und sollte man stattdessen ein Array direkt ins Device Hash legen?

rudolfkoenig

Dauerhaft halten geht mite Reading oder Attribut, wobei Attribut dem Benutzer vorbehalten ist.
Readings kann man mit oder ohne Events aendern. Wenn die Datenmenge nicht mehr sinnvoll in "kleinen" Einheiten abzuspeichern ist, dann sollte man eine externe Datei verwenden, wobei dafuer die Funktionen FileRead/FileWrite angeboten werden, damit die Daten optional in configDb landen.

mumpitzstuff

Readings hatte ich erst verwendet, aber das werden schnell mal 1000-2000 Readings. Die habe ich ohne Events zu generieren zu einem Dummy Device hinzugefügt. Anscheinend hat das aber trotzdem dauerhaft Auswirkungen auf das Gesamtsystem, warum auch immer (wurde mir jedenfalls von 2 Anwendern berichtet, die meinen Code Schnipsel für das TV Programm verwenden).
Das mit der externen Datei hatte ich auch bereits überlegt, allerdings muss ich alle 15 min da auch wieder möglichst schnell ran kommen, etwas verändern und speichern. Ich war mir nicht ganz sicher, ob das von der Geschwindigkeit dann noch ausreichend ist. Ich denke aber noch mal darüber nach...

rudolfkoenig

ZitatDie habe ich ohne Events zu generieren zu einem Dummy Device hinzugefügt.
Wie hast du diese Events hinzugefuegt? Sprichst du hier als Entwickler eines Moduls oder als Endbenutzer?

Bei 1000-2000 Datenpunkten sind Readings nicht der richtige Speicherort. Falls man die Daten immer wieder benoetigt, dann kann man sie in einer Datei speichern, beim Start einlesen, und in einem Internal halten. Siehe auch eventTypes.

mumpitzstuff

Der Code ist noch nicht in ein Modul eingeflossen, deshalb habe ich ihn bisher nur in der entsprechenden Rubrik als myUtils Code zur Verfügung gestellt. Hier gehts um das Thema ein TV Programm in FHEM anzuzeigen. In der Vergangenheit wurden dazu teilweise Webseiten eingeparst mit entsprechendem Traffic bzw. einer gewissen Belastung für die Anbieter solcher Seiten.
Ich lese die Daten aus einer 10mb (gepackter Download 1mb) großen xml Datei (enthält die Daten von 6-7 Tagen TV Programm) und hole mir einen Teil der Daten als Readings in FHEM rein (das es für einen Tag reicht).  Daraus kann ich dann das aktuelle Programm ermitteln, als Reading ablegen und in einer Readingsgroup ablegen.

Ich spreche deshalb schon als Entwickler, allerdings noch nicht in Form eines Moduls, sondern erst mal nur als Code Schnipsel.

https://forum.fhem.de/index.php/topic,28123.msg795163.html#msg795163

Den Rat mit der Datei bzw. die Daten beim Start einzulesen werde ich befolgen. Vielen Dank!