Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von psilo Beitrag anzeigen
    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.

    Kommentar


      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)?

      Kommentar


        Die Duration ist jeweils die Zeit bis zum nächsten Eintrag.

        Kommentar


          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?

          Kommentar


            Richtig. Aber beim jüngsten ist es nicht 0 sondern NULL (weil undefiniert und nicht Dauer = 0 Sekunden)

            Kommentar


              Zitat von startrix Beitrag anzeigen

              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.

              Nun läuft es erstmal

              Viele Grüße Jannis

              & allen frohe Weihnachten.

              Kommentar


                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

                Kommentar


                  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.

                  Kommentar


                    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...

                    Kommentar


                      Soweit ich weiss waren die Queries im sqlite Plugin nicht grundsätzlich anders. Das von dir beschriebene Problem hattest du also auch da.

                      Kommentar


                        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...)

                        Kommentar


                          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.

                          Kommentar


                            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.

                            Kommentar


                              smai, danke für den Hinweis. Eine neue Funktion 'integrate' habe ich gerade im Develop eingecheckt.

                              Kommentar

                              Lädt...
                              X