Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu item.db()

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

    Frage zu item.db()

    Hallo,

    ich habe einen Zähler-Item für meinen Stromzähler implementiert
    sh.Haustechnik.Stromzaehler.FinalerCounter()

    Jetzt möchte ichin einem Item ermitteln, um wieviel der Counter in der letzten 1 minute gestiegen ist. Das mache ich so:
    Code:
    sh.Haustechnik.Stromzaehler.FinalerCounter.db('max', '2i', '1i')- sh.Haustechnik.Stromzaehler.FinalerCounter.db('min', '2i', '1i')
    Ich betrachte also einen Zeitraum von "vor einer Minute" bis "vor zwei Minuten".
    Daraus nehme ich den minimalen und den maximalen Wert.

    Macht das Sinn?
    Oder kann es sein, dass ich hier einen Zeitraum von insg. 2 Minuten betrachte( z.B. um 13:50:00 : 2i= 13:48:00, 1i=13:48:59)

    Wie würdet ihr das implementieren?

    Der Hintergrund:
    Wenn ich den Durchschnitt über 10 minuten bilde, mache ich
    Code:
    sh.Haustechnik.Stromzaehler.FinalerCounter.db('max', '11i', '1i')- sh.Haustechnik.Stromzaehler.FinalerCounter.db('min', '11i', '1i')
    und teile durch 10

    Und zwischen den Werten liegt ungefähr ein Faktor von 2. Das sollte ja nicht sein, wäre aber zu erklären wenn ich 2 bzw. 11 min betrachte.

    Gruß,
    Hendrik

    #2
    Der obere Ansatz scheint mir schlüssig, kannst du aber im Prinzip selbst einfach eruieren ob es passt, indem du mal ein Dummy-Item mit Dummy-Logik entsprechend fütterst?

    Warum bildest du den Durchschnitt nicht mit 'avg' anstatt 'max'-'min'? Bei Letzterem erhältst du ja nicht wirklich den Durchschnitt über die entsprechende Zeit....?

    Kommentar


      #3
      Hallo,

      vielen Dank für deine Hilfe.
      Ich will ja gar nicht den Durchschnitt, sondern die verbrauchte Strommenge in der letzten minute (bzw. 10 minuten) um dann die Leistung zu berechnen indem ich durch 1 bzw 10 min teile.

      Die Dummy-Logik habe ich jetzt gemacht:

      Code:
      max11=sh.Haustechnik.Stromzaehler.FinalerCounter.db('max', '11i', '1i') #Wert vor einer Minute
      min11=sh.Haustechnik.Stromzaehler.FinalerCounter.db('min', '11i', '1i')
      
      max2=sh.Haustechnik.Stromzaehler.FinalerCounter.db('max', '2i', '1i') #Wert vor einer Minute
      min2=sh.Haustechnik.Stromzaehler.FinalerCounter.db('min', '2i', '1i')
      
      max1=sh.Haustechnik.Stromzaehler.FinalerCounter.db('max', '1i')  #Wert vor einer Minute
      min1=sh.Haustechnik.Stromzaehler.FinalerCounter.db('min', '1i')
      
      now=sh.Haustechnik.Stromzaehler.FinalerCounter()
      
      
      logger.info('[Strom] Max11 {0} Min11 {1}'.format(max11,min11))
      logger.info('[Strom] Max2 {0} Min2 {1}'.format(max2,min2))
      logger.info('[Strom] Max1 {0} Min1 {1}'.format(max1,min1))          
      logger.info('[Strom] Aktuell {0}'.format(now))
      Code:
      2018-10-07  16:19:40 INFO     logics.stromzaehler_test [Strom] Max11 16125028.0 Min11 16124954.0
      2018-10-07  16:19:40 INFO     logics.stromzaehler_test [Strom] Max2 16125028.0 Min2 16125005.0
      2018-10-07  16:19:40 INFO     logics.stromzaehler_test [Strom] Max1 16125028.0 Min1 16125012.0
      2018-10-07  16:19:40 INFO     logics.stromzaehler_test [Strom] Aktuell 16125032.0
      2018-10-07  16:20:40 INFO     logics.stromzaehler_test [Strom] Max11 16125046.0 Min11 16124960.0
      2018-10-07  16:20:40 INFO     logics.stromzaehler_test [Strom] Max2 16125046.0 Min2 16125012.0
      2018-10-07  16:20:40 INFO     logics.stromzaehler_test [Strom] Max1 16125046.0 Min1 16125029.0
      2018-10-07  16:20:40 INFO     logics.stromzaehler_test [Strom] Aktuell 16125050.0
      2018-10-07  16:21:40 INFO     logics.stromzaehler_test [Strom] Max11 16125064.0 Min11 16124960.0
      2018-10-07  16:21:40 INFO     logics.stromzaehler_test [Strom] Max2 16125064.0 Min2 16125029.0
      2018-10-07  16:21:40 INFO     logics.stromzaehler_test [Strom] Max1 16125064.0 Min1 16125047.0
      2018-10-07  16:21:40 INFO     logics.stromzaehler_test [Strom] Aktuell 16125065.0
      Wir sehen: der Maximale Wert ist (z.b. im 2. Block) immer 16125046. Der Maximale Wert ist ja der letzte im beobachteten Zeitraum. Dieser endet jeweils vor 1 min.
      Vor 1 min war der Wert aber 16125032.0 (der "Aktuell Wert um 16:29:40). Kann es sein, dass die Abfrage nur ganze Minuten kann und somit den Wert um 16:20:00 zurückgibt?

      Bei den Min-Werten (also dem Anfangswert aus dem jeweiligen Intervall) sehe ich auch keine Logik...
      Im letzten Intervall sind die Werte 16125047 bzw. 16125029. Das sollten ja die Werte am Anfang des Intervalls von vor 2 min (16:21:40- 2= 16:19:40 bzw. vor 1 min also 16:20:40) sein. Da waren die Werte aber 16125032.0 bzw. 16125050.0.

      Gruß,
      Hendrik

      Kommentar


        #4
        Hallo,

        jetzt nochmal über crontab zur vollen minute getriggert
        Code:
        2018-10-07  19:22:01 INFO     logics.stromzaehler_test [Strom] Aktuell 16128745.0
        2018-10-07  19:23:00 INFO     logics.stromzaehler_test [Strom] Max11 16128781.0 Min11 16128317.0
        2018-10-07  19:23:00 INFO     logics.stromzaehler_test [Strom] Max2 16128781.0 Min2 16128695.0
        2018-10-07  19:23:00 INFO     logics.stromzaehler_test [Strom] Max1 16128781.0 Min1 16128732.0
        2018-10-07  19:23:00 INFO     logics.stromzaehler_test [Strom] Aktuell [MARKIEREN]16128793.0[/MARKIEREN]
        2018-10-07  19:24:00 INFO     logics.stromzaehler_test [Strom] Max11[B] 16128834.0[/B] Min11 16128343.0
        2018-10-07  19:24:00 INFO     logics.stromzaehler_test [Strom] Max2   [B]16128834.0[/B] Min2 16128732.0
        2018-10-07  19:24:00 INFO     logics.stromzaehler_test [Strom] Max1   [MARKIEREN][B]16128834.0[/B][/MARKIEREN] Min1 16128782.0
        2018-10-07  19:24:00 INFO     logics.stromzaehler_test [Strom] Aktuell [U]16128844.0[/U]
        2018-10-07  19:25:00 INFO     logics.stromzaehler_test [Strom] Max11 [U]16128844.0[/U] Min11 16128366.0
        2018-10-07  19:25:00 INFO     logics.stromzaehler_test [Strom] Max2 16128844.0 Min2 16128782.0
        2018-10-07  19:25:00 INFO     logics.stromzaehler_test [Strom] Max1 16128844.0 Min1 16128835.0
        2018-10-07  19:25:00 INFO     logics.stromzaehler_test [Strom] Aktuell 16128892.0

        Um 19:24: der Maximale Wert von vor einer minute wird mit 16128834.0 angegeben. Der aktuelle Wert um 19:23 war aber 16128793.

        Um 19:25 passt es aber (unterstrichene Werte).

        Ich bin etwas ratlos.

        Gruß,
        Hendrik

        Kommentar

        Lädt...
        X