Zuletzt angesehen: • 2r-stromzaehler
Dies ist eine alte Version des Dokuments!
MQTT 2R-Stromzähler (Zweirichtung) / Verbrauchsmessung eines Ferraris-Stromzählers
Konsolen Script
In folgendem Script (Konsolen > Script konfigurieren) sind zwei Variablenwerte ggf. anzupassen.
Und zwar die Zählerkonstante (zk), welche am Stromzähler aufgedruckt und mit der Einheit (U/kWh) angegegben ist und die Mindestumlaufzeit (mu) der Aluminium-Drehscheibe.
- zk (Zählerkonstante)
- mu (Mindest Umlaufzeit der Scheibe)
Für zk ist standardmäßig ein Wert von 75 U/kWh hinterlegt. Bitte diesen Wert mit der Angabe auf dem eigenen Stromzähler abgleichen.
Für mu ist ein Standardwert von 10 Sekunden voreingestellt.
Der Wert für mu kann zunächst beibehalten werden. Wer eine genauere Einstellung wünscht, kann einen oder mehrere starke Verbraucher (z. B. Wasserkocher, Föhn) einschalten und mit einer Stoppuhr messen, wie viele Sekunden die Aluminium-Drehscheibe für eine vollständige Umdrehung benötigt. Dieser gemessene Wert – oder etwas weniger – sollte dann als mu verwendet werden.
Hinweis: Danach unbedingt prüfen, ob der Wert für CounterDebounce noch passend ist.
mu beeinflusst maßgeblich die Berechnung der aktuellen Leistung und die Erkennung der Zählrichtung (vorwärts oder rückwärts). Dennoch kann der voreingestellte Wert mu = 10 für den Anfang problemlos verwendet werden.
>D p:zs=0 p:s1=0 p:total=0 p:e2=0 p:e3=0 fl1=0 fl2=0 rt="unbekannt" c1=0 c2=0 c1old=0 c2old=0 c1ts=0 c2ts=0 c1tsold=0 c2tsold=0 zk=75 mu=10 hr=0 dy=0 sec=0 power=0 h1=0 e1=0 >B =>sensor53 l255 >F h1=zs-s1 e1=h1/(2*zk) if fl1==1 and upsecs>(c1ts+mu) then fl1=0 endif if fl2==1 and upsecs>(c2ts+mu) then fl2=0 endif // links if c1!=c1old then fl1=1 c1ts=upsecs if fl2==1 then zs=zs-1 rt="rückwärts" fl2=0 fl1=0 endif endif // rechts if c2!=c2old then fl2=1 c2ts=upsecs if fl1==1 then zs=zs+1 rt="vorwärts" fl1=0 fl2=0 endif endif ' Aktuelle Leistung c1ts=upsecs if c1>c1old and c1ts>(c1tsold+mu) then sec=c1ts-c1tsold power=3600000/(sec*zk) c1tsold=c1ts endif if c1ts>(c1tsold+540) then sec=c1ts-c1tsold power=0 else endif c1old=c1 c2old=c2 ' Historische Werte hr=hours dy=day if chg[hr]>0 and hr==0 then s1=zs e3=e2 e2=e1 endif ' MQTT if upsecs%tper==0{ =>Publish tele/%topic%/main/energytotal %total% =>Publish tele/%topic%/main/actpower %0power% =>Publish tele/%topic%/main/today_kwh %2e1% =>Publish tele/%topic%/main/yd_kwh %2e2% =>Publish tele/%topic%/main/dbyd_kwh %2e3% =>Publish tele/%topic%/json {"energytotal": "%total%", "actpower": "%0power%", "today_kwh": "%2e1%", "yd_kwh": "%2e2%", "dbyd_kwh": "%2e3%",} } >T c1=Counter#C1 c2=Counter#C2 total=zs/zk >W Zählerstand: {m} %total% kWh Richtung: {m} %rt% Leistung: {m} %0power% W Sensor L: {m} %0fl1% Sensor R: {m} %0fl2% ============ Verbrauch: Heute : {m} %2e1% kWh Gestern : {m} %2e2% kWh Vorgestern: {m} %2e3% kWh
Zählerstand einstellen
Der auf dem Stromzähler bereits erfasste Zählerstand wird folgendermaßen in TASMOTA per Konsole übertragen:
Kommando: script >zs= (ZS x ZK)
Die Berechnung richtet sich nach der im Skript definierten Zählerkonstante (zk), die angibt, wie viele Zählerumdrehungen einer verbrauchten Kilowattstunde entsprechen.
ZS = Zählerstand (kWh)
ZK = Zählerkonstante (U/kWh)
Beispiel: 44717,3 kWH * 75
script >zs=3353797,5