Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
erneut die Frage
Hat das Cleanup die Sachen gelöscht, die Du erwartet hast? Ich habe leider nicht drauf geachtet und nur acht gegeben, dass das was ich brauche noch da ist ;-)
Ja, das Cleanup hat alle Einträge, wie gewünscht, gelöscht. d.h. alle historischen Daten aus der Tabelle LOG, für die in der Tabelle ITEM keine Zuordnung existiert.
Was (leider) nicht passiert, ist dass die Größe der DB dadurch kleiner wird. Die Größe bleibt gleich. Daher auch meine Frage nach der Defragmentierung. Dafür gibt es wohl auch eine Funktion mit optimize_table.
PS: Bin leider nicht früher dazu gekommen, auf Deine Frage zu antworten.
Hi, ich möchte ein paar historische Daten (Verbrauch der letzten Jahre) bei meinem monatlichen Verbrauchs-Item hinzufügen. Laut README müsste ich ja nur ein paar Einträge in der log Tabelle anlegen. Ich bin mir jedoch bei duration nicht sicher...
Ich habe einen Vertrauchswert, z.B. 1.12.2018 um 00:01 Uhr. Dieser Wert beinhaltet den Verbrauch vom Monat November. Also "time" und "changed" bekommen diesen Zeitwert. Sind dann in duration die Milisekunden von letzten Eintrag (z.B. 1.11.2018 00:02)?
Ok, d.h. bevor ich den jüngsten Eintrag hinzufüge, suche ich den aktuellen Eintrage, berechne die Differenzzeit, ändere den bestehenden Eintrag ab, ergänze den jünsten mit 0?
schorge - konntest du das Problem lösen? Ich stehe gerade vor der selben Fehlermeldung.
Viele Grüße
Jannis
So, kurze Ergänzung, nach dem ich mir nun nochmal eine frische SmartHomeNG Version installiert habe, bekam ich denselben Fehler.
Dann hab ich Testweise mal versucht eine lokale (Maria DB auf dem Raspi) zu nutzen. Dies ging ohne Probleme.
Da ich die DB aber auf dem NAS haben möchte, ging die Fehlersuche weiter.
Nach dem ich eine DB über die Shell angelegt habe, konnte ich diese ohne Probleme einbinden. Die DB, welche ich über phpmyAdmin angelegt hatte, war wohl das Problem.
Ich bin zum Thema duration noch einmal ins grübeln gekommen:
Folgender Fall:
* Ich ermittle den Monatsverbrauch (z.B. Strom) durch ein Item, welches per crontab kurz nach Mitternacht getriggert wird.
* per eval ermittelt es seinen Wert (=Differenz aktueller Wert und der vom Monatsanfang)
* die Einträge werden in die database geschrieben
* In der Visu sollen die Verbrauchswerte der letzten 12 Monate und den vorigen 12 Monate angezeigt werden.
Wenn jetzt duration die Dauer bis zum nächsten Eintrag darstellt, dann habe ich dort ein Problem. Denn das Item mit Timestamp "Monatsanfang" beinhaltet den Wert des letzten Monats.
Wenn ich es richtig verstanden habe, müsst ich am Monatsende (um z.B. 1.12.18 00:01) rückwirkend den Verbrauchswert ermitteln, dann mit Timestamp vom letzten Monatsanfang (=1.11.18 00:01) und duration (30 x 24 x 3600 x 1000) den Wert in die Datenbank schreiben, sodass die Werte auch korrekt sind, oder?
Hat das schon jemand so gemacht und kann evtl. ein paar Zeilen posten?
Die Idee ist aber eigentlich nicht, dass du berechnete Verbrauchsdifferenzen in die DB schreibst und erst recht nicht bereits aggregierte. Stattdessen solltest du die rohen Zählerwerte mit möglichst hoher Auflösung schreiben und diese dann per diff: abfragen.
Aber so richtig geeignet für derartige Zeitabschnitts-Abfragen ist das database Plugin aktuell nicht. Man kann ja nicht so einfach nach bestimmten Abschnitten stückeln sondern nur Beginn, Ende und Anzahl Datenpunkte angeben.
Ok. Das mit den aggregierten war bislang und mit sqlite eine gute Möglichkeit...
Habe mit dem neuen database plugin noch nicht die Erfahrung - daher die Vorsicht
Langfristig wäre es gut, wenn für Verbrauchwerte eines gewissen Alters diese auf stunden, tags oder monats werte aggregiert werden könnten. Ich habe auch so die plots gewählt. Kurzfristig eine höhere Auflösung, langfristig reichen Summenwerte... aber das sollte ja mit ein paar Befehlen lösbar sein...
Via der WebGUI des Database Plugins kann man im Develop nun auch die Anzahl aller Einträge in der LOG Tabelle auslesen (das hatte mal jemand angefragt...)
wurde eigentlich schonmal diskutiert, für das Database Plugin eine diskrete Integrationsfunktion bereitzustellen? Sprich: Summe (duration * value)? Ich meine mich zu erinnern, dass sowas schonmal diskutiert wurde.
Als Anwendung habe ich Aktoren, die die Momentanleistung ausgeben, logge diese in der DB und möchte dann für beliebige Zeiträume den Energieverbrauch bestimmen.
Klingt interessant und dürfte recht einfach analog zu AVG zu implementieren sein.
Beachte, dass es noch ein zweites mal in _single() eingebaut werden sollte.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar