Hauptmenü

S0 Zähler

Begonnen von almdandi, 29 November 2016, 13:50:51

Vorheriges Thema - Nächstes Thema

almdandi

Hallo,

Ich würde gerne einen Zäher über S0 auswerten. Zum Zählen benutzte ich einen DS2423 der in fhem schon eingebunden ist.
Was ich nicht verstehe, ist das differential bei dem userreading. Wie es mir aus den Impulsen den Momentanwert berechnet.

Ich benutzte beide Zähler des DS2423 für Bezug und Einspeisung. Lauf meinen STW bekomme ich 50 Impulse pro kWh.

Könnte mir jemand bitte erklären, wie ich das differential anwenden muss oder mir ein Beispiel Userreading zur Verfügung stellen?

mfg
almdandi



Otto123

Zitat von: almdandi am 29 November 2016, 13:50:51
Was ich nicht verstehe, ist das differential bei dem userreading. Wie es mir aus den Impulsen den Momentanwert berechnet.
Hi,

Zitatdifference: das Reading wird auf die Differenz zw. dem aktuellen und dem vorherigen Wert gesetzt.
differential: das Reading wird auf die Differenz zw. dem aktuellen und dem vorherigen Wert, geteilt durch die Sekunden zw. der aktuellen Zeit und der letzten Auswertung, sekundengenau. Kein Wert wird berechnet, falls der Unterschied unter eine Sekunde liegt.
integral: das Gegenteil von differential. Das Ergebnis wird um das Produkt aus der Zeit-Differenz und der Durschnittswert der letzten zwei Readings erhöht.
result += (time - timeold) * (oldval + value) / 2
offset: wenn der aktuellen Wert kleiner als der vorherige Wert ist wird der vorherige Wert zum Reading addiert. Das Reading kann dann als offset verwendet werden um einen Zähler der durch Sromverlust zurückgesetzt wird zu korrigieren.
monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen Wert positiv ist wird diese Differenz zum Reading addiert. Damit lässt sich von einem Zähler der bei Stromverlust zurückgesetzt wird ein monoton wachsender Zähler ableiten.
Beispiel:
attr myPowerMeter userReadings power differential { ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
Achtung:
Falls difference oder differential spezifiziert ist, dann werden für die Berechnung ältere Werte benötigt, d.h. der Wert wird frühestens beim zweiten Änderung gesetzt.
der Name der definierten Readings besteht aus alphanumerischen Zeichen, Unterstrich (_) und Minus-Zeichen (-).

damit liefert dir differential nicht Impulse sondern Impulse pro Sekunde. -> Beispiel: 1 Impulse/sec= 3600 Impulse/h -> 1 kW=50/3600sec -> 1 Impulse/sec=13,88 Watt

Falls ich das jetzt richtig verstanden habe  :-[

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

almdandi

Hallo Otto,

Also wenn ich dich jetzt richtig verstanden habe, sind die Impulse pro Sekunde der Wert der durch differential berechen wert, sprich (counter.A - old(counter.A)) / delta t (interval des OWDevices).
Den Wert denn ich dann bekomme ist xxx Impulse pro Sekunde. Den Wert multipliziere ich dann mit 3600 und dividiere dann das Ergebnis mit 50.

Das Userreading würde dann so aussehen oder?


power.A differential  {
50 / (3600 * ReadingsVal("S0Counter","counters.A",0));;
},
power.B differential {
50 / (3600 * ReadingsVal("S0Counter","counters.B",0));;
}


mfg
almdandi

Otto123

Hi almdandi,

kommt darauf an was Du wissen willst? Die momentane Leistung? die wäre aus meiner Sicht
power.A differential  {ReadingsVal("S0Counter","counters.A",0)*50/3600}

Das was Du im Text geschrieben und in die Formel gepackt hast unterscheidet sich beides von dem.  ???
Oder ich bin verwirrt.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

almdandi

Hallo Otto,

habe das Userreading angepasst aber irgendwie sind die Werte zu klein, übersteigen nie die 1kW.
Geht mir genau gleich, desto länger ich über das nachdenke, desto weniger versteh ich es.

Handel es sich eigentlich bei dem altern Wert der für die nächste Berechnung zwischen gespeichert wird um den Wert des Readings (counters.A) was im Userreading benutzt wird oder um des Wert was das gesamte Userreaing ergab?

mfg
Lukas

Otto123

Hallo Lukas,

Wenn der Wert zu klein ist dann rechne doch nicht in KW sondern in Watt

power.A differential  {ReadingsVal("S0Counter","counters.A",0)*50000/3600}

Mist wir wird es gerade klar:
Du musst erst differential machen und dann rechnen!
;
Also power.A differential  {ReadingsVal("S0Counter","counters.A",0)}, MomentanLeistung {power.A *50000/3600 }

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz