Ankündigung

Einklappen
Keine Ankündigung bisher.

kWh - Wh miteinander verrechnen

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

    kWh - Wh miteinander verrechnen

    Hallo,

    Ich habe folgende zwei Items:

    Code:
    Number:Energy Day_Energy "Energieerzeugung Tag" { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneldayenergy" }
    Number:Energy EnergieproduktionTag "Stromeinspeisung heute [%d Wh]"
    Das erste liefert mit kWh das zweite Wh.
    Leider bekomme ich es nicht hin die beiden voneinander zu subtrahieren.

    Folgende Rule habe ich versucht:

    Code:
    rule "Eigenverbrauch Tag"
     
    when
    Time cron "0 0 0 ? * * *" or // Regel wir jeden Tag um 00:00:00 ausgeführt
    then
    
    var tempEigenverbrauch = EnergieproduktionTag.state as Number
    var tempTagesproduktion = Day_Energy.state as Number
    
    logInfo("produktionenergy","Eigenverbrauch1: {}", tempEigenverbrauch)
    logInfo("produktionenergy","Eigenverbrauch2: {}", tempTagesproduktion)
    
    EnergieEigenverbrauchTag.postUpdate(tempTagesproduktion - (tempEigenverbrauch/1000)) as Number
    logInfo("produktionenergy","Eigenverbrauch3: {}", EnergieEigenverbrauchTag.state)​
    
    end​
    Da das zweite Item ja Wh liefert muss ich ja durch 1000 teilen um auf kWh zu kommen. Aber irgendwie rechnet openhab so nur Mist.
    Folgendes Ergebnis erhalte ich:

    2022-11-14 21:13:00.774 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch1: 17488 Wh
    2022-11-14 21:13:00.779 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch2: 20.511 kWh
    2022-11-14 21:13:00.785 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch3: 7.37766432E7 Wh​
    Was mach ich denn falsch?

    #2
    Nein, da muss nichts geteilt werden, denn beide Items sind vom Typ Number:Energy, das bedeutet, es handelt sich um UoM Items, die einheitenbehaftet sind.

    Also so:
    Code:
    EnergieEigenverbrauchTag.postUpdate((Day_Energy.state as Number) - (EnergieproduktionTag.state as Number))

    Kommentar


      #3
      Funktioniert aber trotzdem nicht:

      2022-11-14 21:55:00.969 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch1: 17488 Wh
      2022-11-14 21:55:00.971 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch2: 20.511 kWh
      2022-11-14 21:55:00.974 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch3: 10882800 Wh
      Liegt es vielleicht daran wie das item EnergieproduktionTag berechnet wird?



      Code:
      rule "Energieproduktion Tag"
      
      when
      Item Meter_EnergyProduced received update or
      Time cron "0 1 0 1/1 * ? *" // Regel wir jeden Tag um 00:01 ausgeführt, damit sich der Wert von "EnergieproduktionTag" auf 0 ändert
      then
      
      EnergieproduktionTag.postUpdate(Meter_EnergyProduced.deltaSince(now.with(LocalTime.of(0, 0, 0, 0))) as Number)
      
      end

      Kommentar


        #4
        Ich fürchte, Du gehst reichlich kompliziert an ein vermutlich eher einfaches Problem heran.

        Deshalb mal andersrum: Was willst Du erreichen?

        Kommentar


          #5
          Zitat von udo1toni Beitrag anzeigen
          Ich fürchte, Du gehst reichlich kompliziert an ein vermutlich eher einfaches Problem heran.
          Das glaube ich jetzt zwar nicht, aber schauen wir mal.

          Zitat von udo1toni Beitrag anzeigen
          Deshalb mal andersrum: Was willst Du erreichen?
          Ich habe das Fronius Binding installiert, damit erhalte ich verschiedene Werte meiner PV-Anlage und den Verbrauch über das verbaute Smart Meter TS 65A-3.
          Nur den direkten Verbrauch kann ich damit nicht abrufen. Diesen muss ich mir nun berechnen.

          Über das item bekomme ich die PV-Erzeugung des Tages.

          Code:
          Number:Energy Day_Energy "Energieerzeugung Tag" { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneldayenergy" }
          Dieses item liefert mir das was ins Netz eingespeist wurde, allerdings als fortlaufenden Wert.

          Code:
          Number:Energy Meter_EnergyProduced "Energie ins Netz eingespeist" { channel="fronius:meter:mybridge:mymeter:energyrealsumproduced" }
          Mit der oben geposteten rule "Energieproduktion Tag" berechne ich mir den Tageswert der eingespeisten Energie.

          Nun muss ich den Tageswert der eingespeisten Energie von der PV-Erzeugung des Tages abziehen um den direkten Verbrauch zu bekommen.
          Dafür ist die rule "Eigenverbrauch Tag" im ersten Post.

          Ich wüsste nicht wie ich das anders lösen könnte.

          Kommentar


            #6
            Und Du hast keinen Zähler, der das erfasst? Machst Du keine Einspeisung?

            Mein Aufbau sieht so aus, dass der Fronius Inverter hinter dem Hauptzähler angeschlossen ist, hinter diesem Punkt sitzt ein weiterer Zähler und danach sind dann die Verbraucher angeschlossen. Der Hauptzähler liefert Einspeisung und Bezug als Zählerstand, der zweite Zähler liefert den Verbrauch als Zählerstand.

            Ich sammle bei mir einfach die Zählerstände ein, sowohl die vom Hauptzähler als auch die vom Zwischenzähler, den Tagesverbrauch bestimme ich einfach, indem ich den Stand von 0 Uhr vom aktuellen Stand abziehe, ohne weitere Berechnungen.

            Kommentar


              #7
              Zitat von udo1toni Beitrag anzeigen
              Und Du hast keinen Zähler, der das erfasst? Machst Du keine Einspeisung?
              Natürlich hab ich eine Zähler und Einspeisung mache ich auch. Ob der Zähler den direkten Verbrauch erfasst kann ich Dir nicht sagen.
              Zum auslesen des Zählers würde ich noch einen IR-Lesekopf usw. benötigen.
              Aber da ich ja auch das Fronius Smart Meter hab und bestimmte Werte damit erfasst werden sollte es doch auch so gehen.
              So schwer ist eine Subtraktion ja nicht.
              Allerdings weiß ich nicht was openhab da rechnet bzw. wie es auf den Wert kommt.

              2022-11-16 15:23:39.811 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch1: 12964 Wh
              2022-11-16 15:23:39.813 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch2: 15.921 kWh
              2022-11-16 15:23:39.819 [INFO ] [b.core.model.script.produktionenergy] - Eigenverbrauch3: 10638000 Wh
              Denn 15921Wh - 12964 Wh ergibt bei mir 2957 Wh und nicht 10638000 Wh.
              Zuletzt geändert von TomW80; 16.11.2022, 20:05.

              Kommentar


                #8
                So funktioniert es jetzt:

                Code:
                Number:Energy EnergieproduktionTag "Stromeinspeisung heute [%.2f Wh]"
                Number:Energy EnergieEigenverbrauchTag "Eigenverbrauch heute [%.2f kWh]"​
                Code:
                rule "Eigenverbrauch Tag"
                 
                when
                Item Meter_EnergyProduced received update
                then
                
                var tempEinspeisung = EnergieproduktionTag.state as QuantityType<Energy>
                var tempTagesproduktion = Day_Energy.state as QuantityType<Energy>
                
                var tempEigenverbrauch = tempTagesproduktion - tempEinspeisung
                
                logInfo("produktionenergy","Einspeisung: {}", tempEinspeisung)
                logInfo("produktionenergy","PV-Produktion: {}", tempTagesproduktion)
                
                EnergieEigenverbrauchTag.postUpdate(tempEigenverbrauch as Number)
                
                logInfo("produktionenergy","Eigenverbrauch: {}", EnergieEigenverbrauchTag.state)
                end​

                Kommentar


                  #9
                  Prima, dass Du die Lösung gefunden hast!

                  Kommentar

                  Lädt...
                  X