WiFi ACM-ESP: Kommunikationsmodul für Elster BK-GxA Gaszähler
Das Modul WiFi ACM-ESP ermöglicht es, den Zählerstand von Honeywell / Elster / GWF BK-G Gaszählern mit montiertem Absolute Encoder auszulesen. Dieser Absolut Encoder des Zählers tastet die einzelnen Stellen des Zählwerks optoelektronisch ab und bietet eine elektronische Schnittstelle, über die der absolute Zählerwert abgefragt werden kann. Im Gegensatz zu einfachen optischen oder magnetischen Impulszählern steht dabei immer der im Zählerfenster ablesbare Messwert zur Verfügung, so dass kein manuelles Nachtragen oder Korrigieren nötig ist. Das WiFi ACM-ESP bucht sich stündlich in ein vorhandenes WiFi Netz ein, fragt den Zählerstand des Zählers ab und kann die Messwerte an unterschiedliche Datensenken weitergeben. Für den Betrieb ist dank des geringen Strombedarfs kein Netzspannungsanschluss erforderlich. Für den Betrieb an einem Netzteil bleibt das Modul mit der Einstellung „no sleep“ aktiv so dass der Zähler in einem einstellbaren Zeitintervall ausgelesen wird und die Daten übermittelt werden.
Inhaltsverzeichnis
- Voraussetzungen
- Installation & Einrichtung
- Datensenken
- Anbindung an Home Assistant
- Tagesverbrauch in Node-RED berechnen und anzeigen
- Firmwareupdate
- Haftungsausschluss
Voraussetzungen
- Honeywell / Elster / GwF Gaszähler BK-G2,5, BK-G4, BK-G6, … mit Absolut Encoder AE2, AE3 oder AE5 in einer der folgenden Protokollvarianten (auf dem Ziffernblatt des Zählers angegeben, weitere auf Anfrage):
AE.02:02.01:01.01
AE.03:05.01:01.01
AE.03:05.01:02.01
AE.03:05.01:03.01
AE.05:05.01:01.01
AE.05:05.01:02.01
AE.05:05.01:03.01
Achtung! Zähler ohne Protokollangabe sind nicht mit dem WiFi ACM-ESP kompatibel. Diese sind mit einer M-Bus-Schnittstelle anstatt einer ACM-Schnittstelle ausgestattet. auch wenn ein gleich aussehender Anschluss vorhanden ist. - WiFi ACM-ESP Kommunikationsmodul für Elster Gaszähler
- 2 Mignonzellen (AA)
- Geeignete Datensenke, z. B. ein Account bei Emoncms.org, InfluxDB Cloud, ThinkgSpeak oder ein Raspberry PI mit installiertem MQTT Broker
Installation & Einrichtung
- Blinddeckel des Zählers abschrauben, Kommunikationsmodul auf Absolut Encoder aufstecken und mit M3 Schraube fixieren. Die mitgelieferte Kunstoffscheibe kommt zwischen den Zähler und das WiFi ACM ESP. Achtung, Schraube nicht zu fest anziehen!
- Modul mit 2 AA Batterien bestücken
- Taste „RST/CONFIG“ lange drücken, bis die blaue LED 2x blinkt. Das Modul befindet sich nun im Konfigurationsmodus. Im Konfigurationsmodus bleibt das Modul daueraktiv und im WiFi eingebucht, so dass dessen Webinterface zur Konfiguration erreichbar ist. Achtung, dieser Modus ist nur zu Konfigurations- und Testzwecken geeignet, da die Batterien so schnell verbraucht werden!
- Das WiFi ACM-ESP spannt einen WiFi Access Point mit der SSID „WiFi ACM-ESP“ auf. Mit einem WiFi-fähigen Gerät, etwa einem Smartphone, Tablet, Notebook etc. mit diesem Access Point Verbindung aufnehmen. Das vorkonfigurierte Passwort lautet „12345678“.
- Mit einem Browser zur Adresse
http://4.3.2.1
navigieren. - Unter dem Bereich „WiFi“ auf den Button „scan“ klicken. Nach einem kurzen Moment werden alle erreichbaren Access Points aufgelistet. Gewünschten Accesspoint auswählen, Passwort angeben und den Button „save“ klicken. Bei korrekten Zugangsdaten ändert sich der Verbindungszustand auf „connected“ und die IP Adresse des Moduls wird angezeigt.
- Im Abschnitt „Data targets“ gewünschte Datensenke(n) hinzufügen, konfigurieren und abschließend mit dem Button „save“ die Einstellungen speichern. Durch das Speichern wird automatisch eine Datenübermittlung angestoßen, insofern ein Messwert vom Zähler abgefragt werden konnte. Die Ergebnisse der Datenübermittlungen werden unter den jeweiligen Konfigurationsabschnitten dargestellt.
- Nach Abschluss und Speichern der Konfiguration ganz unten mit dem Button „reboot“ das Modul neu starten. Das Modul ist nun nicht mehr über WiFi zur Konfiguration erreichbar, sondern erwacht lediglich je nach Einstellung jede Stunde oder alle 3 Stunden um die Messwerte vom Zähler abzufragen und an die Datensenken zu übertragen.
- Dauerbetrieb und Zeitintervall: Wird das Modul mit einem Netzteil betrieben kann es mit der Option „no sleep“ im Dauerbetrieb gehalten werden. So bleibt es im WLAN eingebucht und kann jederzeit abgefragt werden. Die Daten können so auch in kleinen Zeitintervallen, z. B. 10 s, ausgelesen und übermittelt werden.
- Auf Auslieferungszustand zurücksetzen (ab Firmware 1.18): Taster gedrückt halten bis die LED an bleibt. Dadurch werden die WiFi- und Datensenkeneinstellungen gelöscht.
Datensenken
MQTT
Meldet an einen MQTT-Broker, über den z. B. Home Assistant mit den Messwerten versorgt werden kann. Das MQTT-Topic lautet standardmäßig home/wifi-acmesp/<MAC>/state
und kann umkonfiguriert werden. Der MQTT-Payload besteht aus einem JSON Objekt:
{
"meter": {
"address": 0,
"id": "12345678",
"manufacturer": "1593",
"version": 37,
"medium": 3,
"access_no": 18,
"status": "0",
"signature": "0",
"values": [
{
"vif": 37690,
"code": 2,
"scalar": -3,
"value_raw": 4267073,
"value_scaled": 4267.073
}
]
},
"millis": 9934668,
"battery_mv": 2800,
"vol_m3": 4267.073
}
Der Wert „values“ kann seiner Struktur variieren, manche Zähler liefern zwei Elemente im Array wobei im ersten Element die Zählernummer angegeben wird.
InfluxDB / InfluxDB2
InfluxDB Cloud
Der Dienst InfluxDB Cloud von influxdata erlaubt es die Messwerte in dessen Cloud abzuspeichern und mit konfigurierbaren Dashboards darzustellen.
Einrichtung
- Account bei InfluxDB Cloud erstellen und bei InfluxDB Cloud 2.0 einloggen
- Im Menü unter „Load Data“ den Punkt „Sources“ wählen und unter Abschnitt „Client Libraries“ den Punkt „Arduino“ wählen. In der erscheinenden Installationskette den Punkt „Initialize Client“ aufrufen. Rechts unter „Select or create a bucket“ einen Bucket erstellen oder einen bestehenden auswählen.
- Darunter im Abschnitt „Configure an InfluxDB profile“ aus dem Quellcode die Strings
INFLUXDB_URL
,INFLUXDB_TOKEN
,INFLUXDB_ORG
undINFLUXDB_BUCKET
entsprechend im WiFi ACM-ESP unter url, token, org und bucket übertragen. - In der Installationskette den letzten Punkt „finish“ anklicken.
Emoncms
Übermittelt die Daten über HTTP(S) an eine Emoncms-Instanz (Cloud oder selfhosted). Siehe Open Energy Monitor und Emoncms.org.
ThingSpeak
Übermittelt die Daten über HTTPS an den Dienst ThingSpeak (kostenfreier Account möglich). In Feld 1 wird der Zählerstand, in Feld 2 die Batteriespannung geschrieben. Die Daten können so komfortabel, z. B. mit einem ThingSpeak Widget, auf einem Mobilgerät dargestellt werden.
HTTP
Übermittelt die Daten an einen HTTP(S) Server. Mit der Methode GET werden die Werte id, vol_m3 und battery_mv als URL Parameter an einen HTTP(S) Server übermittelt. Bei der Methode POST werden die selben Parameter in einem JSON Objekt mit einem POST Aufruf gesendet. So lassen sich die Daten z. B. an eine Node-RED Installation oder an einen eigenen Webserver, z. B. mit einem PHP Endpunkt übermitteln. Hier ist ein Beispiel-Flow für einen HTTP Endpunkt in Node-RED:
[{"id":"b3b9fc90.150f28","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"f7bfa558.3ba5b","type":"http response","z":"b3b9fc90.150f28","name":"","statusCode":"200","headers":{},"x":520,"y":100,"wires":[]},{"id":"ee5b8766.97b418","type":"template","z":"b3b9fc90.150f28","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"ok","output":"str","x":360,"y":100,"wires":[["f7bfa558.3ba5b"]]},{"id":"3f4aeb69.99d024","type":"http in","z":"b3b9fc90.150f28","name":"","url":"/data","method":"post","upload":false,"swaggerDoc":"","x":190,"y":100,"wires":[["ee5b8766.97b418","b44e7b81.af2f8","5598e866.abb218","fbf52eb5.feaaa"]]},{"id":"b44e7b81.af2f8","type":"ui_text","z":"b3b9fc90.150f28","group":"651f354e.04c97c","order":2,"width":0,"height":0,"name":"","label":"Zählerstand","format":"{{msg.payload.vol_m3}} m³","layout":"row-spread","x":370,"y":200,"wires":[]},{"id":"5598e866.abb218","type":"ui_text","z":"b3b9fc90.150f28","group":"651f354e.04c97c","order":2,"width":0,"height":0,"name":"","label":"Zähler ID","format":"{{msg.payload.id}}","layout":"row-spread","x":360,"y":160,"wires":[]},{"id":"fbf52eb5.feaaa","type":"ui_text","z":"b3b9fc90.150f28","group":"651f354e.04c97c","order":2,"width":0,"height":0,"name":"","label":"Batterie","format":"{{msg.payload.battery_mv}} mV","layout":"row-spread","x":360,"y":240,"wires":[]},{"id":"651f354e.04c97c","type":"ui_group","name":"Gaszähler","tab":"3c9b4e17.5d49ea","order":8,"disp":true,"width":"6","collapse":false},{"id":"3c9b4e17.5d49ea","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false}]
Die URL für das HTTP Target lautet hier http://<server>/data
.
Anbindung an Home Assistant
Die Messwerte des WiFi ACM-ESP können von einer Home Assistant Instanz über MQTT abgegriffen werden, so dass der Gasverbrauch auf dessen Energie-Dashboard übersichtlich visualisiert werden kann:
Die Einbindung in Home Assistant geht ab Firmwareversion 1.21 automatisch von statten. Das WiFi ACM-ESP schickt dazu einige MQTT discovery Nachrichten so dass in Home Assistant automatisch ein Device mit 3 Entitäten angelegt wird für Zählernummer (meterid), Zählerstand (volume) und Batteriespannung (batterymv). Dazu muss im WiFi ACM-ESP ein MQTT Target angelegt und konfiguriert werden. In Home Assistant muss die MQTT Integration aktiviert werden.
Anschließend in Home Assistant unter Einstellungen -> Dashboards -> Energie
im Abschnitt „Gasverbrauch“ auf „Gasquelle hinzufügen“ klicken und den entsprechenden Sensor auswählen.
Tagesverbrauch in Node-RED berechnen und anzeigen
Dieser Node-RED Flow berechnet aus den MQTT Daten des WiFi ACM-ESP den aufgelaufenen Verbrauch und die Kosten des aktuellen Tags.
Firmwareupdate
Die Firmware kann über die Weboberfläche des WiFi ESP-ACMs aktualisiert werden. Dazu das Modul in den Konfigurationsmodus bringen (Taste Rst/Config lange drücken bis die LED 2x blinkt), mit einem Browser die Weboberfläche öffnen und unter dem Abschnitt Firmwareupdate die Software hochladen. Nach dem Updatevorgang startet das WiFi ACM-ESP neu und muss ggf. über die Taste erneut in den Konfigurationsmodus gesetzt werden.
1.15 | 13.2.23 | Send MQTT Autodiscovery messages for Home Assistant |
1.16 | 13.3.23 | Configurable MQTT topic „no sleep“ option for power supply |
1.17 | 8.5.23 | Fix protocolparser for some meters Formating of volume in webUI |
1.18 | 21.8.23 | Improved WiFi scanning Hint in webUI when in configuration mode factory reset |
1.19 | 6.10.23 | Configurable read interval in „no sleep mode“ support for new VIF |
1.21 | 22.11.23 | Support ThingSpeak as datatarget Send MQTT autodiscovery with device information for Home Assistant Captive portal Support variable length fields in M-bus data |
1.22 | 4.12.23 | Calculate flow Increase buffer for discovery messages |
1.23 | 26.2.24 | Configurable deep sleep time more memory space for config settings Merge InfluxDB Cloud / 2 targets Report last delta volume |
1.24 | 9.7.24 | MQTT keep alive in no-battery-mode |
1.25 | 8.11.24 | Added HTTP target Fix multiple targets |
Haftungsausschluss
Für jegliche Schäden an Personen, Geräten oder Gegenständen, die durch Installation und Betrieb dieses Moduls entstehen, übernehmen wir keinerlei Haftung. Die Installation und der Betrieb des WiFi ACM-ESP Moduls geschieht auf eigene Verantwortung.
Hallo Herr Seegel,
vielen Dank für das gut durchdachte und klar dokumentierte Produkt! Hat auf Anhieb funktioniert und bin schon fleißig dabei es weiterzuempfehlen!
Ich stelle die Frage mit begrenzter Hoffnung: Nach der Einbindung funktioniert der Upload zur Datenbank zwar wunderbar. Allerdings ist die WLAN Verbindung schlecht; sie schwankt zwischen phasenweise gut (Upload stündlich ok) und phasenweise schlecht (nur ein Upload / Tag). Da wir in einem Mehrfamilienhaus wohnen und das WLAN eines Nachbarn genutzt wird kann ich hier nur begrenzt eingreifen. Gibt es einen Weg, den ESP bzw. das Modul um ein externe Antenne zu erweitern? Löterfahrung wäre vorhanden…
Beste Grüße aus Dresden
Robert
Hallo Robert,
das könnte im Prinzip gehen wenn Du den ESP12 auf dem Gerät ablötest und durch einen ESP07s tauscht. Dieser hat einen Anschluss für eine externe Antenne. Zusätzlich brauchst Du dann noch einen entsprechenden Programmer den Du an den Programmieranschluss lötest. Das ganze habe ich aber selber nicht getestet. Vielleicht ist ein WiFi Repeater der einfachere Weg?
Schöne Grüße
Stefan
Vielen Dank für das tolle Produkt. 🙂
Ich konnte es mit Firmware 1.24 (Firmware-Update von 1.23 ging problemlos) an einem GWF gebrandeten Honeywell – vormals Elster – Zähler Modell BK-G4 A (Variante BGZcoder MP) und der Protokollvariante AE.05:05.01:03.01 (im Blogpost ist diese noch nicht explizit als kompatibel aufgeführt) in Betrieb nehmen.
Der Anschluss hatte zu Beginn einen Wackelkontakt (das Gerät hing auch etwas sehr schief auf dem Zähler) mit vielen „pending/timeout“, was ich jedoch mit 3 zusätzlichen Nylon-Unterlegscheiben (zwischen Rückseite des Plastik-Kästchens und dem Zähler) ausgleichen konnte.
Ist die Firmware (und allenfalls sogar das Schema?) irgendwo im Quelltext verfügbar, z.B. auf Github, so dass ich das selber erweitern könnte?
Was ich softwaremässig z.B. noch gut fände, wäre ein „Log“ (Anzahl Einträge konfigurierbar + Log via Webinterface löschbar) auf dem Gerät mit den in der Vergangenheit ausgelesenen Zählerständen plus Timestamp. Falls genügend Rechenleistung vorhanden ist(?), könnte man das sogar rudimentär im Webinterface als Grafik aufbereiten.
Auch wären weitere Datensenken noch praktisch, z.B. eine simple HTTP-GET-Datensenke (GET-Request mit konfigurierbaren Platzhaltern für die Werte in der URL) oder eine File-Datensenke (jeder Zählerstand appended einfach eine weitere Zeile in einem File auf einem Samba-Share oder einem (S)FTP-Server oder in einem Google Docs Sheet, so dass man nicht nur auf die bereits vorhandenen Datensenken – die alle irgendwelche aufwändigeren Server-Installationen bedingen – beschränkt wäre.
Hardwaremässig wäre eine erwerbbare „Always Online“-Variante mit DC-Jack oder sogar Ethernet+PoE natürlich auch noch sehr praktisch. Allenfalls könnte man ja einfach ein zweites/anderes/optionales Gehäuse mit DC-Jack und zwei Krokoklemmen anbieten?
Anyway, bitte das alles wirklich nur als konstruktive Anregungen verstehen und nicht als Kritik. 🙂 Und deswegen sage ich abschliessend auch nochmals: Danke für das tolle Produkt! 🙂
Hallo,
vielen Dank für Ihr Feedback! Die Protokollvariante habe ich im Blogpost eingetragen. Eine HTTP GET Datensenke ließe sich recht einfach einbauen, ich werde das in der nächsten Firmware berücksichtigen. Über eine Hardwareversion mit Netzteilanschluss habe ich auch schonmal nachgedacht, werde ich vielleicht mal in einer neuen Auflage umsetzen.
Schöne Grüße
Stefan Seegel
Hallo Herr Seegel,
Vielen dank für die schnelle Lieferung.
Leider wird mir auf der WEB-Seite kein Messwert angezeigt. Der Status springt zwischen pending & timeout hin und her. Die Gerate ID wird nicht erkannt, auch nicht nach 15 Minuten warten bei aktiven „no Sleep“ Funktion.
Die Werkseinstellungsprozedur habe ich zwei mal durchgeführt und auch ein Firmwareupdate auf 1.23 (war schon 1.23) führte nicht zum gewünschten Erfolg. Die Kontakte am Gaszähler sind nicht verbogen habe auch kurz die Heizung eingeschaltet (die derzeit auch ist) um den Gaszähler an der dritten Stelle hinterm Komma zu kurz zu bewegen.
Meine Gaszähler Typ ist ein BK-G4 AT (2018) die AE lautet 03:05:01:01:01
Das Einbinden in mein WLAN-Netz und an den MQTT Server hat funktioniert aber ohne Werte..
Was kann ich noch prüfen bzw. tun um Werte zu erhalten
VG aus dem Schwarzwald
Hallo,
ich werde mal ein Ersatzmodul rausschicken, wenn es damit auch nicht geht scheint der Zähler ein Problem zu haben.
Schöne Grüße aus Fürth
S. Seegel
Hallo, ich habe das Modul heute erhalten, soeben mit einigen Anfangsschwierigkeiten zumindest im Netzwerk zu laufen gebracht, die neueste Firmware installiert, eine InfluxDB eingebunden, ABER ich erhalte keine Werte vom Zähler und habe anscheinend das gleiche Problem wie mein Vorgänger.
Gibt es denn eine einfache Option zu prüfen, ob am Zähleranschluss überhaupt Daten geliefert werden? Oder ob das Modul einen Wackelkontakt hat, wie bei einem der anderen Kunden?
Spannungsmessgerät wäre vorhanden.
Derzeit läuft das Modul mit „always on“ aber da dürften die Batterien schnell leer sein.
Alternativ müsste man eine 3V Quelle an den Anschlüssen anlöten, korrekt?
Vielleicht wäre hier als weitere Alternative zu den vorgeschlagenen DC-Jack und Ethernet auch eine Mini-USB Stromversorgung eine einfache Option?
Ich kann ihnen auch gerne ein Bild vom Zähler senden. Wurde von den Stadtwerken Zirndorf verbaut und hat laut Aufdruck ebenfalls die Protokollversion AE 03:05.01:01.01 Sollte also eigentlich passen.
Ersatzmodul ist unterwegs!
Hallo, ich habe noch eine Frage. Ich habe folgende Stromversorgung besorgt:
https://www.amazon.de/dp/B0CH82YNK2?ref=ppx_yo2ov_dt_b_fed_asin_title
Aber damit funktioniert das Modul leider nicht. Es wird mit 3.2-3.3V gespeist und mit max. 1A – haben sie einen konkreten Vorschlag, mit welcher Alternative das Modul betrieben werden kann?
Das Ersatzmodul werde ich erst am Wochenende am Zähler testen können und melde mich dann wieder.
Hallo,
viele Netzteile sind leider nicht geeignet weil die Spannung nicht stabil genug ist. Bei mir verwende ich das Meanwell MW3R15GS eingestellt auf 3 V und mit Krokoklemmen an die Batterieklemmen gehängt.
Und ließe sich das Modul auch mit 3.4V oder 5V vom USB Port betreiben? Oder ist dann die Spannung bereits zu hoch? Meine anderen ESP Bausteine haben fast alle einen Mini-USB an Board, aber ich möchte die Schaltung auch nicht mit einer Überspannung kaputt machen. Ich suche erstmal weiter nach einer stabilen 3V Quelle.
Das Modul darf mit max. 3,3 V versorgt werden. ESP Bausteine mit USB Anschluss haben einen Spannungsregler integriert welcher von 5 V auf 3,3 V herunterregelt.
Sorry wenn ich hier mit vielen Fragen nerven sollte. Kann es sein, dass sich das Modul aufhängt, wenn die Webseite im normalen Betrieb in zu kurzer Zeit mehrfach aufgerufen wird? Das ist mir jetzt bereits 3x passiert. Ich habe inzwischen ein Netzteil mit stabilen 3V gefunden – das Modul scheint dann auch mal ne Stunde durchzulaufen, aber wenn ich die Webseite 2-3x zu schnell aufrufe hängt sich das ganze Teil auf und muss von Hand am Modul durchgestartet werden 🙁
Normalerweise geht das problemlos. Tritt das auch mit Batterien im No Sleep Modus auf? Auch mit dem Ersatzmodul? Wird inzwischen der Zählerstand angezeigt?
Also, Daten zum Zähler habe ich inzwischen hinbekommen – es scheint wirklich ein Wackelkontakt zu sein. Den Absturz der Webansicht über Batterie konnte ich noch nicht wirklich nachstellen, weil das Modul auch mit Batterie nicht stabil läuft. Im Always-On Modus sind Batterien nach nem halben Tag leer und im normalen Modus bei Einstellung 1h übermittelt das Modul manchmal alle 30min, manchmal stündlich, aber hängt sich ebenfalls nach ca. einem halben Tag auf. Irgendwie ist da der Wurm drin.
In einer Woche (9.12.) bekomme ich 2 weitere Netzteile, von denen es dann hoffentlich mit einem zumindest mal stabil läuft. Da der PC unterm Dach steht und das Modul im Keller ist es leider etwas aufwendig mit den verschiedenen Optionen.
Hallo Herr Seegel,
ich habe mit HA und MQTT nun auch das Problem das nach Update von 1.19 auf 1.23 mir nur noch die Spannung angezeigt wird. Ganz selten alle paar Minuten kommt auch mal das Volumen. Ich glaube das Problem hatten andere auch schon. Ich konnte jedoch in den Kommentaren keine richtige Lösung ableiten. Können sie mir da bitte noch mal weiterhelfen? Das Gerät habe ich an einem Netzteil hängen. Anbei noch der Status.
{
„resetInfo“: „Software/System restart“,
„vol_m3“: 4840.017,
„decPlaces“: 3,
„flowAvg“: 0,
„flowInst“: 0,
„flowStatus“: false,
„millis“: 42129629,
„battery_mv“: 2660,
„configMode“: false,
„freeHeap“: 19112,
„dateTime“: „24.06.24 07:16:02“,
„firmware“: „1.23“,
„WiFi“: {
„status“: 3,
„mode“: 1,
„ipsta“: „192.168.22.146“,
„mac“: „34:94:54:9A:E5:C3“,
„hostname“: „wifiacmesp“,
„sta_ssid“: „Home“
},
„mbus“: {
„status“: 2,
„rxbuf“: „6815156808007289137140931525030f0000000c13170084046416“
},
„meter“: {
„address“: 0,
„id“: „40711389“,
„manufacturer“: „ELS“,
„version“: 37,
„medium“: 3,
„access_no“: 15,
„status“: „0“,
„signature“: „0“,
„values“: [
{
„vif“: 19,
„code“: 2,
„scalar“: -3,
„value_raw“: 4840017,
„value_scaled“: 4840.017
}
]
},
„results“: [
„ok“
]
}
Hallo,
der Status sieht soweit gut aus. Am besten mal mit einem MQTT client schauen ob die Nachrichten dort ankommen.
Hallo ich habe jetzt mal die Nachrichten mit einem MQTT Client mitgeschnitten. Der Grund bei mir wo der Sensor als inaktiv gekennzeichnet wird sind Status topics (home/wifi-acmesp/9AE5C3/status) die zwischen den state topics (home/wifi-acmesp/9AE5C3/state) ankommen.
Nach einer richtigen state Meldung wo der Gaszählerwert angezeigt wird kommt 22s später eine status Meldung 0 und eine mit 1. Hier springt der Sensor auf inaktiv. 24s später dann die gleiche Meldung noch einmal und dann 13s später eine mit status 2 und 1s dahinter dann wieder der state topic wo der Sensor wieder aktiv wird. Das wiederholt sich so dann im Minutentakt da das Read Intervall bei mir auf 60s steht.
No sleep ist bei mir aktiviert da ich ein Netzteil angeschlossen habe.
Die ankommenden Nachrichten sehen wie folgt aus
Received 16:24:12
QoS: 0
Payload: 0
Received 16:24:12
QoS: 0
Payload: 1
Received 16:24:36
QoS: 0
Payload: 0
Received 16:24:36
QoS: 0
Payload: 1
Received 16:24:49
QoS: 0
Payload: 2
Received 16:24:50
QoS: 0
Payload: meter:
address: 0
id: ‚40711389‘
manufacturer: ELS
version: 37
medium: 3
access_no: 104
status: ‚0‘
signature: ‚0‘
values:
– vif: 19
code: 2
scalar: -3
value_raw: 4840017
value_scaled: 4840.017
millis: 20044834
battery_mv: 2656
vol_m3: 4840.017
flowAvg: 0
flowInst: 0
flowStatus: false
Received 16:25:12
QoS: 0
Payload: 0
Received 16:25:12
QoS: 0
Payload: 1
Received 16:25:36
QoS: 0
Payload: 0
Received 16:25:36
QoS: 0
Payload: 1
Received 16:25:49
QoS: 0
Payload: 2
Es sieht für mich also dann so aus das die Status Meldungen HA mitteilen das der Sensor inaktiv ist.
Ich hatte im HA auch schon mal alle Sensoren und MQTT gelöscht und wieder neu installiert um hier einen Fehler auszuschließen. Hatte aber auch nichts geändert.
Vielen Dank und Grüße
Jens
Hallo Jens,
Danke für die detaillierten Infos! Das sieht so aus als ob der MQTT Broker die Verbindung zu macht wenn eine Zeit lang keine Daten gesendet werden. Ich schau mal ob ich in die Firmware einen „Keep-Alive“ einbauen kann so dass die Verbindung zum Broker trotzdem erhalten bleibt. Das Reduzieren des Sendeintervals auf z. B. 10 s sollte ebenfalls funktionieren.
Gruß
Stefan
Firmware v1.24 steht ab sofort zur Verfügung
Danke Stefan für die V1.24 Damit funktioniert es wieder dauerhaft.
Hallo Hr. Segel,
ich habe meinen ACM-ESP von 1.12 auf die 1.21 hochgerüstet da ich die Auto Discovery für HomeAssistant nutzen will. Mein HA erkennt aber trotzdem den sensor nicht per Autodiscovery. Die MQTT Message die ich mitlesen kann scheint keine Auto Discovery konforme zu sein. (ich habe auch die 1.23 probier und auch mal mein MQTT im ACM rausgelöscht und neu angelegt)
{„meter“:{„address“:0,“id“:“37305735″,“manufacturer“:“ELS“,“version“:129,“medium“:3,“access_no“:1,“status“:“0″,“signature“:“0″,“values“:[{„vif“:19,“code“:2,“scalar“:-3,“value_raw“:5445860,“value_scaled“:5445.86}]},“millis“:4418,“battery_mv“:2901,“vol_m3″:5445.86}
Können Sie mir einen Tipp geben woran das liegen könnte?
Vielen Dank im Voraus.
Hallo Herr Burgstahler,
die MQTT Pakete aus Ihrer Nachricht sind keine Discovery-Pakete, sondern nur die Zählerdaten. Die Discovery-Pakete werden an die Topics homeassistant/sensor/wifiacmesp_…./… gesendet. Tauchen dort Nachrichten auf? Wenn ja sicherstellen dass Autodiscovery im HA aktiviert ist und das Autodiscovery Topic im HA stimmt.
Hallo!
Funktioniert das Modul auch an einem BK-G6 MT?
Danke und Grüße
Arne
Hallo,
steht eine Protokollnummer (AE…) auf dem Zähler?
Hallo Herr Seegei,
erstmal danke für Ihre Arbeit und den schnellen Versand. Bis ich auf diese Lösung gestoßen bin, hat es einige Zeit gedauert. Für mich genau das Richtige, ohne große Bastelei mit Reedkontakt etc.
Ich hatte eine Problem mit der MQTT-Anbindung im Home-Assistant. Bei der Erstinstallation kamen nur die Sensoren der Batteriespannung und der Geräte ID an. Nach einem Firmware-Update auf 1.22 ist nun auch der Sensor für den Volumenszähler in HO ersichtlich.
Ein alternativer USB-Anschluss auf der Platine für ein Netzgerät wäre noch sinnvoll.
Viele Grüße
Jürgen Vogl
Guten Abend,
Ich habe den gleichen Effekt.
Wie macht man ein Firmwareupdate – auf 1.22?
Viele Grüße, Stefan Müller-Pfeiffer
https://www.seegel-systeme.de/2022/12/21/wlan-acm-esp-kommunikationsmodul-fuer-elster-gaszaehler/#firmwareupdate
Danke! Aufmerksames Lesen hätte geholfen ….
Problem 2: Einbindung in HA
Lt ihrer Beschreibung meldet sich ELSTER ACM-ESP mit 3 MQTT-Enitäten selbsttätig an.
Ihrer Beschreibung ist sehr knapp -> Fragen:
– muss in der ELSTER ACM-ESP das MQTT Protokoll aktiviert werden?
– müssen auf HA Seite irgendwelche Schritte getan werden um die Anmeldung der 3 Entitäten zu „empfangen“
PS: Mein Problem 1: besteht weiter – ich senden Screenshots per Email
Danke für die Anregung, ich habe das in der Beschreibung ergänzt. Für den Home Assistant Betrieb muss ein MQTT Target angelegt werden, und in Home Assistant die MQTT Integration aktiviert sein.
Wenn sie Daten in eine InfluxDB 2 Datenbank schreiben möchten verwenden sie das Target „InfluxDB Cloud“.
Hallo
Danke für die schnelle Antwort. Ich habe z.Z. versucht ihre Anleitung nachzuvollziehen:
– INFLUXDB auf https://eu-central-1-1.aws.cloud2.influxdata.com
– MQTT auf Mosquitto auf lokalem RPI4
Jetzt 3 Päarchen AA später geht die Konfigurationseite nach dem Drücken des RESET nicht mehr auf – meist gar nicht (Browser Timeout) wenige Male als Seite ohne Inhalt (z.B. Zählerstand). Dies geschieht obwohl die LED blau blinkt. Ist das Produkt jetzt defekt?
Gerne würde ich mit Ihnen kurz sprechen. Wann kann ich Sie anrufen?
Hallo, am besten Schritt für Schritt vorgehen um herauszufinden wo es klemmt:
1. Gerät auf Werkseinstellungen zurücksetzen (Taste > 15 s gedrückt halten)
2. WLAN wie im Blogbeitrag beschrieben konfigurieren, Option „no sleep“ zunächst aktivieren und speichern
3. Einige Zeit laufen lassen ob der Betrieb soweit stabil ist und die Messwerte im Webinterface angezeigt werden
4. MQTT Target anlegen, konfigurieren und speichern
5. Einige Zeit laufen lassen ob der Betrieb soweit stabil ist und die Messwerte im Webinterface angezeigt werden und im MQTT Broker ankommen
6. InfluxDB Target anlegen und wieder prüfen
Factury reset hat funktioniert.
MQTT Server läuft auf einem RPI4. MQTT Explorer sieht empfangene Daten – nur die Anzahl.
Fragen:
– Unter welchem TOPIC überträgt der acm-esp?
– werden im ConfigMode auch Daten übertragen und in welchem Zeitabstand?
Das Standardtopic lautet home/wifi-acmesp/MAC/state, siehe Blogartikel, und kann umkonfiguriert werden. Daten werden auch im Configmodus übertragen mit dem Interval welches unter „Interval“ eingestellt ist (sichtbar wenn no-sleep aktiviert wird), standardmäßig 10 s.
Sorry eine FW ist V1.22
Hallo Hr Seegel
ACM-ESP läuft FW V1.20. Die Daten möchte ich in eine INFLUXDB übermitteln.
Mein Problem: unabh. von der Schnittstellenauswahl zeigt die Webseite immer IP, Port, Database, user, password! Was mache ich falsch?
Ich kann das Problem nicht nachstellen; welcher Browser wird verwendet? Was passiert wenn sie die Parameter (IP, Port, …) eintragen und speichern?
Hallo Herr Seegel
Seit dem update von 1.19 auf 1.21 habe ich die gleichen Probleme wie Florian Es werden nur Spannung und Meter ID in Home Assistant MQTT angezeigt.
Bei ip/status kommt folgendes:
{„resetInfo“:“Software/System restart“,“vol_m3″:5701.565,“decPlaces“:3,“millis“:417035,“battery_mv“:2454,“configMode“:false,“freeHeap“:11440,“dateTime“:“02.12.23 18:37:1701″,“firmware“:“1.21″,“WiFi“:{„status“:3,“mode“:1,“ipsta“:“192.168.1.138″,“mac“:“34:94:54:9A:CD:91″,“hostname“:“ESP-9ACD91″,“sta_ssid“:“******“},“mbus“:{„status“:2,“rxbuf“:“681b1b6808037209900500e61e3c03040000000c78099005000c13651570059216″},“meter“:{„address“:3,“id“:“00059009″,“manufacturer“:“GWF“,“version“:60,“medium“:3,“access_no“:4,“status“:“0″,“signature“:“0″,“values“:[{„vif“:120,“code“:31,“scalar“:0,“value_raw“:59009,“value_scaled“:59009},{„vif“:19,“code“:2,“scalar“:-3,“value_raw“:5701565,“value_scaled“:5701.565}]},“results“:[„ok“]}
Ein downgrade auf 1.19 ist komischerweise nicht möglich bzw. funktioniert nicht.
Haben Sie ein Lösung. Herzlichen Dank
Vielen Dnak für den tollen und raschen Support!!!
Jetzt funktioniert alles wie es soll..
Eine Frage noch:
Wenn ich im No Sleep Modus 15min Intervall eingebe schläft er dann dazwischen wie im normalen modus oder ist er stendig „wach“ und saugt die Batterie leer?
Danke!
Hallo,
in der Einstellung „no sleep“ bleibt das Modul immer aktiv und ist nur für Netzteilbetrieb geeignet.
Schöne Grüße
Stefan Seegel
Hallo Herr Seegel,
ich bin super begeistert von ihrem Modul und es funktionierte auch sofort an meinem Gas-Zähler. Ich binde es bei mir im Homeassistant über MQTT ein, das funktionierte mit der FW 1.20 auch, nachdem es aber ein Discovery mit der 1.21 gab, habe ich das Update eingespielt. Nun hat es den Anschein, daß in der „config message“ das Value_Template der Volume Message einen leeren Inhalt hat („val_tpl“: null) im Gegensatz zur Battery oder auch ID ;essage. Wird das vom Modul evtl leer/falsch versendet oder liegt der Fehler doch auf meiner Seite?
Vielen Dank
Grüße aus Fürth
Axel
Hallo Axel,
da war offenbar zu wenig Speicher für die (großen) Discoverynachrichten reserviert, habe Dir eine Mail geschrieben.
Gruß
Stefan Seegel
Guten Abend,
habe lange probiert die Daten über den Mosquitto broaker in mein Home Assistant zu bekommen. Leider ohne Erfolg. Vielleicht weil ich über einen WLAN repeater gehen muss?
Was muss ich denn in der config eingeben beim MQTT? Axel, vielleicht ein Tip für mich?
Kann ich auch über die Nabu casa cloud drauf?
Ich bin für jede Hilfe dankbar!
Beste Grüße
Florian
Antworten
Hallo,
bei den MQTT Einstellungen muss der Hostname oder die IP Adresse des MQTT Brokers eingetragen werden, je nachdem wie der MQTT Broker konfiguriert ist noch Port, Benutzername und Passwort. Im Status (http://ip-wifiacmesp/status) wird dann unter Results das Übermittlungsergebnis angezeigt. Ein WLAN Repeater sollte kein Problem sein. Mit Nabu Casa Cloud habe ich leider keine Erfahrung.
Schöne Grüße
Stefan Seegel
Danke werde ich am abend probieren.
was ist TLS?
Tunnel Layer Security = Verschlüsselung
Hallo Herr Seegel,
anscheinend komm ich bis zu meinem Home Assistant aber im Protokoll vom MQTT broaker steht immer folgendes:
2023-11-29 19:48:40: New connection from 192.168.8.74:58941 on port 1883.
2023-11-29 19:48:40: New client connected from 192.168.8.74:58941 as WiFi-ESP-ACM-EF61FF (p2, c1, k15, u’mqtt_user‘).
2023-11-29 19:49:16: Client WiFi-ESP-ACM-EF61FF has exceeded timeout, disconnecting.
2023-11-29 19:49:16: New connection from 192.168.8.74:61412 on port 1883.
2023-11-29 19:49:16: New client connected from 192.168.8.74:61412 as WiFi-ESP-ACM-EF61FF (p2, c1, k15, u’mqtt_user‘).
2023-11-29 19:49:46: Client WiFi-ESP-ACM-EF61FF has exceeded timeout, disconnecting.
2023-11-29 19:49:46: New connection from 192.168.8.74:51544 on port 1883.
2023-11-29 19:49:46: New client connected from 192.168.8.74:51544 as WiFi-ESP-ACM-EF61FF (p2, c1, k15, u’mqtt_user‘).
2023-11-29 19:50:10: Client WiFi-ESP-ACM-EF61FF has exceeded timeout, disconnecting.
was mache ich falsch?
Bitte um Hilfe!
Danke!!
Guten Abend nochmal.
Ich habe es jetzt geschafft. Allerding bekomme ich leider nur die Spannung und die Meter ID. im Home Assistant angezeigt.
Können sie mir die Ausgabe von http://ip/status schicken?
Vielen Dank für den spannenden Beitrag. Bei mir ist ein Zähler mit „AE.03:05.01:03.01“ verbaut. Ist dieser ebenfalls mit dem von Ihnen angebotenen Modul kompatibel? Vielen Dan und Grüsse, Simon
Hallo Simon,
dieses Protokoll habe ich noch nicht gesehen, aber ich denke es wird funktionieren. Wenn nicht kannst Du das Modul einfach zurückschicken.
Gruß
Stefan
hi Stefan,
Danke für die schnelle Nachlieferung. Ich kann bestätigen, dass auch mein Zählermodell mit „AE.03:05.01:03.01“ ohne Probleme und auf Anhieb funktioniert. Nach kurzem Ringen mit MQTT in HA, läuft nun alles 🙂
Besten Dank und Grüsse,
Simon
Vielen Dank für die Rückmeldung!
Ich hab das Modul jetzt eingerichtet und in mein WLAN eingebunden. Die Zählernummer wird korrekt ausgelesen aber der Zählerstand selbst wird nicht übertragen. Haben Sie eine Idee wo der Fehler liegen könnte?
Es handelt sich um einen Honeywell BK-G4 A (2019) mit AE.05:05.01:01.01
Können Sie mir die Ausgabe von http://IP-ADR/status zukommen lassen?
{„resetInfo“:“Software/System restart“,“millis“:29473305,“battery_mv“:3122,“configMode“:false,“freeHeap“:17936,“firmware“:“1.18″,“WiFi“:{„status“:3,“mode“:1,“ipsta“:“192.168.2.76″,“mac“:“AC:0B:FB:EE:A4:1B“,“hostname“:“ESP-EEA41B“,“sta_ssid“:“******“},“mbus“:{„status“:2,“rxbuf“:“******“},“meter“:{„address“:0,“id“:“******“,“manufacturer“:5523,“version“:129,“medium“:3,“access_no“:166,“status“:“0″,“signature“:“0″,“values“:[],“decode_err“:4},“results“:[]}
Ups das war etwas zu viel des guten. Bitte einmal die Zählernummer oder den Kommentar löschen. Ich kann den Kommentar leider nicht bearbeiten.
Ok, ihr Zähler liefert einen Datenblock den der Parser noch nicht unterstützt hatte, sollte nun funktionieren. Einstellbars Interval für noSleep Mode ist nun auch drin, siehe Version 1.19
Perfekt! Läuft wie geschmiert!
Vielen vielen Dank für die schnelle Hilfe!
Gibt es die Möglichkeit das Modul auch über ein Netzteil mit Strom zu versorgen? Beispielsweise mit einem alten Nokia Ladekabel.
Ja, mit einem stabilen Netzgerät max. 3,3 V an die Batterieklemmen angeklemmt sollte das kein Problem sein.
Hallo Herr Seegel, ich habe Ihr Modul heute erhalten – danke für den schnellen Versand! Nun eine Frage zur Versorgung über ein Netzgerät: 3,3 V Steckernetzteile sind recht selten. Ich vermute, dass ein herkömmliches 5 V Netzteil das Modul zerstören würde?
Daher überlege ich, ein 5 V Netzteil mit 3 oder 3,3 V Linearregler zu verwenden (z.B. aus der LM 317 Serie). Wie hoch ist die Stromaufnahme des Moduls im Modus „no sleep“? Dies wäre wichtig zur Ermittlung der Verlustleistung für den Spannungsregler.
Kann ich das Modul für Test- und Konfigurationszwecke in Betrieb nehmen, wenn es nicht am Gaszähler angeschlossen ist?
Das Netzteil darf max. 3,3 V haben. Als Linearregler sollte etwa ein AMS1117-3.3 geeignet sein. Das Modul zieht durchschnittlich ca. 100 mA, Spitzenströme bis zu 500 mA. Sie können das Modul auch ohne angeschlossenen Zähler betreiben.
Herzlichen Dank für die schnelle Antwort!
Guten Tag
Heute hat es funktioniert, konnte config ändern. Bitte meine vorherigen 2 posts löschen. Danke
Bei mir funktioniert die WLAN-Verbindung nur kurzzeitig ca. 30min). Danach ist nichts mehr zu erreichen. Nur lange RST drücken und mit Scan das WLAN verbinden hilft dann wieder (für 30 min)…
Ich habe allerdings auf „no sleep“ gestellt (wegen einrichten in HomeAssistant.
(Meinen) Fehler gefunden! Ganz schlechte Idee im Batteriebetrieb den „no sleep“ Modus zu wählen. Das Modul (ohne Zähler) zieht 80mA. Hat man dann nicht die frischesten und besten Batterien, dann gibt´s schnell Probleme mit der WLAN-Verbindung weil die Batteriespannung zu schnell sinkt. Mein Modul sendet nun im „sleep“ Modus stündlich den Zählerstand genau so wie er soll. Zusätzlich lasse ich mir den Batteriestand im Home Assistant anzeigen (leider nicht im Autodiscover). Zusätzlich lasse ich mir eine Nachricht auf´s Handy schicken bei kritischem Batteriestand. Ich bin nun zufrieden!
PS: Danke an Herrn Seegel für das freundliche und sehr hilfsbereite Telefonat!
Prima, MQTT Autodiscovery für den Batteriestand werde ich in das nächste Release noch einbauen.
Hallo Herr Seegel,
viele. Dank für ihre Arbeit und dieses super Modul für verflixten Gaszähler.
Ich wäre dankbar für die Möglichkeit das Updateintervall selbst zu setzen. Aus feingranulareren Daten ließen sich noch mehr Infos ableiten.
Ich würde das Modul dann an einem Netzteil betreiben.
VG aus Dresden
Ab Firmware 1.16 steht ein „no sleep“-Modus zur Verfügung so dass das Modul alle 15 s den Zähler ausliest.
Grüße, S. Seegel
Herzlichen Dank!!!!
Hallo Herr Seegel,
Ich möchte die InfluxDB Cloud verwenden.
Gibt es irgendwo nähere Infos über die Einstellungen für InfluxDB? Was genau muss in die Felder rein?
Hallo Herr Friedemann,
ich werde den Blogartikel noch um ein paar Konfigurationsbeispiele erweitern. Verwenden Sie eine InfluxDB1 oder InfluxDB2 Datenbank?
Schöne Grüße aus Fürth
S Seegel
Hallo Herr Seegel,
Danke für das Update. Leider schreibt der ACM-ESP „invalid Parameter“ aus. API Token habe ich bei Influx angelegt und kopiert, ebenso die ORG ID. Der Bucket Name ist ja auch klar. Ich habe keine weitere Datensenke angegeben. Leider wird nicht markiert welcher Parameter invalid ist. Bei Influx kommen keine Daten an.
Neueingabe der URL hat die Fehlermeldung von invalid Parameter zu Connection failed geändert
Ein letztes Update: Die Daten kommen jetzt an. Alles OK