Ankündigung

Einklappen
Keine Ankündigung bisher.

Wattstunden aus Wattwert für Stromzählung

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

    Wattstunden aus Wattwert für Stromzählung

    Hallo,

    ich zerberche mir gerade den Kopf darüber, wie man mittels Sqlite aus Wattwerten (von Aktor mit Strommessung) die (kilo)Wattstunden ausrechnet.
    Meine Idee:

    Stromzählerwertaktuell = Stromzählerwertalt + Durchschnittswattwert der letzten Stunde

    das müsste dann jede Stunde aufaddiert werden.

    Ist das ein sinnvoller Weg?

    Ich finde leider keine Beispiele bzw. eine Doku über die Funktionen von SQlite.

    #2
    hier noch meine Versuche:

    PHP-Code:
        [[VerbrauchBeamer]]
            
    type = num
            visu 
    = yes
            sqlite 
    = yes
            visu_acl 
    = rw
            knx_dpt 
    = 12
            knx_send 
    = 3/0/12
            
    eval = sh.Wohnzimmer.VerbrauchBeamerAmpere()*220
            eval_trigger 
    = Wohnzimmer.VerbrauchBeamerAmpere

        
    [[KWHBeamer]]
            
    name = StromzaehlerBeamer
            type 
    = num
            visu 
    = yes
            enforce_updates 
    = yes
            knx_dpt 
    = 12
            
    eval= sh.Wohnzimmer.VerbrauchBeamer.db('avg', '1i')  
            
    cycle=60 
    Verbrauchbeamer gibt den altuellen Wattwert aus. Ich möchte nun den durchschnittlichen Verbrauch einer Minute haben, dann kann ich daraus die Wattminuten errechnen und in einem Zähler aufsummieren. Mein Problem: KWHBeamer läuft so nicht (immer 0), mit eval_trigger kriege ich es ans Laufen, hilft mir aber nicht, da ich ja den Schnitt eines bestimmten Zeitfensters benötige, damit ich damit den Verbrauch aufsummieren kann.

    Kommentar


      #3
      Hi Marco,

      sorry, ich kann mich momentan nicht reindenken. Ich würde es aber wohl eher in einer Logik machen, die regelmäßig (z.B. alle Stunde) den Wert berechnet.

      Das cycle bei einem Item funktioniert nicht.

      Bis bald

      Marcus

      Kommentar


        #4
        Hallo,

        hierfür gibt es verschiedene Lösungsmöglichkeiten.
        Lies mal hier:
        https://knx-user-forum.de/smarthome-...ev_change.html


        Implementiert habe ich zur Zeit o.g. Frequenzzähler:
        Code:
                 [[[Momentanleistung_freq]]]
                name = Momentanleistung_freq
                type = num
                sqlite = yes
                knx_dpt = 14
                knx_send = 6/7/3
        #Frequenzzähler: Jeder Counter=1/800kWh=3600/800kws=3600/800*1000Ws; Zeit zwischen zwei Impulsen messen und dadurch teilen --> W
                eval = 4500/sh.Allgemein.Stromzaehler.Counter.prev_age()
                eval_trigger=Allgemein.Stromzaehler.Counter
                enforce_updates=yes
                    sv_widget={{ plot.period('p998dsd71', 'item', 'avg', '2h',0,0,4000, ''    , '', '','area') }}
                visu=yes
        und die einfache "delta P durch delta t" Variante:
        Code:
             [[[Momentanleistung_1min]]]
                name = Momentanleistung_1min
                type = num
                sqlite = yes
                knx_dpt = 14
                #knx_send = 6/7/2
                eval = (sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('max', '1i', '1i'))*60.0*1000.0
                eval_trigger=Allgemein.Stromzaehler.Counter
                    sv_widget={{ plot.period('p998dd71', 'item', 'avg', '2h', 0, 0,4000, ''    , '', '','area') }}
                visu=yes
        Gruß,
        Hendrik

        Kommentar


          #5
          Hi Hendrik,

          ich habe Deine Sammlung hervorragend für die ebenfalls noch einzupflegenden S0 Schnittstellen am Binäreingang nutzen können - vielen Dank.

          Bei meiner Konstellation ist es ja etwas anders:
          - ich bekomme einen Amperewert und will daraus einen Zähler "bauen".

          Meine Herangehensweise:
          1. Ampere in Watt umrechnen
          2. Wattwerte mit SQLITE speichern
          3. Durchschnittswattwert für einen bestimmten Zeitraum (z.B. 1min) über Logik ausrechnen lassen
          4. Den Durchschnittswattwert einer Minute jede Minute zu einem Zähler addieren. Ergibt dann WattMinuten
          5. Wattminuten/60/1000 = kwh

          bei 3 komme ich gerade nicht weiter, hier mal meine Versuche:

          items:

          PHP-Code:

          [[VerbrauchBeamerAmpere]]
                  
          name = VerbrauchBeamerAmperen
                  type 
          = num
                  sqlite 
          = yes
                  visu_acl 
          = rw
                  knx_dpt 
          = 14
                  knx_listen 
          = 3/0/7
                  
                          
              
          [[VerbrauchBeamer]]
                  
          name = VerbrauchBeamerWatt
                  type 
          = num
                     sqlite 
          = yes
                  visu_acl 
          = rw
                  knx_dpt 
          = 14
                  knx_send 
          = 3/0/12
                  
          eval = sh.Wohnzimmer.VerbrauchBeamerAmpere()*220
                  eval_trigger 
          = Wohnzimmer.VerbrauchBeamerAmpere
                  enforce_updates 
          = yes
              
              
          [[WmBeamer]]
                  
          name = wattminutenBeamer
                  type 
          = num
                  sqlite 
          = yes
                  visu_acl 
          = rw
                  knx_dpt 
          = 14
                  knx_send 
          = 3/0/13
                  
                  
                  
          [[ZaehlerstandBeamerTemp]]
                  
          name = StromzaehlerBeamerTemp
                  cache 
          = on
                  type 
          = num
                    visu_acl 
          = rw
                  knx_dpt 
          = 14
                  knx_send 
          = 3/0/14
                  knx_listen 
          = 3/0/14
                  enforce_updates 
          = yes
                  
              
          [[ZaehlerstandBeamer]]
                  
          name = StromzaehlerBeamer
                  type 
          = num
                  sqlite 
          = yes
                    visu_acl 
          = rw
                  knx_dpt 
          = 14
                  knx_send 
          = 3/0/15
                  knx_listen 
          = 3/0/15
                  
          eval = sh.Wohnzimmer.ZaehlerstandBeamerTemp()/60000
                  eval_trigger 
          = Wohnzimmer.ZaehlerstandBeamerTemp 
          logik für Durchschnittswatt (hier ist glaube ich der Fehler, es kommt keine Ausgabe):

          PHP-Code:
          # zaehlerbemaer.py
          logger.info("kwh Beamer berechnen")
          sh.Wohnzimmer.WmBeamer((sh.Wohnzimmer.VerbrauchBeamer.db('avg','1i')) 
          logik für das hochzählen des Zählers:

          PHP-Code:
          # kwhbeamer.py
          logger.info("kwh ZaehlerstandBeamer berechnen")
          sh.Wohnzimmer.ZaehlerstandBeamerTemp(sh.Wohnzimmer.WmBeamer() + sh.Wohnzimmer.ZaehlerstandBeamerTemp()) 
          und so rufe ich die Logik auf:

          PHP-Code:
          # logic.conf

          [hello]
              
          filename = hello.py
              crontab 
          = init

          [dummy]
              
          filename = dummy_series.py
              cycle 
          = 300

          [zaehlerbeamer]
              
          filename = zaehlerbeamer.py
              cycle 
          = 60

          [kwhbeamer]
              
          filename = kwhbeamer.py
              cycle 
          = 60 

          Kommentar


            #6
            soo, ich setze den Monolog mal fort, ich habe jetzt eine nach erster Testung funktionierende Lösung gefunden. Vielleicht kann Sie ja noch jemand gebrauchen oder hat Verbesserungsvorschläge wie man aus einem Amperewert eine Zählerfunktion umsetzen kann.
            Ich habe mir die Sachen von Hendrik noch mal angeschaut und es dann ohne Logik umsetzen können (danke):

            PHP-Code:

                
            [[VerbrauchBeamerAmpere]] #Amperewert der über den Strommessaktor entweder regelmäßig oder nach Änderung über den Bus gesendet wird (der Zählerstand kann erst nach dem Senden eines neuen Wertes aktualisiert werden).
                    
            name = VerbrauchBeamerAmpere
                    type 
            = num
                    sqlite 
            = yes
                    knx_dpt 
            = 14
                    knx_listen 
            = 3/0/7
                    enforce_updates 
            = yes

                
            [[VerbrauchBeamer]] #rechnet den Amperewert in Watt um
                    
            name = VerbrauchBeamerWatt
                    type 
            = num
                    sqlite 
            = yes
                    knx_dpt 
            = 14
                    
            eval = sh.Wohnzimmer.VerbrauchBeamerAmpere()*230
                    eval_trigger 
            = Wohnzimmer.VerbrauchBeamerAmpere
                    
                
                
            [[WmBeamer]] #errechnet aus dem vorherigen Amperewert und dem Zeitabschnitt zwischen dem Senden des vorherigen Amperewertes und dem Senden des neuen Amperewerts die in dieser Zeit verbrauchten Strom aus und bezieht dabei den Zeitabschnitt ein. Ergebniss sind die in dem Abschnitt verbrauchten kwh
                    
            name = StromzaehlerBeamer2
                    type 
            = num
                    sqlite 
            = yes
                    knx_dpt 
            = 14
                    
            eval =  (sh.Wohnzimmer.VerbrauchBeamerAmpere.prev_value()*220/1000)/(3600/sh.Wohnzimmer.VerbrauchBeamerAmpere.prev_age())
                    
            eval_trigger = Wohnzimmer.VerbrauchBeamerAmpere
                    
                    
                
            [[ZaehlerstandBeamer]]#addiert die in WmBeamer errechneten kwh zum Zähler hinzu
                    
            name = StromzaehlerBeamer
                    type 
            = num
                    sqlite 
            = yes
                    cache 
            = on
                    knx_dpt 
            = 14
                    
            eval = sh.Wohnzimmer.WmBeamer() + sh.Wohnzimmer.ZaehlerstandBeamer()
                    
            eval_trigger = Wohnzimmer.VerbrauchBeamerAmpere 
            es würde mich freuen, wenn es noch jemand braucht kann oder mir Verbesserungsvorschläge gibt.
            Mit den vorliegenden Werten kann man natürlich auch den Verbrauch für einen definierten Zeitraum mittels sqlite abfragen:

            PHP-Code:

                
            [[kwh1h]]
                    
            name = kwh1hBeamer
                    type 
            = num
                    knx_dpt 
            = 14
                    
            eval = (sh.Wohnzimmer.ZaehlerstandBeamer()- sh.Wohnzimmer.ZaehlerstandBeamer.db('max', '1h', '1h'))
                    
            eval_trigger = Wohnzimmer.ZaehlerstandBeamer 
            hierbei gilt es zu bedenken, dass man dann den Amperewert zyklisch senden sollte (sonst bleibt der zähler für 1h bei 0 Ampere über mehr als eine Stunde fälschlicherweise zu hoch stehen, da die Funktion nicht getriggert wird.

            Kommentar


              #7
              Hallo Marco,

              nur mal so nebenbei, wieso sollten die Item über die Visu verändert werden dürfen?

              Bis bald

              Marcus

              Kommentar


                #8
                berechtigter Einwand, habe ich geändert.

                Kommentar


                  #9
                  Hallo,

                  Und noch was, haben wir nicht 230V in Deutschland? Du rechnest mit 220.

                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Ach ja - ich hatte es für meine Hacienda in Südamerika geplant , in Deutschland sind es natürlich 230V!

                    Kommentar

                    Lädt...
                    X