Ankündigung

Einklappen
Keine Ankündigung bisher.

Mittelwert Database

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

    Mittelwert Database

    Ich will einen realistischen Mittelwert aus der Datenbank lesen. Mit "avg" liest der mir ja nur den Mittelwert der gespeicherten werden. Wenn aber der Wert für sagen wir mal 20 h auf 100 steht und für 4 Stunden auf 0, hätte ich wohl auch nur einen Mittelwert von 50. Mich interessiert aber der zeitabhängige Mittelwert. Wie bekomme ich den ermittelt, ohne alle paar Minuten den Wert wieder in die Datenbank zu schreiben?

    #2
    Moin Cannon ,

    die Query im database plugin sieht folgendermaßen aus:
    Code:
    'avg': 'MIN(time), ' + self._precision_query('AVG(val_num * duration) / AVG(duration)'),
    Das heißt, dass die Einzelwerte in jedem Abtastintervall mit ihrer jeweiligen Dauer gewichtet werden. Mit Abtastintervall wird die Dauer des Beobachtungszeitraums (plot.period -> duration) geteilt durch die Anzahl der Werte (plot.period -> count) bezeichnet. Das Ergebins Deines Beispiels ist 83,33, wenn das Abtastintervall = 24 h ist.

    Gruß
    Wolfram

    Kommentar


      #3
      Zitat von wvhn Beitrag anzeigen
      Das heißt, dass die Einzelwerte in jedem Abtastintervall mit ihrer jeweiligen Dauer gewichtet werden.
      Wie geil ist das denn. Da ist wohl an alles gedacht wurden. Großen Respekt für das plugin.

      Ich schaue mir das noch mal im Verlauf der Daten an.

      Vielleicht kann ich noch eine Frage ergänzen. Wie bekomme ich die Werte des heutigen Tages angezeigt, also quasi nur ab Mitternacht?

      Kommentar


        #4
        Ich zitiere mal aus dem Code:
        By passing 'day', the plot is shown from 0:00 until 24:00 on the day starting after tmin. Set tmin to '24h' or '1d' for today, '48h' or '2d' for yesterday and so on. ​

        Kommentar


          #5
          Zitat von aldaris Beitrag anzeigen
          By passing 'day', the plot is shown from 0:00 until 24:00 on the day starting after tmin. Set tmin to '24h' or '1d' for today, '48h' or '2d' for yesterday and so on. ​
          Ich find's im Code nicht. Zumindest nicht in der aktuellen Master-Version.

          Was ist gemeint mit By passing 'day' ? Denn normerweise geben '24h' und '1d' wirklich 24 Stunden an, laut Doku zumindest. Sicher, dass du SmartHomeNG und nicht die SmartVISU meinst?

          Kommentar


            #6
            Hi, sry, mein Fehler.

            Ich meinte tatsächlihc die Anzeige für den smartVISU plot. Da kann man das entsprechend angeben.

            Nochmal sorry für die Verwirrung

            Kommentar


              #7
              Habs jetzt hingebastelt. Hier mal ein Beispiel, wer evtl. mal die Werte seit Mitternacht (also nur heute) braucht:

              Code:
              jetzt = sh.now()
              minuten_seit_mitternacht = jetzt.hour * 60 + jetzt.minute​
              soc_level_min_heute = sh.Zentral.Energie.Speicher.SOC.db('min', str(minuten_seit_mitternacht) + 'i')
              soc_level_max_heute = sh.Zentral.Energie.Speicher.SOC.db('max', str(minuten_seit_mitternacht) + 'i')
              soc_level_avg_heute = sh.Zentral.Energie.Speicher.SOC.db('avg', str(minuten_seit_mitternacht) + 'i')​
              P.S.:
              Zitat von aldaris Beitrag anzeigen
              Hi, sry, mein Fehler.
              Danke dennoch für die Mühe!
              Zuletzt geändert von Cannon; 04.11.2024, 22:34.

              Kommentar


                #8
                das hier könnte hilfreich sein: https://smarthomeng.github.io/dev_do...zeitdaten.html

                Kommentar


                  #9
                  Zitat von Onkelandy Beitrag anzeigen
                  Ja wohl auch ein Weg. Sollte dann aber auch so gehen - zumindest in der Theorie:

                  Code:
                  soc_level_min_heute = sh.Zentral.Energie.Speicher.SOC.db('min', sh.minute.since.midnight.dbstr())
                  soc_level_max_heute = sh.Zentral.Energie.Speicher.SOC.db('max', sh.minute.since.midnight.dbstr())
                  soc_level_avg_heute = sh.Zentral.Energie.Speicher.SOC.db('avg', sh.minute.since.midnight.dbstr())​

                  Kommentar

                  Lädt...
                  X