Zuletzt angesehen: • stromzaehler
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
MQTT Stromzähler / Verbrauchsmessung eines Ferraris-Stromzählers
Beschreibung
Ein Ferraris-Zähler erfasst die verbrauchte Energie bei mehrpahsiger Wechselspannung über eine kreisförmige Aluminiumscheibe (Drehscheibe) und zeigt den Verbrauch in Verbindung mit einem mechanischen Zählwerk an.
Der MQTT-Stromzähler erfasst per Infrarot-Messeinheit die umlaufende Aluminiumscheibe und erkennt anhand der roten Markierung die Anzahl der durchgeführten Umläufe.
Mittels der Zählerkonstante des Stromzählers, wird die aktuelle Leistung und der Zählerstand berechnet und im TASMOTA Webinterface angezeigt. Diese Werte können dann per MQTT Protokoll in der Hausautomation weiterverwendet werden.
Messeinheit
Zur Kontrolle der Zählungen wird die linke, grüne LED verwendet. Diese erlischt bei erkannter, roter Markierung auf der Drehscheibe, ansonsten leuchtet sie dauerhaft.
Über das Potentiometer wird der Sensor justiert .
Montage
Ganz entscheidend ist der Abstand zwischen dem Sensor und der Gehäuseglasscheibe des Stromzählers.
Je näher der Sensor an der Glasscheibe sitzt, desto genauer sind die Zählungen und desto geringer sind die Falschmeldungen.
Dementsprechend ist ein relativ dünnes, doppelseitiges Klebeband zu verwenden.
Mithilfe der Gehäuseausrichtung (Rechtecke links/rechts), wird die Messeinheit auf die Glasscheibe des Stromzählers geklebt.
Mit einem kleinen Schraubendreher wird den IR-Sensor so fein eingestellt, dass die linke, grüne LED bei laufender Drehscheibe gerade noch leuchtet.
Es muss so fein eingestellt sein, dass bei geringster Berührung die LED nicht mehr leuchtet.
Danach ist zu kontrollieren, ob die LED erlischt, wenn die rote Markierung auf der Aluminium-Drehscheibe den Sensor erreicht. Beim verlassen des Sensors muss die LED wieder leuchten.
Der MQTT-Stromzähler zählt dann zwei Einheiten im TASMOTA Webinterface (Zähler1) hoch. Einmal beim erreichen des Sensors und einmal beim verlassen.
Nun muss man noch die Zählerkonstante notieren (hier 75 U/kWh) und weiter geht es mit der Konfiguration…
Quelle: https://www.kompf.de/tech/emeir.html
Konfiguration
Bitte TASMOTA nicht mit einer Standard Firmware updaten!
Die installierte Firmware enthält das Scripting Modul, welches in Standard Versionen nicht enthalten ist. Siehe am Ende dieser Wiki Seite, wie man ein Update oder eine Neuinstallation durchführt.
Gerät konfigurieren
MQTT-Einstellungen
Unter Host ist die IP-Adresse der Hausautomation einzutragen. ggf. auch user/password falls erforderlich.
Sonstige Konfiguration
Zählerstand einstellen
Der auf dem Stromzähler bereits erfasste Zählerstand wird folgendermaßen in TASMOTA per Konsole übertragen:
Kommando: Sensor53 c1 (ZS x ZK x 2)
Zunächst muss aber auch verstanden werden, wie der Sensor arbeitet. Beim Erfassen der roten Markierung wird die Zähler1 um eine erhöht. Ebenso wenn die rote Markierung den Sensor verlässt.
Somit werden für die Berechnung nicht 75 sondern 150 Zählungen pro kWh herangezogen (Bei Zählerkonstante 75 U/kWh). Also (ZS x ZK x 2)
ZS = Zählerstand (kWh)
ZK = Zählerkonstante (U/kWh)
Beispiel: 44717,3 kWH * 75 * 2
Sensor53 c1 6707595
Weiterhin sind folgende Werte einzustellen.
Beim CounterDeBounce muss man ggf. etwas experimentieren. Dieser ist so einzustellen, dass pro Umlauf 2 Einheiten gezählt werden.
Werden 1 oder 3 Einheiten gezählt, muss man weiter optimieren. Bei 1 muss der Wert runter gesetzt werden und bei 3 entsprechend hoch, solange bis letztendlich nur 2 Einheiten gezählt werden.
TelePeriod 60 CounterDebounce 600 SaveData 60
Konsolen Script
In folgendem Script (Konsolen > Script konfigurieren) sind drei Variablenwerte zu ersetzen.
Der Strompreis, die Zählerkonstante, welche am Stromzähler aufgedruckt und mit der Einheit (U/kWh) angegegben ist und die Mindestumlaufzeit der Aliminium-Drehscheibe.
- sp (Strompreis in Cent)
- zk (Zählerkonstante)
- mu (Mindest Umlaufzeit der Scheibe)
Für den Wert mu am Besten einen oder mehrere hohen Verbraucher (Wasserkocher, Fön, etc.) einschalten und mit der Stoppuhr messen, wieviele Sekunden die Aluminium-Drehscheibe benötigt um eine Umdrehung zu erreichen.
Dieser Wert oder ggf. etwas weniger, ist für mu anzusetzen. Nochmal kontrollieren, ob CounterDebounce noch passt.
Der Default Wert ist mu=10 also 10 Sekunden für einen Umlauf. Das sind bereits 4800W Leistung. Alles was größert gemessen wird, bleibt unberücksichtigt und reduziert die Fehlmeldungen.
>D p:s1=0 p:g1=0 p:g2=0 p:m1=0 p:m2=0 p:m3=0 p:gesamt=0 p:power=0 p:c1old=0 sp=52.15 zk=75 mu=10 c1=0 c1ts=0 c1oldts=0 s1=0 h1=0 e1=0 e2=0 e3=0 sph1=0 spg1=0 spg2=0 spgs=0 spm1=0 spm2=0 spm3=0 hr=0 dy=0 sec=0 total=0 power=0 >B =>sensor53 l255 >S h1=c1-s1 e1=h1/(2*zk) e2=g1/(2*zk) e3=g2/(2*zk) sph1=e1*sp/100 spg1=e2*sp/100 spg2=e3*sp/100 spgs=gesamt*sp/100 spm1=m1*sp/100 spm2=m2*sp/100 spm3=m3*sp/100 ' Aktuelle Leistung c1ts=upsecs if c1>c1old and c1ts>(c1oldts+mu) then sec=c1ts-c1oldts power=3600000/(sec*zk) c1oldts=c1ts c1old=c1 else c1old=c1 endif ' Historische Werte hr=hours dy=day if chg[hr]>0 and hr==0 then s1=c1 g2=g1 g1=h1 m1=m1+e1 gesamt=gesamt+e1 if chg[dy]<2 and dy==1 then m3=m2 m2=m1 m1=0 endif svars endif ' MQTT if upsecs%tper==0{ =>Publish tasmota/%topic%/main/zk %zk% =>Publish tasmota/%topic%/main/electric_price %2sp% =>Publish tele/%topic%/main/today_kwh %2e1% =>Publish tele/%topic%/main/today_money %2sph1% =>Publish tele/%topic%/main/yd_kwh %2e2% =>Publish tele/%topic%/main/yd_money %2spg1% =>Publish tele/%topic%/main/dbyd_kwh %2e3% =>Publish tele/%topic%/main/dbyd_money %2spg2% =>Publish tele/%topic%/main/value %2c1% =>Publish tele/%topic%/main/actpower %0power% =>Publish tele/%topic%/main/energytotal %2total% =>Publish tele/%topic%/json {"energytotal": "%2total%", "value": "%2c1%", "today_kwh": "%2e1%", "today_money": "%2sph1%", "yd_kwh": "%2e2%", "yd_money": "%2spg1%", "dbyd_kwh": "%2e2%", "dbyd_money": "%2spg2%", "zk": "%zk%, "electric_price": "%2sp%", "actpower": "%0power"} } >T c1=Counter#C1 total=c1/(2*zk) >W Zählerstand: {m} %total% kWh aktuelle Leistung: {m} %0power% W ============ Strompreis: {m} %sp% Cent/kWh ============ Verbrauch: --------------------- Heute: {m} %3e1% kWh Kosten: {m} %2sph1% € --------------------- Gestern: {m} %3e2% kWh Kosten: {m} %2spg1% € --------------------- Vorgestern: {m} %3e3% kWh Kosten: {m} %2spg2% € --------------------- Aktueller Monat: {m} %2m1% kWh | %2spm1% € Letzter Monat: {m} %2m2% kWh | %2spm2% € Vorletzter Monat: {m} %2m3% kWh | %2spm3% € Gesamt: {m} %2gesamt% kWh | %2spgs% € #
Konfiguration in FHEM
In FHEM ist dann noch das einmalige Anlegen eines Brokers erforderlich.
define myBroker MQTT2_SERVER 1883 global
Anschließend sollte sich der Stromzähler in FHEM nach kurzer Zeit folgendermaßen, aber mit abweichender Adresse (4F9216) melden (autocreate muss aktiviert sein):
Zusätzlich sind noch folgende Attribute von Vorteil.
attr MQTT2_DVES_4F9216 alias Stromzähler attr MQTT2_DVES_4F9216 group Strom attr MQTT2_DVES_4F9216 icon stromzaehler_icon attr MQTT2_DVES_4F9216 stateFormat {ReadingsVal($name,"LWT","") eq "Offline" ? "absent" : ReadingsVal($name,"energytotal","") . " kWh"}
Zusätzlich werden noch folgende dummies und eine Notification benötigt.
Stromverbrauch:
defmod StromVerbrauch dummy attr StromVerbrauch group Strom attr StromVerbrauch room 99_Zähler attr StromVerbrauch sortby 12
Stromverbrauch Letzte Abrechnung:
defmod ZaehlerStandLetzteAbrechnung dummy attr ZaehlerStandLetzteAbrechnung alias Stromzähler_20220522 attr ZaehlerStandLetzteAbrechnung group Strom attr ZaehlerStandLetzteAbrechnung room 99_Zähler attr ZaehlerStandLetzteAbrechnung sortby 110
Stromzählerstand letzte Abrechnung:
defmod ZaehlerStandLetzteAbrechnung dummy attr ZaehlerStandLetzteAbrechnung alias Stromzähler_20220522 attr ZaehlerStandLetzteAbrechnung group Strom attr ZaehlerStandLetzteAbrechnung room 99_Zähler attr ZaehlerStandLetzteAbrechnung sortby 110
Stromverbrauch Heute:
defmod StromVerbrauch_Heute dummy attr StromVerbrauch_Heute group Strom attr StromVerbrauch_Heute room 99_Zähler attr StromVerbrauch_Heute sortby 20
Stromverbrauch Gestern:
defmod StromVerbrauch_Gestern dummy attr StromVerbrauch_Gestern group Strom attr StromVerbrauch_Gestern room 99_Zähler attr StromVerbrauch_Gestern sortby 30
Stromverbrauch Vorgestern:
defmod StromVerbrauch_Vorgestern dummy attr StromVerbrauch_Vorgestern group Strom attr StromVerbrauch_Vorgestern room 99_Zähler attr StromVerbrauch_Vorgestern sortby 40
Notification:
defmod StromverbrauchNoti notify MQTT2_DVES_BE3FE3:value.* {\ my $Zaehlerstand=round(ReadingsNum("MQTT2_DVES_BE3FE3","energytotal","0"),0);;\ my $ZaehlerStandLetzteAbrechnung=round(ReadingsNum("ZaehlerStandLetzteAbrechnung","state","0"),0);;\ my $Diff=$Zaehlerstand-$ZaehlerStandLetzteAbrechnung;;\ fhem("set StromVerbrauch $Diff kWh");;\ my $strom_db_yesterday=ReadingsNum("MQTT2_DVES_BE3FE3","dbyd_kwh","0");;\ my $strom_yesterday=ReadingsNum("MQTT2_DVES_BE3FE3","yd_kwh","0");;\ my $strom_today=ReadingsNum("MQTT2_DVES_BE3FE3","today_kwh","0");;\ fhem("set StromVerbrauch_Vorgestern $strom_db_yesterday kWh");;\ fhem("set StromVerbrauch_Gestern $strom_yesterday kWh");;\ fhem("set StromVerbrauch_Heute $strom_today kWh");;\ }
Neue TASMOTA Firmware für den MQTT Stromzähler
Neue TASMOTA Releases stehen zum Download unter folgendem Link zur Verfügung (Passwort = 10 stellige, aphanumerische Nummer auf dem Gerätelabel „unterste Zeile“)
Download TASMOTA Releases für Stromzähler
Troubleshooting
Es wurde eine Standard TASMOTA Firmware auf den MQTT-Stromzähler geflashed/geupdated
Solange kein blank_1MB.bin Image geflashed wurde, sind die Einstellungen noch vorhanden, aber das Script funktioniert nicht mehr.
In diesem Fall muss zuerst die tasmota-minimal_xxx.bin Firmware und anschließend wieder die scripting_tasmota_xxx.bin Firmware geflashed werden. (Siehe Download TASMOTA Release).
MQTT-Stromzähler meldet sich nicht mit seiner WLAN/SSID
Bitte prüfen, ob das 5V Stromkabel richtig tief eingesteckt wurde. Es kann sein, dass das Kabel nicht 100% Kontakt mit dem D1 Wemos Mini im inneren des Gehäuses hat.
Im Zweifelsfall bitte den Deckel öffen, den D1 Wemos Mini heraus nehmen und nochmal das Kabel einstecken. Wenn er sich immer noch nicht meldet, scheint die TASMOTA Software nicht geflashed oder korrupt zu sein.
Es kann auch sein, dass bei der WLAN Verbindung ein falsches Passwort eingegeben wurde und das Gerät jetzt permanent versucht sich mit falschem Passwort zu verbinden.
In diesem Fall muss das Gerät neu geflashed werden. Zuerst mit dem blank_1MB.bin und anschließend mit der scripting_tasmota_xxx.bin. (Siehe Download TASMOTA Release).
Danach muss eine komplette Neukonfiguration gemäß dieser Wiki Anleitung durchgeführt werden.
MQTT-Stromzähler wird am USB-Port nicht erkannt
In diesem Fall handelt es sich bei dem verwendeten Kabel evtl. nur um ein reines Stromkabel und nicht um ein Datenkabel. Bitte ein anderes Micro-USB-Kabel verwenden.