Ankündigung

Einklappen
Keine Ankündigung bisher.

Support Thread - "DatabaseAddOn" Plugin

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

    Aktuell gibt es ja im Plugin noch eine eigene "Pause" Funktion oder.. die Frage wäre noch, ob es die braucht oder das dann auch über stop/run implementierbar wäre.
    Vielleicht gleich mal entsprechend umsetzen und testen..? https://github.com/smarthomeNG/smarthome/pull/657

    Kommentar


      Zitat von Sisamiwe Beitrag anzeigen
      Ich habe den Bug gefunden und den PR aktualisiert.
      Kannst Du bitte nochmal testen?
      Ich musste erst nochmal das alte db file reinladen, um das zu testen. Sieht aber gut aus. Jetzt nimmt er den 'oldest_log'. Danke!

      Ich habe aber noch ein nicht ganz erwartetes Verhalten beobachtet.
      Für 'minmax_Tag_min' habe ich häufiger (aber nicht immer, und nicht für alle Items gleichzeitig) das Verhalten, dass kurz nach Mitternacht die Temperatur von '0' ermittelt wird.
      Das hatte heute z.B. dann das Resultat, dass auch 'minmax_Woche_min' und 'minmax_Monat_min' auf '0' gesetzt wurden.
      Bei einem händischen Trigger über das WebIF wird dann aber der richtige Wert berechnet.


      Screenshot_20240701-075439.png

      Kommentar


        Übrigens mal noch eine Verständnisfrage. Ich würde eigentlich lieber den gleitenden min/max Wert der letzten 24h / letzten Woche / letzten Monat / letzten Jahr auswerten.
        Wenn ich das richtig sehe, muss ich dann eher 'minmax_last_24h_min' und 'minmax_last_7d_min' und für Monat und Jahr mir was "selber basteln":
        Code:
                    db_addon_fct: minmax
                    db_addon_params_dict: "{'func': 'min', 'timeframe': 'month', 'start': 1}"
        In der user_doc steht allerdings, dass das dann bei 'timeframe' berechnet wird. Wird das dann nicht 'onchange' aktualisiert?

        Kommentar


          Zitat von Onkelandy Beitrag anzeigen
          Aktuell gibt es ja im Plugin noch eine eigene "Pause" Funktion
          Richtig

          Zitat von Onkelandy Beitrag anzeigen
          die Frage wäre noch, ob es die braucht oder das dann auch über stop/run implementierbar wäre.
          Aus meiner Sicht kann die Funktion über Stop/Start realisiert werden. Klären müsste man, wann/nach welcher Pausezeit man den Plugin-Werte-Cache als ungültig erklärt und löscht.

          Kommentar


            Zitat von ooUrmeloo Beitrag anzeigen
            Für 'minmax_Tag_min' habe ich häufiger (aber nicht immer, und nicht für alle Items gleichzeitig) das Verhalten, dass kurz nach Mitternacht die Temperatur von '0' ermittelt wird.
            Das müsstest Du noch etwas beobachten. Da das Plugin nur auf die Werte der Datenbank zugreift und den Cache des Datenbank-Plugins nicht kennt, kommt es immer zu Verzögerungen in der Auswertung.
            Schau mal im Log, ob die Berechnung gar nicht gestartet wird oder das "falsche" Ergebnis errechnet wird.

            Kommentar


              Zitat von ooUrmeloo Beitrag anzeigen
              gleitenden min/max Wert der letzten 24h / letzten Woche / letzten Monat / letzten Jahr auswerten.
              Das Thema ist die Belastung der Datenbank bei einer solchen Auswertung.
              Für Tageswerte etc. legt das Plugin einen Cache an und nutzt den, so dass die DB nur einmal zum Lesen verwendet wird.

              Für den gleitenden Durchschnitt müsste man sich was überlegen. Bei jedem neuen Wert die DB auszulesen klappt sicher nicht.
              Hättest Du da einen Vorschlag?

              Bspw gibt es "verbrauch_last_24h" mit Verbrauch innerhalb letzten 24h | Berechnung: hourly | Item-Type: num. Hier wird die Berechnung stündlich gemacht. Auch das ist bzgl. DB Belastung schon grenzwertig.

              Kommentar


                Zitat von Sisamiwe Beitrag anzeigen

                Das müsstest Du noch etwas beobachten. Da das Plugin nur auf die Werte der Datenbank zugreift und den Cache des Datenbank-Plugins nicht kennt, kommt es immer zu Verzögerungen in der Auswertung.
                Schau mal im Log, ob die Berechnung gar nicht gestartet wird oder das "falsche" Ergebnis errechnet wird.
                ich hab den Logger mal auf Debug laufen lassen ... aber heute Nacht war alles 'normal'.
                Ich schau mir das nochmal an, bin jetzt aber erstmal im Urlaub. Melde Mich danach nochmal.

                Kommentar


                  Zitat von Sisamiwe Beitrag anzeigen
                  Das Thema ist die Belastung der Datenbank bei einer solchen Auswertung.
                  Für Tageswerte etc. legt das Plugin einen Cache an und nutzt den, so dass die DB nur einmal zum Lesen verwendet wird.

                  Für den gleitenden Durchschnitt müsste man sich was überlegen. Bei jedem neuen Wert die DB auszulesen klappt sicher nicht.
                  Hättest Du da einen Vorschlag?

                  Bspw gibt es "verbrauch_last_24h" mit Verbrauch innerhalb letzten 24h | Berechnung: hourly | Item-Type: num. Hier wird die Berechnung stündlich gemacht. Auch das ist bzgl. DB Belastung schon grenzwertig.
                  Bevor ich das DB_Addon gefunden hatte, hatte ich das selbst für min/max so umgesetzt, um DB Zugriffe zu minimieren.
                  Der Tages-Min/Max wird immer vom Item getriggert -> viele DB Aufrufe ...
                  Aber Woche wird nur getriggert, wenn es eine Änderung des Tages-Max gibt, Monat wird nur getriggert, wenn es eine Änderung des Wochen-Max gibt, etc.
                  So hatte ich gehofft, die DB möglichst minimal zu halten. Als ich das DB_Addon gesehen habe, dachte ich, du machst das bestimmt besser :-)

                  Code:
                  temperatur:
                     aussen:
                             max1d:
                                 type: num
                                 database_maxage: 30
                                 database: yes
                                 cache: True
                                 enforce_updates: True
                                 knx_dpt: 9
                                 eval: sh.paradigma.Aussentemperatur.db('max', '1d')
                                 eval_trigger: paradigma.Aussentemperatur
                             max7d:
                                 type: num
                                 database_maxage: 75
                                 database: yes
                                 cache: True
                                 knx_dpt: 9
                                 eval: sh.temperatur.aussen.max1d.db('max', '7d')
                                 eval_trigger: temperatur.aussen.max1d
                             max1m:
                                 type: num
                                 database_maxage: 365
                                 database: yes
                                 cache: True
                                 knx_dpt: 9
                                 eval: sh.temperatur.aussen.max7d.db('max', '1m')
                                 eval_trigger: temperatur.aussen.max7d
                             max1y:
                                 type: num
                                 database_maxage: 365
                                 database: yes
                                 cache: True
                                 knx_dpt: 9
                                 eval: sh.temperatur.aussen.max1m.db('max', '1y')
                                 eval_trigger: temperatur.aussen.max1m

                  Kommentar


                    Zitat von Onkelandy Beitrag anzeigen
                    Aktuell gibt es ja im Plugin noch eine eigene "Pause" Funktion oder.
                    Ich habe nur die Möglichkeit gefunden, einzelne Items zu "suspenden", das habe ich so gelassen. Das globale suspend war auskommentiert, darum habe ich pause_item hier nicht eingebaut. Sollte aber kein Problem sein, wenn jemand, der sich mit der "inneren Logik" auskennt, sicherstellt, dass bei stop() alles geschrieben und bei run() alles gelesen wird, was notwendig ist...

                    Kommentar


                      Morg
                      Kannst Du meinen PR morgen.
                      Getestet hat ooUrmeloo.
                      Dann kann ich mir das mal anschauen.

                      Kommentar


                        Zitat von Morg Beitrag anzeigen
                        Ich habe nur die Möglichkeit gefunden, einzelne Items zu "suspenden",
                        Ich habe das "pause" mit Stop/Start eingebaut und getestet. Funktioniert. Du kannst gern mal probieren. Hier der Link.

                        PR folgt dann.

                        Kommentar


                          Zitat von ooUrmeloo Beitrag anzeigen
                          Aber Woche wird nur getriggert, wenn es eine Änderung des Tages-Max gibt, Monat wird nur getriggert, wenn es eine Änderung des Wochen-Max gibt, etc.
                          Du kannst das Plugin schon dafür nutzen. Eine Beachtung von onchange, also laufenden Werteänderungen, habe ich noch nicht implementiert.

                          Code:
                          temperatur:
                              aussen:
                                  max1d:
                                      type: num
                                      db_addon_database_item: paradigma.Aussentemperatur
                                      db_addon_fct: minmax
                                      db_addon_params_dict: "{'func': 'max', 'timeframe': 'day', 'start': 1, 'end': 0}"
                                      db_addon_startup: yes
                                  max7d:
                                      type: num
                                      db_addon_database_item: paradigma.Aussentemperatur
                                      db_addon_fct: minmax
                                      db_addon_params_dict: "{'func': 'max', 'timeframe': 'day', 'start': 7, 'end': 0}"
                                      db_addon_startup: yes
                                  max1m:
                                      type: num
                                      db_addon_database_item: paradigma.Aussentemperatur
                                      db_addon_fct: minmax
                                      db_addon_params_dict: "{'func': 'max', 'timeframe': 'day', 'start': 30, 'end': 0}"
                                      db_addon_startup: yes
                                  max1y:
                                      type: num
                                      db_addon_database_item: paradigma.Aussentemperatur
                                      db_addon_fct: minmax
                                      db_addon_params_dict: "{'func': 'max', 'timeframe': 'day', 'start': 365, 'end': 0}"
                                      db_addon_startup: yes
                          Die Berechnung wird dann immer täglich ausgeführt.

                          Ich habe am Plugin diverse Dinge geändert / ergänzt / repariert. Du kannst gern mal testen, bevor ich den PR stelle. Siehe hier:

                          Kommentar


                            Zitat von Sisamiwe Beitrag anzeigen
                            Du kannst das Plugin schon dafür nutzen. Eine Beachtung von onchange, also laufenden Werteänderungen, habe ich noch nicht implementiert.

                            Die Berechnung wird dann immer täglich ausgeführt.

                            Ich habe am Plugin diverse Dinge geändert / ergänzt / repariert. Du kannst gern mal testen, bevor ich den PR stelle. Siehe hier:
                            Danke dir!
                            Ich kann das leider erst Ende des Monats testen. Bin vorher nicht Zuhause...

                            Kommentar


                              Hallo zusammen,

                              ich finde das Plugin echt genial👍👍.

                              Jedoch werden bei mir die Funktionen
                              -verbrauch_tag
                              -serie_verbrauch_tag_30d

                              falsch berechnet.

                              Der '-verbrauch_tag' vermute ich, wird der Vortag mit eingerechnet.
                              Bei '-serie_verbrauch_tag_30d' auch.


                              'verbrauch_tag_minus1' stimmt aber wieder.

                              Ich benutze das ' Plugin : db_addon v1.2.9'



                              Code:
                                  Waerme_dict:
                                      type: dict
                                      mqtt_topic_in: 'kamstrup/values'
                              
                                      energy:
                                              type: num
                                              database: init
                                              eval: value['energy']
                                              eval_trigger: waerme.Waerme_dict
                                              db_addon_startup: yes
                                              db_addon_ignore_value: 0
                                              struct:
                                                - db_addon.verbrauch_1
                                              
                                              Serie30:
                                                  type: list
                                                  db_addon_startup: yes
                                                  db_addon_ignore_value: 0
                                                  db_addon_fct: serie_verbrauch_tag_30d​

                              Kommentar


                                Zitat von eloboy Beitrag anzeigen
                                falsch berechnet.
                                Hallo,

                                ich schaue mir das die Tage an.
                                Ein Hinweis: Wenn Du das Log des Plugin auf Debug stellt bekommst Du sehr viele Infomationen darüber, was das Plugin im Hintergrund tut. Da werden auch u.a. auch die Abfragezeiträume ausgegeben. Könntest Du dir das mal anschauen?

                                ooUrmeloo hatte mir auch schon ein paar Bugs genannt. Daher gibt es in meinem Repo bereits in Update. Könntest Du das auch testen?
                                Siehe hier

                                Beste Grüße​

                                Kommentar

                                Lädt...
                                X