MQTT Gaszähler / Verbrauchsmessung eines BK-G4 Gaszählers



Beschreibung

Dieser MQTT-Gaszähler (Ebay Artikel: 126305909523) dient zur Erfassung der umlaufenden, magnetischen Kupplung eines BK-G4 Balgengaszählers und deren Zählung/Übermittlung an eine Hausautomation per MQTT Protokoll.
Demzufolge können damit alle Systeme, welche dieses Protokoll unterstützen bedient werden wie z.B. FHEM, ioBroker, OpenHAB, Home Assistant, etc.

Bausatz

Wer einen Bausatz (Ebay Artikel: 126307799487) gekauft hat, bitte erstmal hier weiterlesen und später an diese Stelle zurück kehren.

Montage

Die Montage in sehr einfach. Die Messeinheit (Bild 1) wird einfach per mitgelieferter M6 Schraube an der rechten Seite des Gaszählers befestigt. Dort sollte bereits eine Vorrichtung mit Loch vorhanden sein.
Dabei gleitet die Erhöhung der Messeinheit in die vorhandene Mulde unter dem Zählwerk. Der Sensor (Reed-Kontakt) hat durch den vorgegebenen Gehäuse-Sitz eine optimale Position zur Erfassung der Umläufe.
Bei Zählwerken mit 0,001 m³ Angaben wird bei der 100er Nullung (Null-Durchlauf), also beim Erreichen von xxxxx,xx0 ein Umlauf gezählt und in TASMOTA die Angabe neben Zähler1 um 1 erhöht.
Angabe auf dem Gaszähler: 1 imp = 0,01 m³
Beim MQTT-Gaszähler V2, kann der Schlitten horizontal verändert werden. Somit können Gaszähler mit 1 imp = 0,1 m³ ebenfalls erfasst werden, wenn der Magnet an einer anderen Walze verbaut ist.

:!: In Bild 2 ist die Messeinheit fertig montiert zu sehen. Ein Stromanschluß sowie ein USB-Netzteil (z.B. Smartphone Ladegerät) in der Nähe sind erforderlich!

Installation / 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.

:!: Nachfolgende Konfiguration ist bereits auf der gekauften Messeinheit enthalten.
Lediglich die Einbindung ins WLAN die MQTT Konfiguration, die Zählerstand-Anpassung (Konsolenkommandos) und ggf. die Programmierung der Hausautomation muss durchgeführt werden.

:!: Bausatz Käufer müssen die komplette Konfiguration durcharbeiten.


Auf der Messeinheit (D1 Wemos Mini) befindet sich die Software TASMOTA, welche folgendermaßen zu konfigurieren ist:

WLAN

Die Einbindung in das lokale Netzwerk wird folgendermaßen durchgeführt.
Nach dem Einstecken der Stromversorgung meldet sich das Gerät mit der WLAN-SSID Gaszahler-XXXX (beim Bausatz tasmota-YYYYYY-XXXX), wobei das XXXX für eine Zahlenfolge und YYYYYY für alphanumerisch 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 bezogenen IP-Adresse.
Ist dies nicht der Fall, bitte im lokalen Router nach dem Gerät suchen und die IP-Adresse ausfindig machen.

Der MQTT-Gaszähler ist nun über diese Adresse mittels Browser errereichbar.



Geräteeinstellungen

In den Einstellungen ist als Gerätetyp Generic auszuwählen, danach [Speichern] und anschließend an selber Stelle nochmal D5 GPIO14 mit Auswahl Counter 1 und wieder [Speichern].
:!: Ausgelieferte MQTT-Gaszähler mit Rechnungsnummer vor 2023-0094 (27.01.2023) wurden mit Anschluß an D7 gefertigt. Käufer mit Bausatz müssen den GPIO einstellen, welcher verlötet wurde!


MQTT Einstellungen

Bei Host ist die IP-Adresse der Hausautomation (FHEM, ioBroker, HomeAssistant,etc.) einzutragen.
Falls erforderlich auch Benutzername/Passwort angeben. Unter Topic sollte man den Eintrag in Gaszaehler ändern.


Weitere Einstellungen

Hier muss MQTT aktiviert werden und man sollte einen friendly Name auswählen wie z.B. Gaszähler.


Konsolen Kommandos und Zählerstand Anpassung

Damit nicht zu viele Impulse gezählt werden schafft die Definition eines Timeouts Abhilfe. Mittels CounterDebounce 500 wird der Wert auf 500 Millisekunden gesetzt.
Timezone 99 Zeitzone Europa/Berlin.
TelePeriod 60 sogt dafür, dass nur einmal alle 60 Sekunden Werte an die Hausautomation gesendet werden.
Sensor53 c1 0 bedeutet, dass der Zähler auf NULL gesetzt wird. Diesen Wert könnte man auch dafür benutzen um den aktuellen Zählerstand abzubilden. Im Konsolen Script gibt es aber auch eine Variable namens gasinit um dies zu realisieren.
SaveData 60 bedeutet, dass die Werte alle 60 Sekunden gespeichert werden. Bei SaveData 0 würden die Einstellungen erst beim Neustart gespeichert werden.

Timezone 99
TelePeriod 60
CounterDebounce 500
Sensor53 c1 0
SaveData 60

Falls sich mit o.g. Debounce Einstellungen das Prellen (zuviel zählen) nicht verbessert, dann bitte folgende Einstellungen versuchen oder damit rumspielen, bis es besser wird.
Low/High sind lediglich Feinjustierungen. Diese kann man zunächst weglassen und sich dem Hauptwert erstmal annähern. Ggf. weiter erhöhen auf 2000, 2500, 3000, etc.

CounterDebounce 1000
CounterDebounceLow 500
CounterDebounceHigh 500

Konsolen Script

In folgendem Script (Werkzeuge/Konsolen > Script konfigurieren) sind zwei Variablen zu ersetzen. Zum Einen der Gaspreis und zum Anderen der aktuelle Zählerstand auf dem Gaszähler (falls Sensor53 c1 xxx nicht dazu verwendet wurde).
Anhand dessen werden die Kosten berechnet und der aktuelle Zählerstand angezeigt.

  • gp (Gaspreis in Cent)
  • gasinit (Zählerstand bei Montage)

Möchte man mehr Werte als im Script vorgegeben an seine Hausautomation übermitteln, kann man die Zeilen beginnend mit ⇒Publish ergänzen.
z.B. würde ⇒Publish tele/%topic%/main/gasprice %3gp% den Gaspreis mit übermitteln. Für json Abfragen, müsste auch die Zeile mit den geschweiften Klammern {} ergänzt werden.

>D
p:m1=0
p:g1=0
p:g2=0
p:month1=0
p:month2=0
p:month3=0
p:gesamt=0
p:c1=0
p:gastotal=0
s1=0
h1=0
hkw1=0
gkw1=0
gkw2=0
mkw1=0
mkw2=0
mkw3=0
mkwgs=0
skw1=0
hgp=0
g1gp=0
g2gp=0
m1gp=0
m2gp=0
m3gp=0
gsgp=0
hr=0
dy=0
zu=0.9575
br=11.519
gp=10.38
gasinit=0.0

>B
=>sensor53 l255


>S
h1=s1-m1
hkw1=h1*br*zu
hgp=(hkw1*gp)/100
gkw1=g1*br*zu
gkw2=g2*br*zu
mkw1=month1*br*zu
mkw2=month2*br*zu
mkw3=month3*br*zu
mkwgs=gesamt*br*zu
g1gp=(gkw1*gp)/100
g2gp=(gkw2*gp)/100
m1gp=(mkw1*gp)/100
m2gp=(mkw2*gp)/100
m3gp=(mkw3*gp)/100
gsgp=(mkwgs*gp)/100
skw1=s1*br*zu

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/td_kwh %2hkw1%
=>Publish tele/%topic%/main/yd_m3 %2g1%
=>Publish tele/%topic%/main/yd_kwh %2gkw1%
=>Publish tele/%topic%/main/dbyd_m3 %2g2%
=>Publish tele/%topic%/main/dbyd_kwh %2gkw2%
=>Publish tele/%topic%/main/value %2s1%
=>Publish tele/%topic%/main/gastotal %2gastotal%
=>Publish tele/%topic%/json {"gastotal": "%2gastotal%", "value": "%2s1%", "today_m3": "%2h1%", "today_kwh": "%2hkw1%", "yesterday_m3": "%2g1%", "yesterday_kwh": "%2gkw1%", "db_yesterday_m3": "%2g2%", "db_yesterday_kwh": "%2gkw2%"}
}

>T
s1=Counter#C1/100
c1=Counter#C1
gastotal=(c1/100)+gasinit

>W
GAS gezählt: {m} %3s1% m³
Zählerstand: {m} %gastotal% m³
============
Zustandszahl: {m} %zu%
Brennwert: {m} %br% kWh/m³
Gaspreis: {m} %gp% Cent/kWh
============
Verbrauch:
---------------------
Heute: {m} %2h1% m³ | %2hkw1% kWh
Kosten: {m} %2hgp% €
---------------------
Gestern: {m} %2g1% m³ | %2gkw1% kWh
Kosten: {m} %2g1gp% €
---------------------
Vorgestern: {m} %2g2% m³ | %2gkw2% kWh
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% €

;>M 1
;+1,13,c,1,-25,GAS
;1,1-0:1.8.0*255(@100,gezählt,m³,Stand,3)
#

Anschließend sollte es auf der Startseite in etwa so aussehen:


:!: Ab Tasmota 13.4.0.4 wird im Webinterface der Button „Werkzeuge“ anstelle von „Konsolen“ verwendet.

Werte einstellen/korrigieren

Will man die Werte in der Weboberfläche neu justieren, kann man in der Konsole folgende Kommandos dazu verwenden.
Dabei lautet die Syntax folgendermaßen:

script ><var>=<value>

Beispiel: Der Verbrauch von gestern soll auf 5.65 m³ korrigiert werden. Dafür wird die Variable g1 benötigt.
Somit wird in der Konsole folgendes Kommando verwendet:

script >g1=5.65

Variablen Übersicht:

g1 = Verbauch gestern in m³
g2 = Verbauch vorgestern in m³
month1 = Verbauch aktueller Monat in m³
month2 = Verbauch letzter Monat in m³
month3 = Verbauch vorletzter Monat in m³
gesamt = gesamter Verbrauch in m³

Das der Verbrauch heute wird anhand der Zählungen berechnet und kann dementsprechend nicht korrigiert werden. Man muss also einen Tag warten und dann den Verbrauch für gestern korrigieren.


Gezählter Wert (Zähler1) auf 0 (Null) setzen

Um den bisher gezählten Wert zu resetten, also auf NULL zu setzen wird folgendes Kommando verwendet:

sensor53 c1 0

Konfiguration in FHEM

Broker anlegen

In FHEM ist das einmalige Anlegen eines Brokers erforderlich.

define myBroker MQTT2_SERVER 1883 global

Gaszähler einbinden

Ist der Broker eingerichtet, sollte sich der Gaszä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 Gaszähler
attr MQTT2_DVES_4F9216 group Gas
attr MQTT2_DVES_4F9216 icon gasmeter2
attr MQTT2_DVES_4F9216 stateFormat {ReadingsVal($name,"LWT","") eq "Offline" ? "absent" : ReadingsVal($name,"gastotal","") . " m³"}


Optionale Konfiguration

Ich habe für mich noch folgende Konfigurationen vorgenommen:

Zählerstand der letzten Abrechnung (vom 02.12.2022):

defmod GasZaehlerStandLetzteAbrechnung dummy
attr GasZaehlerStandLetzteAbrechnung alias Gaszähler_20221202
attr GasZaehlerStandLetzteAbrechnung group Gas
attr GasZaehlerStandLetzteAbrechnung room 99_Zähler
attr GasZaehlerStandLetzteAbrechnung sortby 1

Verbrauch bei letzter Abrechnung:

defmod GasVerbrauchLetzteAbrechung dummy
attr GasVerbrauchLetzteAbrechung alias GasVerbrauch_20221202
attr GasVerbrauchLetzteAbrechung group Gas
attr GasVerbrauchLetzteAbrechung room 99_Zähler
attr GasVerbrauchLetzteAbrechung sortby 1

Diesjähriger Verbauch:

defmod GasVerbrauch dummy
attr GasVerbrauch group Gas
attr GasVerbrauch room 99_Zähler

Verbrauch pro Stunden:

defmod GasHourCounter dummy
attr GasHourCounter group Gas
attr GasHourCounter room 99_Zähler
attr GasHourCounter userReadings lastgastotal { ReadingsNum("MQTT2_DVES_502BA8","gastotal",0) }

Verbrauch heute:

defmod GasVerbrauch_Heute dummy
attr GasVerbrauch_Heute group Gas
attr GasVerbrauch_Heute room 99_Zähler

Verbrauch gestern:

defmod GasVerbrauch_Gestern dummy
attr GasVerbrauch_Gestern group Gas
attr GasVerbrauch_Gestern room 99_Zähler

Verbrauch Vorgestern:

defmod GasVerbrauch_Vorgestern dummy
attr GasVerbrauch_Vorgestern group Gas
attr GasVerbrauch_Vorgestern room 99_Zähler

DOIF für Reset GasHourCounter:

defmod ResetGasHourCounter DOIF ([:00]) (set GasHourCounter 0)
attr ResetGasHourCounter do always

DOIF für das Update:

defmod GasVerbrauchNoti notify MQTT2_DVES_4F9216:gastotal.* {\
my $Zaehlerstand=round(ReadingsNum("MQTT2_DVES_4F9216","gastotal","0"),0);;\
my $ZaehlerStandLetzteAbrechnung=round(ReadingsNum("GasZaehlerStandLetzteAbrechnung","state","0"),0);;\
my $Diff=$Zaehlerstand-$ZaehlerStandLetzteAbrechnung;;\
fhem("set GasVerbrauch $Diff m³");;\
my $gas_db_yesterday=ReadingsNum("MQTT2_DVES_4F9216","db_yesterday_m3","0");;\
my $gas_yesterday=ReadingsNum("MQTT2_DVES_4F9216","yesterday_m3","0");;\
my $gas_today=ReadingsNum("MQTT2_DVES_4F9216","today_m3","0");;\
fhem("set GasVerbrauch_Vorgestern $gas_db_yesterday m³");;\
fhem("set GasVerbrauch_Gestern $gas_yesterday m³");;\
fhem("set GasVerbrauch_Heute $gas_today m³");;\
if (ReadingsNum("MQTT2_DVES_4F9216","gastotal","0") > ReadingsNum("GasHourCounter","lastgastotal","0")) {\
   my $hourcounter=ReadingsNum("GasHourCounter","state","0")+1;;\
   fhem("set GasHourCounter $hourcounter");;\
   }\
}

Plot: SRV_Gaszaehler.gplot (dblog)

# Created by FHEM/98_SVG.pm, 2023-01-06 15:08:54
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid ytics
set ylabel "Gasverbrauch m³/h"
set y2label "Verbrauch Anno m³/a"
set yrange [0:0.15]
set y2range [0:400]

#DBLOG GasHourCounter:state:::$val=$val/100
#DBLOG GasVerbrauch:state::

plot "<IN>" using 1:2 axes x1y1 title 'aktueller Verbrauch m³' ls l0fill lw 1 with fsteps,\
     "<IN>" using 1:2 axes x1y2 title 'Gesamt Verbrauch m³/a' ls l2dot lw 1 with steps

In FHEM sieht das dann ungefähr so aus:
gaszaehler_12.jpg

Konfiguration im ioBroker

Gaszähler einbinden

Dazu bitte das Video von Marco Mussek ab Minute 2:25 befolgen.



Link zur GitHub Seite: https://github.com/msussek/arduino/tree/master/pulsecounter

So sollte es ungefähr aussehen:

Konfiguration im Home Assistant

MQTT-Broker Installation

Um den Gaszähler im Home Assistant zu integrieren, muss zunächst ein MQTT Broker (Mosquitto) installiert werden.

  1. Navigiere im Home Assistant zum Add-on Store (Einstellungen > Add-ons > ADD-ON Store)
  2. Suche nach Mosquitto, dann doppelklicken und INSTALLIEREN > STARTEN
  3. Im eigenen Profil den Erweiterten Modus aktivieren
  4. Unter Einstellungen > Personen > TAB Benutzer > einen neuen Benutzer namens „mqtt-user“ mit Passwort erstellen.
  5. Einstellungen > Geräte und Dienste > MQTT > Konfigurieren > Bestätigen, dass die Verbindung mit dem Broker hergestellt werden soll > (Mosquitto Broker MQTT erscheint)
  6. Auf dem Mosquitto Broker „Konfigurieren“ klicken > MQTT Neu Konfigurieren > Benutzer „homeassistant“ durch zuvor erstellten Benutzer „mqtt-user“ mit Passwort ersetzen.
  7. Ggf. den MQTT Broker und auch TASMOTA nochmal durchstarten.

Oben genannte Schritte werden auch in diesem Video von „MeinedigitaleWelt“ erklärt.



Gaszähler einbinden

  1. Nach dem der MQTT-Broker aktiv ist, muss in TASMOTA die IP sowie user/password in die MQTT-Konfiguration eingetragen werden
  2. Anschließend erscheint im Home Assistent ein neues Gerät namens „Tasmota“ unter „Integrationen“
  3. Dort auf „Konfigurieren“ klicken und als Bereich „Gaszähler“ eingeben. Es erscheint 1 Gerät und 10 Entitäten
  4. Falls dies nicht der Fall ist, bitte in der TASMOTA Konsole „SetOption19 0“ eingeben.


Oben genannte Schritte werden auch in diesem Video von „MeinedigitaleWelt“ erklärt.



Dadurch werden aber nur die grundsätzlichen Discovery Werte übertragen.
Um den Zählerstand und die anderen Werte zu erhalten ist folgende Ergänzung in der Datei configuration.yaml erforderlich. (File Editor vorher zum Editieren über Add-ons installieren)

Die Installation wird auch in diesem Video von „Smartzeug“ erklärt.


mqtt:
  sensor:
    - name: "Gaszähler Zählerstand"
      unique_id: sensor.gaszaehler_zaehlerstand
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.gastotal }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Zählung seit Nullung"
      unique_id: sensor.gaszaehler_zaehlung_seit_nullung 
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.value }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Verbrauch Volumen heute"
      unique_id: sensor.gaszaehler_verbrauch_volumen_heute
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.today_m3 }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Verbrauch Energie heute"
      unique_id: sensor.gaszaehler_verbrauch_energie_heute
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.today_kwh }}'
      unit_of_measurement: 'kWh'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Verbrauch Volumen gestern"
      unique_id: sensor.gaszaehler_verbrauch_volumen_gestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.yesterday_m3 }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Verbrauch Energie gestern"
      unique_id: sensor.gaszaehler_verbrauch_energie_gestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Verbrauch Volumen vorgestern"
      unique_id: sensor.gaszaehler_verbrauch_volumen_vorgestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.db_yesterday_m3 }}'
      unit_of_measurement: 'm³'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"
    - name: "Gaszähler Verbrauch Energie vorgestern"
      unique_id: sensor.gaszaehler_verbrauch_energie_vorgestern
      state_topic: "tele/Gaszaehler/json"
      value_template: '{{ value_json.db_yesterday_kwh }}'
      unit_of_measurement: 'kWh'
      payload_available: "Online"
      payload_not_available: "Offline"
      device_class: gas
      state_class: "total_increasing"

Anschließend erscheinen die Entities und können in das Dashboard übernommen werden.



Neue TASMOTA Firmware für den MQTT Gaszähler

Download

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 Gaszähler

Selbst kompilieren

Möchte man eine andere TASMOTA Firmware selbst kompilieren und flashen, dann ist darauf zu achten, dass Scripting integriert ist, da es im Standard nicht enthalten ist.
Dafür sind vor dem Kompilieren folgende Einstellungen in der Datei my_user_config.h notwendig:

Anleitung Online Compiler (GitHub Account erforderlich): https://www.youtube.com/watch?v=WashxTcHiDc

#undef USE_TIMERS
#undef USE_TIMERS_WEB
#undef USE_DOMOTICZ
#undef USE_ARDUINO_OTA
#undef USE_KNX
#undef USE_KNX_WEB_MENU
#undef USE_ENERGY_SENSOR
#undef USE_EMULATION
#undef USE_EMULATION_HUE
#undef USE_EMULATION_WEMO
#undef DEBUG_ESP_CORE
#undef DEBUG_ESP_WIFI
#undef USE_RULES
#undef USE_ARDUINO_OTA
#undef USE_I2C
#undef USE_SONOFF_RF

#undef  APP_TIMEZONE
#define APP_TIMEZONE 99
#undef  MY_LANGUAGE
#define MY_LANGUAGE de_DE

#ifndef USE_SCRIPT
#define USE_SCRIPT
#define USE_SCRIPT_WEB_DISPLAY
#endif

#ifndef USE_SML_M
#define USE_SML_M
#endif

Es gibt zwar bzgl. Home Assistant einige Parameter, die man setzen kann, aber MQTT benötigt diese Parameter nicht. Zudem ist seit der Version 13.4.x nicht mehr ausreichend Platz im Image um dies mit einzukompilieren.

#define USE_HOME_ASSISTANT
#define HOME_ASSISTANT_DISCOVERY_ENABLE 1

Kommando zum Kompilieren:

platformio run -e tasmota

Das .bin file steht dann unter: build_output > firmware > tasmota.bin zum Download bereit.

Online Kompilieren

Abfrage per Browser / JSON

Will man die TASMOTA API verwenden und Werte in Form von JSON Ausgaben erhalten, kann man folgenden URL'S verwenden:
Dabei ist <ip> die IP-Adresse des MQTT-Gaszählers.

URL Bezeichnung
http://<ip>/cm?cmnd=status%200 Tasmota Parameter
http://<ip>/cm?cmnd=status%208 Zähler/Counter



Troubleshooting

Es wurde eine Standard TASMOTA Firmware auf den MQTT-Gaszä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 Download TASMOTA Release).


Der Zählerstand lässt sich nicht einstellen (error)

Falls beim Einstellen des Zählerstands mittels „Sensor53 c1 xxx“ folgender Fehler auftaucht, dann ist vmtl. die Firmware 13.4.0.4 auf dem Gerät. Bitte eine andere Firmware flashen (z.B. 12.3.1 oder 14.0.0)

MQT: stat/Gaszaehler/RESULT = {"Command":"Error"}



MQTT-Gaszä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.
Dies passiert aber normalerweise nur, wenn nicht das mitgelieferte Kabel verwendet wird und dieses einen dicken Schaft oder zu kurzen Einschub hat.
Im Zweifelsfall bitte den seitlichen Deckel öffnen, den D1 Wemos Mini VORSICHTIG mit einer kleinen Zange herausziehen 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-Gaszä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-Gaszählers in den Computer-USB Port bei Verwendung eines Datenkabels ein Windows-Sound zu hören (Windows 10 oder höher).


MQTT-Gaszähler verliert nach einigen Stunden/Tagen alle Einstellungen

Bitte eine erneute Konfiguration wie oben beschrieben vornehmen und über das Webinterface einen „Neustart“ ausführen. Beim Neustart werden alle Daten nochmal im D1-Mini ESP resetfest gespeichert. Zusätzlich bitte den korrekten Sitz des USB-Kabels nochmal kontrollieren und ggf. auch das USB-Netzteil tauschen.

MQTT-Gaszähler zählt nicht

Falls der Zähler nicht funktioniert, dann bitte vom Gaszähler abschrauben und mit einem kleinen Magneten (z.B. Kühlschrankmagnet) quer über den Sensor (Reedkontakt) streichen.
Wenn der Zähler dann hochzählt, aber nicht im eingebauten Zustand, dann bestehen folgende Möglichkeiten:

  • Der Gaszähler hat keinen Magneten

In diesem Fall funktioniert diese Technik per Reedkontakt nicht.
Laut Erfahrung trifft dies z.B. für das Gaszähler Modell BK-G4M von Honeywell zu.

  • Der Magnet am Zählwerk ist nicht stark genug, oder zuweit vom Reedkontakt entfernt

In diesem Fall hilft oftmals folgende Veränderung:
Den Reedkontakt vorsichtig aus dem Sitz heben und ggf. mit etwas Papier, Klebeband oder Knetmasse unterfüttern.
Dies sogt dafür, dass der Reedkontakt etwas weiter in die Mulde des Gaszählers hinein ragt und somit den vorbeilaufenden Magneten doch noch erfassen kann.
Laut Erfahrung trifft dies manchmal beim Gaszähler Modell BK-G4 zu.



MQTT-Gaszähler funktioniert oder zählt nicht mehr

Nur Rechn.Nr. kleiner 2023-0094 bzw. Kaufdatum bis 27.01.2023
Wenn der Gaszähler schonmal gezählt hat und jetzt nicht mehr zählt oder auch das Webinterface nicht mehr ansprechbar ist, dann bitte folgendes kontrollieren.
Bei einigen Lieferungen (Rechn.Nr. kleiner 2023-0094 / 27.01.2023) hatten sich ein paar falsche Widerstände eingeschlichen. Evtl. ist 10Ohm anstelle von 10kOhm verbaut.
Erkennen kann man dies am Farbcode des Widerstandes. ggf. ist der Widerstand auch bereits schwarz, verbrannt und der Farbcode ist nicht mehr zu erkennen.

4 Ringe
10Ohm = Farbcode: braun - schwarz - schwarz - gold
10kOhm = Farbcode: braun - schwarz - orange - gold

Falls ein 10Ohm Widerstand eingebaut ist, wird dieser bei geschlossenem Reedkontakt sehr heiß, was zum Durchbrennen und ggf auch zur Zerstörung des D1 Wemos Mini führen kann.
Bitte diesen Widerstand wenn möglich selbst gegen einen 4,7k oder 10k Widerstand austauschen (ich schicke gerne einen kostenfrei zu).
Ist der Kunde nicht in der Lage dies selbst zutun, bitte mit einen Vermerk „Falscher Widerstand!“ zurück senden und ich schicke umgehend Ersatz.


Navigation
Eigene Werkzeuge