Nabend zusammen,
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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Database Plugin
Einklappen
X
-
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...)
- Likes 1
Einen Kommentar schreiben:
-
Soweit ich weiss waren die Queries im sqlite Plugin nicht grundsätzlich anders. Das von dir beschriebene Problem hattest du also auch da.
Einen Kommentar schreiben:
-
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...
Einen Kommentar schreiben:
-
Prinzipiell hast du recht.
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.
Wieso eigentlich 00:01? Wenn schon 00:00.
Einen Kommentar schreiben:
-
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?
Danke
Markus
Einen Kommentar schreiben:
-
So, kurze Ergänzung, nach dem ich mir nun nochmal eine frische SmartHomeNG Version installiert habe, bekam ich denselben Fehler.Zitat von startrix Beitrag anzeigen
schorge - konntest du das Problem lösen? Ich stehe gerade vor der selben Fehlermeldung.
Viele Grüße
Jannis
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.
Nun läuft es erstmal
Viele Grüße Jannis
& allen frohe Weihnachten.
Einen Kommentar schreiben:
-
Richtig. Aber beim jüngsten ist es nicht 0 sondern NULL (weil undefiniert und nicht Dauer = 0 Sekunden)
Einen Kommentar schreiben:
-
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?
Einen Kommentar schreiben:
-
Die Duration ist jeweils die Zeit bis zum nächsten Eintrag.
Einen Kommentar schreiben:
-
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)?
Einen Kommentar schreiben:
-
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.Zitat von psilo Beitrag anzeigenerneut 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 ;-)
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.
Einen Kommentar schreiben:
-
erneut die FrageIch fände schon fair, wenn man ein Feature baut, dann wenigstens etwas tieferes Feedback zu kriegenHat 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 ;-)
Einen Kommentar schreiben:
-
Wie "defragmentiere" bzw. "optimiere" ich bitte eine DB???? Haben wir dafür Funktionen? Defragmentieren kenne ich aus Dateisystemen, aber nicht Datenbanken. Optimieren könnte Index neu aufbauen sein, aber das kann ich ja direkt auf DB Ebene machen?!
Wichtig: das ist nicht mein Plugin. Ich habe bisher nur mit dem bestehenden Funktionsumfang ein WebIF dazugebaut. Tiefer einzusteigen sprengt derzeit meine Zeit.
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 ;-)
Einen Kommentar schreiben:
-
Hab auf Develop umgestellt und das Feature getestet. Bei mir hat es ziemlich lange gedauert. Liegt wohl daran, dass bei mir alles auf einem RPI3 mit USB-Stick läuft.Zitat von psilo Beitrag anzeigenstabil ja, es wird aber nur mit dem DEV Core gehen!
Ließe sich auch noch ein Button zum Defragmentieren bzw Optimieren der DB einbauen?
Einen Kommentar schreiben:


Einen Kommentar schreiben: