Ankündigung

Einklappen

Sammelbestellung ETS5-UPGRADE gestartet...

Die Sammelbestellung für ETS5 UPGRADE ist gestartet. Infos unter: Link
Mehr anzeigen
Weniger anzeigen

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