Ankündigung

Einklappen
Keine Ankündigung bisher.

Item negativer Wert - eval_trigger-Timing verbessern

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

    Item negativer Wert - eval_trigger-Timing verbessern

    Hallo zusammen,

    möchte euch kurz die Situation beschreiben: seit ein paar Tagen läuft die PV-Anlage, soweit sogut.
    Der Wechselrichter stellt eine ganze Menge an Daten (per Modbus --- danke an die Kollegen, für das modpus-plugin) zur Verfügung. Unter anderem seine aktuelle Leistung
    Der Stromzähler (EMH - auch hier ein Danke an die Plugin Ersteller) liefert ebenfalls seine Leistung (Bei "Kauf vom EVU" mit Vorzeichen "Plus" --- bei "ich verkaufe an EVU" mit Vorzeichen "Minus" ---- die Vorzeichen erscheinen im SHNG - der Zähler selbst zeigt einen Pfeil in die eine oder andere Richtung)

    Vor der PV-Anlage. Zeigte die Leistung vom Stromzähler natürlich den "aktuellen Verbrauch" in Watt, des Hauses an

    Jetzt wollte ich gerne die "Momentan im Haus gebrauchte Leistung" anzeigen. Das klappt auch einigermaßen allerdings wird der Wert manchmal negativ.

    Was meiner Meinung nach nur daran liegen kann, dass
    WR und SZ nicht immer gleichzeitig ihre Werte liefern. Ich vermute dass der WR nur einen neuen Wert sendet wenn sich dieser "deutlich" vom Vorgänger verändert. Wissen tue ich es allerdings nicht.

    Beispiel:
    WR-Leistung 10.000
    SZ-Anzeige - 8.000
    ---> Momentan verbrauch des Hauses 2.000 Watt --> 10.000 - 8.000 --> einfache Rechnung

    WR 1.000
    SZ 2.000
    Haus braucht 3.000 Watt --> 1.000 - 2.000 = -1.000 Rechnung falsch


    Deshalb ist die Rechnung folgende:

    WR - SZ * (-1)
    bzw. im Item so:
    eval: round(sh.Photovoltaik.AC_Leistung() - (sh.verbrauch_strom.verbrauch.leistung() * - 1), 2)

    Code:
    verbrauch_strom:
            zaehlertotal: # Zaehlerstand Bezug vom Stromzaehler ohne Umwandlung Rundung etc.
                name: Zaehlerstand
                type: num
                database: init
                sml_obis: 1-0:1.8.0*255
                
            zaehlerpv: # Zaehlerstand Einspeisung vom Stromzaehler ohne Umwandlung Rundung etc.
                type: num
                sml_obis: 1-0:2.8.0*255
                  
            moment_verbrauch: # aktueller Eigenverbrauch
                type: num
                eval: round(sh.Photovoltaik.AC_Leistung() - (sh.verbrauch_strom.verbrauch.leistung() * - 1), 2)
                eval_trigger:
                    - verbrauch_strom.zaehlerpv
                    - verbrauch_strom.verbrauch.leistung
                    - Photovoltaik.AC_Leistung
          
            verbrauch:      
                einspeiser:
                    name: Einspeisezaehlerstand in kWh
                    type: num
                    database: init
                    eval: round(sh.verbrauch_strom.zaehlerpv() / 1000, 2)
                    eval_trigger: verbrauch_strom.zaehlerpv
                    
                    einnahme:
                        name: Gesamteinnahme in €
                        type: num
                        eval: round(sh.verbrauch_strom.verbrauch.einspeiser() * 0.0633, 2)
                        eval_trigger: verbrauch_strom.verbrauch.einspeiser                  
                
                leistung:
                    type: num
                    database: init
                    sml_obis: 1-0:16.7.0*255 # Momentane Leistung (in W)
                    enforce_updates: True
                    eval: round(value, 2)
                    eval_trigger:
                        - verbrauch_strom.zaehlertotal
                        - verbrauch_strom.zaehlerpv
                        - Photovoltaik.AC_Leistung
                
                eigenverbrauch:
                    type: num
                    eval: sh.Photovoltaik.Gesamt_Erzeugung() - sh.verbrauch_strom.verbrauch.einspeiser()
                    eval_trigger: verbrauch_strom.verbrauch.einspeiser
    
                # in kwh
                zaehler:
                    name: Stromzählerstand in kWh
                    type: num
                    database: init
                    eval: round(sh.verbrauch_strom.zaehlertotal() / 1000, 2)
                    eval_trigger: verbrauch_strom.zaehlertotal

    Hat jemand eine Idee wie das in den Griff zu bekommen ist - Danke
    Zuletzt geändert von bmx; 13.04.2022, 05:08. Grund: Pfeile korrigiert und Luft aus dem Code abgelassen

    #2
    Versuch mal bitte (Nur ein Versuch):
    (sh.verbrauch_strom.verbrauch.leistung() * (- 1)), 2)

    Kommentar


      #3
      schuma Du meinst hier???

      eval: round(sh.Photovoltaik.AC_Leistung() - (sh.verbrauch_strom.verbrauch.leistung() * - 1), 2)
      ersetzen durch (sh.verbrauch_strom.verbrauch.leistung() * (- 1)), 2)




      Hier mal 2 Screenshots

      1.png
      2.png



      3.png
      4.png

      Bild 1 und 2 negativer Momentan Verbrauch kann nicht sein
      Bild 3 und 4 von jetzt gerade --> sieht plausibel aus

      Kommentar


        #4
        Zu:
        (sh.verbrauch_strom.verbrauch.leistung() * (- 1)), 2)


        macht in meinen Augen keinen Unterschied - ich denke die Klammer um "- 1" macht die Sache etwas übersichtlicher ansonsten kein Einfluss - liege ich da richtig?

        Vom Ergebnis hat sich nichts getan:
        Es wurde ein falscher Wert geliefert, kurz drauf einer der stimmen könnte.

        5.png
        6.png


        Kommentar


          #5
          Ok, war nur ein Schnellschuss. Ich hatte schon mal ein ähnliches Verhalten wo die Klammer dann die Lösung war.

          Kommentar


            #6
            schuma
            kein Thema es wäre nicht das erste mal, dass ein fehlendes Zeichen die Lösung war

            Kommentar


              #7
              Update:

              Der Wert nimmt auch mal unögliche Werte im positiven an...

              7.png

              Kommentar

              Lädt...
              X