Ankündigung

Einklappen
Keine Ankündigung bisher.

Anzahl der Datenpunkte begrenzen / Mittelwert

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

    [Featurewunsch] Anzahl der Datenpunkte begrenzen / Mittelwert

    Ich habe mir Bausteine für den Resol Vbus geschrieben, sie mir ungefähr alle 2 Sekunden Messwerte liefern. Diese Werte gehen auf ein internes KO für direkte Anzeige in der Visu (soweit so gut).

    Ebenso schreibe ich einige in Datenarchive

    Problem: nach nur einem Tag sind das schon 40k Einträge pro Messwert - die Anzeige eines Diagramms dauert es ewig und macht auf einigen hundert Pixeln gar keinen Sinn.

    Ich würde gerne irgendwann Mittelwerte bilden

    Ideen:
    - ein LBS wäre gut, der alle Werte entgegen nimmt und beispielsweise nach 30 empfangenen Werten deren Mittelwert ausgibt. N einstellbar
    - Oder ein LBS der empfangene Werte sammelt und auf einen Trigger hin den Mittelwert der gesammelten ausgibt. Trigger=reset
    - oder ein LBS der ein Datenarchiv im Nachhinein "ausdünnt", je älter die Einträge desto mehr werden zusammengefasst
    Gibt es sowas schon?
    Oder sollte man das Problem anders angehen?


    #2
    Wäre auch für Windgeschwindigkeit nützlich, ähnliches Problem.

    Kommentar


      #3
      schobi Wenn Du schon beim Baustein schreiben bist.... Mach doch einfach. Schreib die Daten intern in ein Archiv (array etc Und schreib dann den Mittelwert in die Datenbank. In Summe kein großer Aufwand.
      Mfg Micha
      Ich sage ja nicht, das wir alle dummen Menschen loswerden müssen, aber könnten wir nicht einfach alle Warnhinweise entfernen und den Dingen ihren Lauf lassen?

      Kommentar


        #4
        Du kannst davon unabhängig im Diagramm einfach ein "Mittelwert-Intervall" angeben (siehe Hilfe) - das ändert natürlich nichts an der Datenmenge im Archiv, aber das Diagramm berechnet dann automatisch den Mittelwert und wird deutlich(!) schneller aufgebaut.
        • Mittelwert-Intervall: ggf. können mehrere Datenpunkte zeitlich zusammengefaßt werden (Mittelwert)
          • das Mittelwert-Intervall wird in Sekunden angegeben
          • 0: die Datenpunkte werden grundsätzlich nicht zusammengefaßt, jedoch werden die Datenpunkte ggf. automatisch gemittelt (s.u.)
          • 1..∞: alle Datenpunkte innerhalb dieses Intervalls werden zu einem Datenpunkt zusammengefaßt und gemittelt
          • Hinweis: Die Verwendung eines Mittelwert-Intervalls ist bei einer hohen Anzahl von Datenpunkten zu empfehlen. Die Graphen werden performanter generiert und wirken oftmals visuell angenehmer (Glättung).
          • Wichtig: Diese Einstellung hat keinen Einfluss auf die Skalierung der X-Achse!
        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

        Kommentar


          #5
          Ok - das mit dem Mittelwert-Intervall habe ich inzwischen probiert - in den 22 Sekunden bis zur Darstellung des Diagramms habe ich nun auch eine CPU Warnung. Jetzt sind Server und Client ordentlich beschäftigt. Das ist auch nicht ideal...


          Ich habe daher einen Baustein begonnen, der Telegramme "aufsammelt" und bei Trigger deren Mittelwert liefert. Am Trigger ist dann der 5-Minuten Systemtrigger angeschlossen

          Code:
          ###[DEF]###
          [name        =    Mittelwert über gesammelte Telegramme ]
          
          [e#1        =    Messwert ]
          [e#2        =    Trigger ]
          
          [a#1        =    Mittelwert ]
          
          [v#1        =    0 ]
          [v#2        =    0 ]
          
          ###[/DEF]###
          
          
          ###[HELP]###
          
          Ermittelt den Mittelwert der Telegramme, die seit dem letzten Trigger eingegangen sind.
          Dient als Begrenzung der Anzahl der Telegramme die beispielsweise in ein Archiv geschrieben werden.
          
          Anwendungsbeispiel:
          Ein Baustein erzeugt häufig Telegramme (bei mir z.B. gibt es alle 2 sec neue Messwerte).
          Für eine Live Anzeige ist das wunderbar, für ein Datenarchiv wird eine spätere Darstellung aber sehr langsam. 
          
          Dieser Baustein kann aufeinander folgende Telegramme "zusammenfassen" und beispielsweise nur alle 5 Minuten einen Mittelwert liefern, 
          den man dann ins Archiv schreiben kann.
          
          Es gibt keine Ausgabe wenn seit dem letzten Trigger keine neuen Telegramme angekommen sind
          
          ###[/HELP]###
          
          
          ###[LBS]###
          <?
          function LB_LBSID($id) {
              if ($E=logic_getInputs($id)) {
          
                  if ($E[1]['refresh']==1) { // neuen Messwert merken
                      logic_setVar($id, 1, logic_getVar($id, 1) + $E[1]['value'] ); 
                      logic_setVar($id, 2, logic_getVar($id, 2) + 1 ); 
                  }
          
                  if ($E[2]['refresh']==1) { // Trigger
                      $value = logic_getVar($id, 1);
                      $count = logic_getVar($id, 2);
                      if ($count > 0) {
                          logic_setOutput($id, 1, $value/$count);
                      }
                      logic_setVar($id, 1, 0);
                      logic_setVar($id, 2, 0);
          
                  }    
          
              }
          }
          ?>
          ###[/LBS]###
          
          
          ###[EXEC]###
          <?
          ?>
          ###[/EXEC]###

          offene Fragen:
          - muss ich irgendwas zur Nebenläufigkeit tun? Semaphore um den Zugriff auf die Variablen?
          - mein LBS Account scheint gesperrt zu sein - wer kann mir da helfen?

          Kommentar


            #6
            schobi Den den Letzten Teil hab ich mal geändert. User die länger nicht angemeldet waren, werden automatisch gesperrt. Kurze Nachricht an mich, und ich behebe das.
            Mfg Micha
            Ich sage ja nicht, das wir alle dummen Menschen loswerden müssen, aber könnten wir nicht einfach alle Warnhinweise entfernen und den Dingen ihren Lauf lassen?

            Kommentar

            Lädt...
            X