WiFi ACM-ESP: Kommunikationsmodul für BK-G..A und BK-G..AT Gaszähler

Das Modul WiFi ACM-ESP ermöglicht es, den Zählerstand von Honeywell / Elster / GWF BK-G Gaszählern mit eingebautem 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. Im Batteriebetrieb bucht sich das WiFi ACM-ESP stündlich in ein vorhandenes WiFi Netz ein, fragt den Zählerstand des Zählers ab und kann die Messwerte an unterschiedliche Datensenken übermitteln. Für den Betrieb ist dank des geringen Strombedarfs kein Netzspannungsanschluss erforderlich. Alternativ kann das Modul mit einem USB-C Netzteil versorgt werden, so dass die Messwerte in Echtzeit abgerufen werden können.

Inhaltsverzeichnis

Voraussetzungen

  • Honeywell / Elster / GwF Gaszähler BK-G2,5A, BK-G4A, BK-G6A … mit Absolut Encoder AE2, AE3 oder AE5 in einer der folgenden Protokollvarianten (auf dem Typenschild des Zählers angegeben, weitere auf Anfrage):
    AE.02:02.01:01.01
    AE.02:04.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 und ohne die Endung A oder AT 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. Als Alternative bietet sich der Smartnetz Smart Gas Reader mit magnetischer Abtastung der Zählimpulse an.
  • WiFi ACM-ESP Kommunikationsmodul für Elster Gaszähler
  • 2 Mignonzellen (AA) oder USB-C Netzteil
  • Geeignete Datensenke, z.B. ein Account bei ACM ESP-Cloud, Emoncms.org, InfluxDB Cloud, ThingSpeak oder ein Raspberry PI z.B. mit MQTT Broker. Im Netzteilbetrieb wird nicht zwingend eine Datensenke benötigt, der Zählerstand kann einfach jederzeit über die Weboberfläche des WiFi ACM-ESP abgefragt werden.

Installation & Einrichtung

Montage

  • Die Schnittstelle des Zählers befindet sich hinter einem Kunststoffdeckel, gehalten von einer M3 Schraube. 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 oder USB-C Netzteil anschließen
  • 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!

Mit WiFi-Netzwerk verbinden

  • Das WiFi ACM-ESP öffnet zur Konfiguration einen WiFi Access Point mit der SSID WiFi ACM-ESP. 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.
  • Bei richtig verbundenem Zähler werden dort bereits Zählernummer und -stand angezeigt.
  • 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. Das WiFi ACM-ESP ist nun mit dem Netzwerk verbunden.
  • WiFi Verbindung mit dem eigenen Netzwerk wieder aufnehmen und die Konfigurationsoberfläche des WiFi ACM-ESP über dessen IP Adresse öffnen.

Konfiguration

  • Im Abschnitt „Data targets“ gewünschte Datensenke(n) hinzufügen, entsprechend konfigurieren und abschließend mit dem Button „save“ die Einstellungen speichern. Details zur Konfiguration der einzelnen Datensenken finden sich im Abschnitt „Datensenken“. 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 in den jeweiligen Konfigurationsabschnitten dargestellt.
  • 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.
  • Nach Abschluss und Speichern der Konfiguration ganz oben in der blauen Zeile mit dem Button „quit“ den Konfigurationsmodus verlassen. Im Batteriebetrieb ist das Modul nun nicht mehr über WiFi erreichbar, sondern erwacht lediglich je nach Einstellung, z.B. 1x pro Stunde, um die Messwerte vom Zähler abzufragen und an die Datensenken zu übertragen.

Auslieferungszustand

Um das WiFi ACM-ESP auf den Auslieferungszustand zurücksetzen (ab Firmware 1.18) den Taster gedrückt halten (ca. 10 s) bis die LED an bleibt. Dadurch werden alle WiFi- und Datensenkeneinstellungen gelöscht.

Konfigurationsoberfläche des WiFi ACM-ESP mit erfolgreicher Kommunikation zum Zähler und verbundenem WiFi

Datensenken

ACM-ESP cloud

Meldet an die ACM-ESP cloud, welche speziell für die Erfassung und Visualisierung der Daten des WiFi ACM-ESP entwickelt wurde. Diese Variante bietet sich an, wenn keine weitere Infrastruktur wie MQTT Broker etc. zur Verfügung steht. Die ACM-ESP cloud ist auf Übersichtlichkeit und einfache Einrichtung ausgelegt. Der Service steht für 3 Monate kostenfrei beim Erwerb eines WiFi ACM-ESP zur Verfügung, anschließend für nur 1 € / Monat. In der ACM-ESP cloud wird jeweils zu jeder vollen Stunde, zu jedem vollen Tag, zu jeder vollen Woche und zu jedem vollen Monat der Zählerstand und der Verbrauch zum Anfang des jeweiligen Zeitabschnitts abgelegt. Jeder Zeitbereich in der ACM-ESP cloud wird jeweils mit einem Liniendiagramm, welches die Zählerstände darstellt, und einem Balkendiagramm, welches die Verbrauchswerte darstellt, erfasst.

ACM-ESP cloud mit den Tageswerten und -verbrauch der letzten 4 Tage

Einrichtung

  • Das WiFi ACM-ESP zunächst wie im Abschnitt „Installation & Einrichtung“ an den Zähler montieren, mit dem WiFi Netzwerk verbinden und über das eigene WiFi-Netzwerk (!) die Konfigurationsoberfläche des WiFi ACM-ESP aufrufen. Die IP Adresse des WiFi ACM-ESP im eigenen Netzwerk wird nach dem Verbindungsaufbau in der Konfigurationsoberfläche angezeigt.
  • In der Konfigurationsoberfläche des WiFi ACM-ESP unter Abschnitt „datatargets“ den Eintrag „ACM-ESP cloud“ auswählen und den add Button klicken.
  • Den nun sichtbaren Link „Register meter in ACM-ESP cloud“ anklicken.
  • Daraufhin öffnet sich das Registrierungsportal der ACM-ESP cloud. Dort eine E-Mail Adresse angeben, an die der APIKEY gesendet wird.
  • Die per E-Mail erhaltenen Schritte durchführen. (Bestätigungslink anklicken und APIKEY im WiFi ACM-ESP eintragen und speichern)

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 in seiner Struktur variieren, manche Zähler liefern zwei Elemente im Array wobei im ersten Element die Zählernummer angegeben wird.

Konfiguration eines MQTT Brokers im WiFi ACM-ESP

InfluxDB / InfluxDB2

InfluxDB Cloud

Der Dienst InfluxDB Cloud von influxdata erlaubt es, die Messwerte in dessen Cloud abzuspeichern und mit konfigurierbaren Dashboards darzustellen.

Konfiguration für die influxDB cloud im WiFi ACM-ESP

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 und INFLUXDB_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.

Konfigurationsoberfläche des WiFi ACM-ESP Abschnitt Data targets, hier mit konfiguriertem InfluxDB Cloud Account und Datenübermittlung an einen MQTT Broker

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 abgelegt. Die Daten können so komfortabel, z.B. mit einem ThingSpeak Widget, auf einem Mobilgerät dargestellt werden.

Konfiguration für thingSpeak im WiFi ACM-ESP
Anzeige der erfassten Messwerte auf thingspeak.com

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:

Visualisierung auf dem Energie Dashboard von Home Assistant

Die Einbindung in Home Assistant geht ab Firmwareversion 1.21 automatisch vonstatten. Das WiFi ACM-ESP schickt dazu einige MQTT discovery Nachrichten, so dass in Home Assistant automatisch ein Device mit drei 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

Anzeige des aktuellen Tagesverbrauchs im Node-RED Dashboard

Dieser Node-RED Flow berechnet aus den MQTT Daten des WiFi ACM-ESP den aufgelaufenen Verbrauch und die Kosten des aktuellen Tags.

Node-RED Flow für Verbrauch und Kosten des aktuellen Tags

Gateway-Betrieb

Mit der Option „Gatewaymode“ (nur im Dauerbetrieb mit Netzgerät möglich) wird die serielle ACM Schnittstelle zum Zähler über einen TCP Server auf Port 4455 transparent zur Verfügung gestellt. So kann mit dem Zähler direkt mit einer geeigneten Software kommuniziert werden. Im Gateway-Betrieb sendet das WiFi ACM-ESP keine eigenen Requests zum Zähler so dass alle Datensenken und die Anzeige im webUI deaktiviert sind.

libmbus

Die quelloffene in C geschriebene Bibliothek libmbus enthält zusätzlich einige Tools mit denen mit dem WiFi ACM-ESP kommuniziert werden kann.

~/libmbus/bin$ ./mbus-tcp-request-data 10.0.1.50 4455 254
<SlaveInformation>
    <Id>12345678</Id>
    <Manufacturer>ELS</Manufacturer>
    <Version>129</Version>
    <ProductName></ProductName>
    <Medium>Gas</Medium>
    <AccessNumber>97</AccessNumber>
    <Status>00</Status>
    <Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
    <Function>Instantaneous value</Function>
    <StorageNumber>0</StorageNumber>
    <Unit>Volume (m m^3)</Unit>
    <Value>6273734</Value>
    <Timestamp>2025-11-02T23:16:49Z</Timestamp>
</DataRecord>

pyMeterBus

Mit der Pythonimplementierung pyMeterBus kann ebenfalls der Zähler direkt ausgelesen werden:

~/pyMeterBus$ python3 -m tools.mbus-serial-request-data socket://10.0.1.50:4455
{
  "body": {
    "header": {
    "access_no": 98,
    "identification": "0x38, 0x94, 0x12, 0x73",
    "manufacturer": "ELS",
    "medium": "0x3",
    "sign": "0x0, 0x0",
    "status": "0x0",
    "type": "0x72",
    "version": "0x81"
  },
  "records": [
    {
      "function": "FunctionType.INSTANTANEOUS_VALUE",
      "storage_number": 0,
      "type": "VIFUnit.VOLUME",
      "unit": "MeasureUnit.M3",
      "value": 6273.73400000000037834979593753814697265625
    }
  ]
  },
  "head": {
    "a": "0x0",
    "c": "0x8",
    "crc": "0x10",
    "length": "0x15",
    "start": "0x68",
    "stop": "0x16"
  }
}

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. Ab Version 1.33 kann sich die Firmware des WiFi ACM-ESP selber direkt über den Server aktualisieren, dazu einfach im Konfigurationsmodus auf der Weboberfläche den install Button klicken.

1.1513.2.23Send MQTT Autodiscovery messages for Home Assistant
1.1613.3.23Configurable MQTT topic
„no sleep“ option for power supply
1.178.5.23Fix protocolparser for some meters
Formating of volume in webUI
1.1821.8.23Improved WiFi scanning
Hint in webUI when in configuration mode
factory reset
1.196.10.23Configurable read interval in „no sleep mode“
support for new VIF
1.2122.11.23Support ThingSpeak as datatarget
Send MQTT autodiscovery with device information for Home Assistant
Captive portal
Support variable length fields in M-bus data
1.224.12.23Calculate flow
Increase buffer for discovery messages
1.2326.2.24Configurable deep sleep time
more memory space for config settings
Merge InfluxDB Cloud / 2 targets
Report last delta volume
1.249.7.24MQTT keep alive in no-battery-mode
1.258.11.24Added HTTP target
Fix multiple targets
1.2610.1.25add flow sensor for home assistant
remove battery sensor on power supply mode
1.2929.4.25fix number of decimal places in HTTP target
1.3026.5.25Redesign webUI
New datatarget ACM-ESP cloud
1.313.6.25Add log section in webUI
Minor design improvents in webUI
1.3216.6.25Synchronize sleep time with ACMESP cloud
MQTT: configurable retain
1.3323.6.25quit config button in webUI
WiFi scan only on config mode
ACMESP cloud sleep sync window ->1 %
fix sleep settings in wenUI on reload
HTTP server update
1.3430.6.25Improve ACMESP sync & webUI reboot behavior
1.3621.10.25Option for disabling webUI
Configurable hostname
Add RSSI sensor for home assistant
Authentification for webUI
1.375.11.2025Add MAC & HW version to MQTT device info
Gatewaymode

Die aktuelle Firmware kann unter https://acmesp.seegel-systeme.de/update/ heruntergeladen werden.

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 geschehen auf eigene Verantwortung.