Zuletzt angesehen: • wasserzaehler
Inhaltsverzeichnis
MQTT Wasserzähler / Verbrauchsmessung eines Zenner-Wasserzählers
Beschreibung
Ein Zenner MNK Wasserzähler ist werksseitig mit einem Reed-Kontakt Aufnehmer ausgestattet und kann demzufolge mit einfachen Maßnahmen Smart gemacht werden.
Der separat, erhältlichew Reed-Kontaktgeber, erfasst das umlaufene Flügelrad des Zählers und gibt das Signal an die Zählereinheit (MQTT-Wasserzähler) weiter, welche die Auswertung übernimmt.
WLAN
Die Einbindung in das lokale Netzwerk wird folgendermaßen durchgeführt.
Nach dem Einstecken der Stromversorgung meldet sich das Gerät mit der SSID Wasserzaehler-XXXXXX-XXXX, wobei XXXXXX-XXXX für eine alphanumerische Zahlenfolge steht.
Nach dem Verbinden wird man automatisch auf eine Webseite mit der IP: 192.168.4.1 weitergeleitet. Dort bitte das lokale WLAN wählen und das Passwort eingeben (am besten mit dem Haken sichtbar machen beim Eingeben).
Kurz nach dem Speichern meldet sich das Webinterface mit der über DHCP erworbenen IP-Adresse.
Ist dies nicht der Fall, bitte im lokalen Router nach dem Gerät suchen und die IP-Adresse ausfindig machen.
Der MQTT-Wasserzähler ist nun über diese Adresse mittels Browser errereichbar.
Messeinheit
Der SPEWA Reed Kontaktgeber MNK für Zenner ist folgendermaßen an den D1-Mini ESP8266 anzuschließen/anzulöten.
Hier erhältlich: Reed Kontaktgeber zu MNK N Zähler (Zenner)
Kabel durch das Loch seitlich des Gehäuses einfädeln, verlöten, einsetzen, mit Deckel verschließen und auf den Ring schieben.
Montage
Der runde Kunststoff-Aufsatz wird einfach auf den Wasserzähler aufgesetztn.
Anschließend wird der Reed-Kontaktgeber gemäß Herstelleranleitung an dem Zenner-Wasserzähler montiert.
Anleitung: Installationsanleitung Reedkontakt
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.
Zählerstand einstellen
Der auf dem Wasserzähler bereits erfasste Zählerstand wird folgendermaßen in TASMOTA per Konsole übertragen:
Kommando: Sensor53 c1 xxx
Wobei xxx die aktuelle Wert ohne Komma ist. Z.B. 336,96 m³ ensprechen der Zahl 33696.
Somit wäre gemäß dieses Beispiels das Kommando:
sensor53 c1 33696
Konsolen Script
In folgendem Script (Konsolen > Script konfigurieren) ist eine Variablenwerte zu ersetzen.
- wp (Wasserpreis in EUR) z.B. 1.81
>D p:m1=0 p:g1=0 p:g2=0 p:month1=0 p:month2=0 p:month3=0 p:gesamt=0 c1=0 s1=0 h1=0 hgp=0 g1gp=0 g2gp=0 m1gp=0 m2gp=0 m3gp=0 gsgp=0 hr=0 dy=0 wp=1.81 wtotal=0 >B =>sensor53 l255 >S h1=s1-m1 hgp=(h1*wp) g1gp=(g1*wp) g2gp=(g2*wp) m1gp=(month1*wp) m2gp=(month2*wp) m3gp=(month3*wp) gsgp=(gesamt*wp) hr=hours dy=day if chg[hr]>0 and hr==0 then m1=s1 g2=g1 g1=h1 month1=month1+h1 gesamt=gesamt+h1 if chg[dy]<2 and dy==1 then month3=month2 month2=month1 month1=0 endif svars endif if upsecs%tper==0{ =>Publish tasmota/%topic%/main/td_m3 %2h1% =>Publish tele/%topic%/main/yd_m3 %2g1% =>Publish tele/%topic%/main/dbyd_m3 %2g2% =>Publish tele/%topic%/main/value %2s1% =>Publish tele/%topic%/main/wtotal %2wtotal% =>Publish tele/%topic%/main/water_price %2wp% =>Publish tele/%topic%/json {"wtotal": "%2wtotal%", "water_price": "%2wp%", "td_m3": "%2h1%", "td_money": "%2hgp1%", "yd_m3": "%2g1%", "yd_money": "%2g1gp%", "dbyd_m3": "%2g2%", "dbyd_money": "%2g2gp%"} } >T s1=Counter#C1/100 c1=Counter#C1 wtotal=(c1/100) >W Zählerstand: {m} %wtotal% m³ ============ Wasserpreis: {m} %wp% €/m³ ============ Verbrauch: --------------------- Heute: {m} %2h1% m³ Kosten: {m} %2hgp% € --------------------- Gestern: {m} %2g1% m³ Kosten: {m} %2g1gp% € --------------------- Vorgestern: {m} %2g2% m³ Kosten: {m} %2g2gp% € --------------------- Aktueller Monat: {m} %2month1% m³ | %2m1gp% € Letzter Monat: {m} %2month2% m³ | %2m2gp% € Vorletzter Monat: {m} %2month3% m³ | %2m3gp% € Gesamt: {m} %2gesamt% m³ | %2gsgp% € #
Sieht dann in etwas so aus:
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 Wasserzähler attr MQTT2_DVES_4F9216 group Wasser 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 WasserVerbrauch dummy attr StromVerbrauch group Wasser attr StromVerbrauch room 99_Zähler attr StromVerbrauch sortby 12
Wasser-Verbrauch Letzte Abrechnung: (Im Alias steht das Datum der Abrechnung als Hinweis)
defmod WasserVerbrauchLetzteAbrechung dummy attr WasserVerbrauchLetzteAbrechung alias WasserVerbrauch_20221202 attr WasserVerbrauchLetzteAbrechung group Gas attr WasserVerbrauchLetzteAbrechung room 99_Zähler attr WasserVerbrauchLetzteAbrechung sortby 1
Wasserzählerstand letzte Abrechnung: (Im Alias steht das Datum der Abrechnung als Hinweis)
defmod WasserZaehlerStandLetzteAbrechnung dummy attr WasserZaehlerStandLetzteAbrechnung alias Wasserzähler_20220522 attr WasserZaehlerStandLetzteAbrechnung group Wasser attr WasserZaehlerStandLetzteAbrechnung room 99_Zähler attr WasserZaehlerStandLetzteAbrechnung sortby 110
Wasserverbrauch Heute:
defmod WasserVerbrauch_Heute dummy attr WasserVerbrauch_Heute group Wasser attr WasserVerbrauch_Heute room 99_Zähler attr WasserVerbrauch_Heute sortby 20
Wasserverbrauch Gestern:
defmod WasserVerbrauch_Gestern dummy attr WasserVerbrauch_Gestern group Wasser attr WasserVerbrauch_Gestern room 99_Zähler attr WasserVerbrauch_Gestern sortby 30
Wasserverbrauch Vorgestern:
defmod WasserVerbrauch_Vorgestern dummy attr WasserVerbrauch_Vorgestern group Wasser attr WasserVerbrauch_Vorgestern room 99_Zähler attr WasserVerbrauch_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 $wasser_db_yesterday=ReadingsNum("MQTT2_DVES_BE3FE3","dbyd_kwh","0");;\ my $wasser_yesterday=ReadingsNum("MQTT2_DVES_BE3FE3","yd_kwh","0");;\ my $wasser_today=ReadingsNum("MQTT2_DVES_BE3FE3","today_kwh","0");;\ fhem("set StromVerbrauch_Vorgestern $wasser_db_yesterday kWh");;\ fhem("set StromVerbrauch_Gestern $wasser_yesterday kWh");;\ fhem("set StromVerbrauch_Heute $wasser_today kWh");;\ }
Konfiguration Home Assistant
Bitte die Konfiguration in Anlehnung an die des Gaszählers vornehmen.
https://wiki.gorjup.de/doku.php?id=public:gaszaehler#konfiguration_im_home_assistant
Script:
mqtt: sensor: - name: "Wasserzähler Zählerstand" unique_id: sensor.wasserzaehler_zaehlerstand state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.wtotal }}' unit_of_measurement: 'm³' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Wasserpreis" unique_id: sensor.wasserzaehler_wasserpreis state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.water_price }}' unit_of_measurement: 'EUR/m³' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Verbrauch heute" unique_id: sensor.wasserzaehler_verbrauch_heute state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.td_m3 }}' unit_of_measurement: 'm³' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Verbrauch Kosten heute" unique_id: sensor.wasserzaehler_verbrauch_kosten_heute state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.td_money }}' unit_of_measurement: 'EUR' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Verbrauch gestern" unique_id: sensor.wasserzaehler_verbrauch_gestern state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.yd_m3 }}' unit_of_measurement: 'm³' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Verbrauch Kosten gestern" unique_id: sensor.wasserzaehler_verbrauch_kosten_gestern state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.yd_money }}' unit_of_measurement: 'EUR' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Verbrauch vorgestern" unique_id: sensor.wasserzaehler_verbrauch_vorgestern state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.dbyd_m3 }}' unit_of_measurement: 'm³' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing" - name: "Wasserzähler Verbrauch Kosten vorgestern" unique_id: sensor.wasserzaehler_verbrauch_kosten_vorgestern state_topic: "tele/Wasserzaehler/json" value_template: '{{ value_json.dbyd_money }}' unit_of_measurement: 'EUR' payload_available: "Online" payload_not_available: "Offline" device_class: water state_class: "total_increasing"
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 Wasserzä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 über das Webinterface geflashed werden. (Siehe „Neue TASMOTA Firmware für den MQTT Stromzähler“).
MQTT-Wasserzä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 „Neue TASMOTA Firmware für den MQTT Wasserzähler“).
Danach muss eine komplette Neukonfiguration gemäß dieser Wiki Anleitung durchgeführt werden.
MQTT-Wasserzä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.
Meistens ist beim Einstecken des MQTT-Wasserzählers in den Computer-USB Port bei Verwendung eines Datenkabels ein Windows-Sound zu hören (Windows 10 oder höher).