Ankündigung

Einklappen
Keine Ankündigung bisher.

S0 Zähler Momentanverbrauch ermitteln

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

    S0 Zähler Momentanverbrauch ermitteln

    Guten Abend zusammen,

    ich hatte mal wieder etwas Zeit zu spielen und wollte aus den Impulsen eines S0 Drehstromzähler den Momentanverbrauch berechnen. Per google habe ich auch eine passende Rule gefunden und etwas angepasst. Leider bekomme ich die Meldung "Configuration model 'snullzaehler.rules' is either empty or cannot be parsed correctly!"

    Hier die betreffenden Items:
    PHP-Code:
    Number Strom_WP_VerdichterImpulse               "Impulse Strom WP Verdichter[%d Imp]" <temperature> (gStrom, gVerbrauch, gChart)                { knx="<13.001:2/1/30"}
    Number Strom_WP_MomentanVerbrauchVerdichter "Momentanverbrauch Verdichter [%d W]" <temperature> (gStrom, gVerbrauch, gChart) 
    
    Und hier die Rule:
    PHP-Code:
    //var String TAG = "strom.rules"
    var org.joda.time.DateTime g_lastTime
    var Number g_lastValue = 0
    
    rule "Power Current"
    when
       Item Strom_WP_VerdichterImpulse changed
    then
       var org.joda.time.DateTime currentTime = now
       var Number currentValue = Strom_WP_VerdichterImpulse.state as DecimalType
       if(g_lastTime !== null && g_lastValue > 0)
       {
       var Number oldValue = g_lastValue
       var Number deltaKWh = currentValue - oldValue
       var long deltaMillis = currentTime.millis - g_lastTime.millis
    
          if(deltaMillis > 0 && deltaMillis < 40000)
          {
          //logInfo(TAG, "old=" + oldValue + " current=" + currentValue + " deltaKWh=" + deltaKWh + " deltaMS=" + deltaMillis )      
          var Number deltaWh = deltaKWh * 1000
          var Number millisToHours = 60 * 60 * 1000;
          var Number watts = deltaWh * millisToHours / deltaMillis
          if(watts >= 0 && watts <= 10000) 
         
          postUpdate(Strom_WP_MomentanVerbrauchVerdichter, watts)
          }
       }
       g_lastTime = currentTime
       g_lastValue = currentValue
    end 
    
    Um den richtigen Wert geht`s mir grad noch gar nicht, einfach das die Rule durchläuft und was berechnet. Hat jemand noch nen Tip?

    #2
    Habs gefunden! War wohl doch schon etwas spät

    Erstens musste ich sehr wohl die Formeln auf meine Zählimpulse zuerst anpassen, weil sonst überhöhte Werte rausgekommen sind die dann mit dem if(watts >= 0 && watts <= 10000) ausgefilter worden sind. Der Schritt über deltaKWh ist bei mir nicht notwendig, ein Impuls ist bei mir 1Wh

    Mein neuer Code sieht jetzt so aus
    PHP-Code:
    var String TAG = "strom.rules"
    var org.joda.time.DateTime g_lastTime
    var Number g_lastValue = 0
    rule "Power Current"
    when
    Item Strom_WP_VerdichterImpulse changed
    then
    var org.joda.time.DateTime currentTime = now
    var Number currentValue = (Strom_WP_VerdichterImpulse.state as DecimalType).intValue
    if(g_lastTime !== null && g_lastValue > 0)
    {
    var Number oldValue = g_lastValue
    var Number deltaWh = currentValue - oldValue
    var long deltaMillis = currentTime.millis - g_lastTime.millis
    if(deltaMillis > 0 && deltaMillis < 40000)
    {
    logInfo(TAG, "old=" + oldValue + " current=" + currentValue + " deltaWh=" + deltaWh + " deltaMS=" + deltaMillis )
    var Number millisToHours = 60 * 60 * 1000;
    var Number watts = deltaWh * millisToHours / deltaMillis
    logInfo(TAG, "watts=" + watts )
    if(watts >= 0 && watts <= 10000)
    postUpdate(Strom_WP_MomentanVerbrauchVerdichter, watts)
    }
    }
    g_lastTime = currentTime
    g_lastValue = currentValue
    end 
    
    Das item hab ich noch zu Float geändert:
    PHP-Code:
    Number Strom_WP_MomentanVerbrauchVerdichter "Momentanverbrauch Verdichter [%.0f W]" <temperature> (gStrom, gVerbrauch, gChart) 
    

    Kommentar

    Lädt...
    X