===== MQTT Gaszähler / Verbrauchsmessung eines BK-G4 Gaszählers =====
{{:public:gaszaehler_3.jpg?400|}}
{{:public:gaszaehler_1.jpg?378|}}\\
\\
==== Beschreibung ====
Dieser MQTT-Gaszähler (Ebay Artikel: [[https://www.ebay.de/itm/126305909523|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: [[https://www.ebay.de/itm/126307799487|126307799487]]) gekauft hat, bitte erstmal >>**[[public:Gaszaehler_Bausatz|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).\\
\\
{{:public:wlan1.jpg?300|}}
\\
\\
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.\\
{{:public:wlan2.jpg?300|}}
\\
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!\\
{{:public:gaszaehler_7.jpg?400|}}\\
\\
===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.\\
{{:public:gaszaehler_8.jpg?400|}}\\
\\
===Weitere Einstellungen===
Hier muss MQTT aktiviert werden und man sollte einen friendly Name auswählen wie z.B. **Gaszähler**.\\
{{:public:gaszaehler_9.jpg?400|}}\\
\\
==== 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:\\
{{:public:gaszaehler_11.jpg?400|}}
\\
\\
:!: 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 >=
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):\\
{{:public:gaszaehler_10.jpg?200|}}
\\
\\
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 crop
set output '.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title ''
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 "" using 1:2 axes x1y1 title 'aktueller Verbrauch m³' ls l0fill lw 1 with fsteps,\
"" 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:\\
{{:public: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:\\
{{:public:iobroker.png?550|}}
\\
===== 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.\\
- Navigiere im Home Assistant zum **Add-on Store** (Einstellungen > Add-ons > ADD-ON Store)
- Suche nach **Mosquitto**, dann doppelklicken und INSTALLIEREN > STARTEN
- Im eigenen Profil den **Erweiterten Modus** aktivieren
- Unter Einstellungen > Personen > TAB Benutzer > einen neuen Benutzer namens "mqtt-user" mit Passwort erstellen.
- Einstellungen > Geräte und Dienste > MQTT > Konfigurieren > Bestätigen, dass die Verbindung mit dem Broker hergestellt werden soll > (Mosquitto Broker MQTT erscheint)
- Auf dem Mosquitto Broker "Konfigurieren" klicken > MQTT Neu Konfigurieren > Benutzer "homeassistant" durch zuvor erstellten Benutzer "mqtt-user" mit Passwort ersetzen.
- Ggf. den MQTT Broker und auch TASMOTA nochmal durchstarten.
Oben genannte Schritte werden auch in diesem Video von "MeinedigitaleWelt" erklärt.\\
\\
\\
\\
==== Gaszähler einbinden ====
- Nach dem der MQTT-Broker aktiv ist, muss in TASMOTA die IP sowie user/password in die MQTT-Konfiguration eingetragen werden
- Anschließend erscheint im Home Assistent ein neues Gerät namens "Tasmota" unter "Integrationen"
- Dort auf "Konfigurieren" klicken und als Bereich "Gaszähler" eingeben. Es erscheint 1 Gerät und 10 Entitäten
- 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.\\
\\
{{:public:gaszaehler_14.jpg?400|}}
\\
\\
===== 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"**)\\
[[https://nextcloud.gorjup.de/nextcloud/index.php/s/T4C9CWWrqWYA7rT|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 ====
GitHub Compile your Build: [[https://tasmota.github.io/docs/Compile-your-build/]] \\
GitPod (Easy-Compiler): https://tasmota.github.io/docs/Gitpod/ \\
GitHub Login: [[https://github.com/login]] \\
===== 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 die IP-Adresse des MQTT-Gaszählers.\\
\\
^ URL ^ Bezeichnung ^
| [[http:///cm?cmnd=status%200]] | Tasmota Parameter |
| [[http:///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 [[http://wiki.gorjup.de/doku.php?id=public:gaszaehler#neue_tasmota_firmware_fuer_den_mqtt_gaszaehler|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 [[http://wiki.gorjup.de/doku.php?id=public:gaszaehler#neue_tasmota_firmware_fuer_den_mqtt_gaszaehler|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.\\
\\
{{:public:gaszaehler_15.jpg?400|}}
\\
\\
==== 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.\\
\\
{{:public:widerstaende_fehlerhaft.jpg?500|}}{{:public:gaszaehler_bausatz_11.jpg?500|}}