NEWS
Gas Zähler BK-G4 AT - mit M-Bus auslesen
-
@burncolonia
Hi habe meine Anleitung oben ergänzt (damit alles beisammen ist), hat mit kleineren "Umwegen" jetzt alles funktioniert (s.o. für Details). Das Modul aus dem o.g. Shop passt
Lg
Florian -
@floxd hört sich super an. Dann warte ich mal auf mein Modul.
Vielen liebe dank
-
@floxd Hi floxd ...
nochmal abschließend: es hat alles fabelhaft funktioniert - danke für Deine tolle Arbeit und Zusammenstellung. Mein Pi3 mit 15V Netzteil dem HAT sowie dem Komm-Modul laufen wirklich super. Ich hatte erst nicht die Baudrate auf 2400 geändert und bekam nur Fehler im Protokoll - aber nach der Änderung - TOP!
Alles Gute für Dich und bleib Gesund.
Es grüßt der BuRn
-
Super! Freut mich, dass es bei Dir auch geklappt hat Hatte der Zähler bei dir auch die Adresse "0"?
Lg
Florian -
Ja genau, bei mir ist es auch die "0".
Ich bin gerade mit dem mbus Adapter noch etwas auf Kriegsfuß. Manchmal lädt er einfach keine Werte mehr nach. Ist aber bisher noch nicht reproduzierbar wann oder warum - auch das log gibt keinen Aufschluss.
wenn ich über den slave raspi:
python3 mbus-serial-request-data.py -d -a 0 /dev/serial0
aufrufe bekomme ich:
Ausgabe:
burn@io-slave:~/pyMeterBus/tools $ python3 mbus-serial-request-data.py -d -a 0 /dev/serial0 INFO:meterbus.serial:SEND (005) 10 40 FD 3D 16 INFO:meterbus.serial:SEND (005) 10 5B 00 5B 16 INFO:meterbus.serial:RECV (027) 68 15 15 68 08 00 72 25 63 *gekürzt* { "body": { "header": { "access_no": 90, "identification": "0x40, 0x86, 0x63, 0x25", "manufacturer": "ELS", "medium": "0x3", "sign": "0x0, 0x0", "status": "0x0", "type": "0x72", "version": "0x25" }, "records": [ { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.VOLUME", "unit": "MeasureUnit.M3", "value": 796.817999999999983629095368087291717529296875 } ] }, "head": { "a": "0x0", "c": "0x8", "crc": "0xa", "length": "0x15", "start": "0x68", "stop": "0x16" } }
Bei den Objekten vom mbus Adapter steht aber noch eine ältere Zahl - auch mit dem "Update now" Button wird nichts neueres gezogen bzw auch die AccessNumber nicht erhöht.
Wenn ich den mbus Adapter dann einmal durchstarte werden sofort die neuen Werte gezogen und korrekt eingetragen ...
Noch als Ergänzung wenn man das Ganze noch in kWh umrechnen möchte - lässt sich sehr leicht über Blocky lösen (nur die beiden Werte unten auf die eigenen anpassen):
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="create" id="kt:st]g_7HQ~1,AVg(+C" x="63" y="105"> <field name="NAME">gaszaehlerStandkWh</field> <value name="VALUE"> <block type="math_number" id="#Pt*uq1EN[v.o|eC$}9c"> <field name="NUM">0</field> </block> </value> <value name="COMMON"> <block type="text" id="bWM6wLsF^Y~MSK#E$4}0"> <field name="TEXT">{"type": "number", "unit": "kWh"}</field> </block> </value> <next> <block type="on" id="[Aae;WUw?/GQLLaSi|YP"> <field name="OID">mbus.0.ELS-40866325.data.0-0-Current</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="{Fr+[nvsyzsRW=R)4u{|" inline="false"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.gaszaehlerStandkWh</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_round" id="Q%?2u.@vC#b(M/t(=t5m"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="{891F$v+}}[eD?-6w0mO"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="Ax|v!m*iFngQsRpxP8%L" inline="false"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="^NSlbme?*yyll)1=!$9C"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="J$]R.`;08=+yt0]}Ii|*" inline="false"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="(8#e7nEvA)961d@}=f1e"> <field name="NUM">1</field> </shadow> <block type="get_value" id="CUh_iTk5%z6jmF=-I~}Y"> <field name="ATTR">val</field> <field name="OID">mbus.0.ELS-40866325.data.0-0-Current</field> </block> </value> <value name="B"> <shadow type="math_number" id="UpA:b_2XlkBjbm_gL8bq"> <field name="NUM">0.96</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="0h?^M2c0@O16iZ6SaT%$"> <field name="NUM">10.364</field> </shadow> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </xml>
-
seltsam, läuft bei mir geschmeidig mit dem Adapter… die Id-Aktualisierungsrate hast du runtergenommen? Habe sie auf 60 (sek)…
-
Ja genau, bin auch auf 60 Sekunden gegangen - mal abwarten - heute läuft er bisher ganz gut durch.
Aufgrund des guten Wetters und Solar-Thermie auf dem Dach ist es aktuell schwierig zu beobachten
-
Hallo und vielen Dank erstmal für die großartige Anleitung!
Ich habe einen Elster BK-G4, habe das ACM 5.2 M-Bus Kabel gekauft und auch den Zihatec Raspberry Hat.
Nachdem ich alles (bis auf ioBroker, das habe ich mal übersprungen bis ich in libmbus oder pyMeterBus eine Antwort bekomme) nach Anleitung installiert und eingerichtet, und das sollte bis dahin eigentlich auch geklappt haben.Nur wenn ich nun mit "./mbus-serial-scan -d -b 2400 /dev/serial0" oder mit "python3 mbus-serial-scan.py -d /dev/serial0" versuche ein Gerät zu erkennen, werden eine gute Weile lang commands geschickt ohne dass je eine Antwort zurück kommt.
Was mich stutzig macht sind dabei die TX und RX Leds am MBus Hat. TX blinkt solange der mbus-serial-scan aktiv ist und da um Antworten bettelt, so weit, so gut.
RX leuchtet jedoch durchgehend sobald das M-Bus Kabel mit dem Gaszähler verbunden ist, und sowohl Raspberry als auch der Hat Strom haben. Ich nehme an das soll nicht so sein? Habt ihr ne Idee wie ich da die Fehlerquelle eingrenzen kann?Um auszuschließen dass vielleicht ein schlechtes Netzteil schuld sein könnte habe ich versuchsweise auch den Raspberry von einer Powerbank, und den Hat von einem 6S Lipo (ca 24V) versorgt, leider mit gleichem Ergebnis.
Wie sieht das bei euch mit der RX LED aus? ich nehme an die leuchtet nicht durchgehend?
Und kann das ein konfigurationsfehler am Raspberry sein, oder ist hier wohl hardwareseitig etwas faul?Beste Grüße aus Wien
Clemens -
Um auszuschließen dass vielleicht ein schlechtes Netzteil schuld sein könnte habe ich versuchsweise auch den Raspberry von einer Powerbank, und den Hat von einem 6S Lipo (ca 24V) versorgt, leider mit gleichem Ergebnis.
ich habe den HAT mit einem seperaten 12V Netzteil versorgt, dass sollte aber nicht das Problem sein
Wie sieht das bei euch mit der RX LED aus? ich nehme an die leuchtet nicht durchgehend?
RX sollte nicht durchgehend leuchten (blinkt nur kurz einmal auf nach kurzem Blinken des TX). Ich meine mich dunkel zu erinnern, dass das bei mir am Anfang auch so war und erst nach Installation von
pip3 install pyMeterBus sudo git clone https://gitlab.com/ganehag/pyMeterBus cd pyMeterBus/tools
funktionierte (kann mich aber auch irren). Ist die Installation ohne Fehlermeldungen durchgelaufen? Hast du es nochmals neu aufgesetzt, andere SD-Karte versucht?
Und kann das ein konfigurationsfehler am Raspberry sein, oder ist hier wohl hardwareseitig etwas faul?
die Jumper richtig gesetzt? Ansonsten bin ich ratlos
-
Das Kabel war Schuld!
Wenn ich das "Elster ACM 5.2 M-Bus" Kabel an meinen Zähler stecke, zieht das ganze am M-Bus dauerhaft knapp 14mA. Der Zihatec Hat ist aber für maximal 6 Lasteinheiten, also 9mA ausgelegt. (Info von Herrn Wendt von Zihatec)
Ich hatte am Zähler noch vom Netzbetreiber so ein Kabelloses Ding zum Zähler auslesen, das aber scheinbar nicht funktioniert (wurde trotzdem immer manuell abgelesen).
An dem Kabel ist mir aufgefallen, dass es im Gegensatz zum ACM 5.2, welches wohl NUR für das Zählwerk AE5 ist (bei meinem Zähler, der zumindest nach Bildvergleichen ein AE2 oder AE3 haben dürfte klappt es ja leider nicht. Elster ist da leider sehr undurchsichtig) keinerlei zusätzliche Elektronik auf der zwischenplatine ist. Also da sind wirklich einfach nur die 2 Kabeladern direkt an mit den 2 unteren Pins verbunden.
Ich habe also einfach mal frech ausprobiert was passiert wenn ich dieses Kabel an den Hat klemme, und siehe da:
Damit klappt das sofort und einwandfrei!Nächster Schritt war natürlich noch auszuprobieren ob das auch überhaupt nur mit zwei Jumperkabeln klappt, und nachdem am anderen Kabel ja sonst eh nichts drauf war, tut es das natürlich auch brav
Die Lehren daraus:
-Bei älteren BK-G4 mit dem Zählwerk das außenrum nicht transparent ist, funktioniert die kombination ACM 5.2 Kabel mit Zihatec Hat wohl nicht. Zur Kontrolle einfach den Strom messen, wenn der mehr als 9mA ist, kann es mit dem Zihatec nicht klappen weil er dann dauerhaft glaubt ein Signal zu erkennen.-Das Kabel ist scheinbar für den Hugo! Es reicht, die unteren 2 Pins mit beliebiger polrichtung direkt an den Zihatec Hat zu hängen. Das ist denke ich eine wichtige Info für Leute die ihren Zähler auslesen wollen, weil das doofe Kabel ja doch gleich mal 80€ kostet! Was genau die Elektronik am ACM5.2 noch tut würde mich aber trotzdem interessieren, vermutlich aber nur ein bisschen Filterung, weil an M-Bus ja grundsätzlich recht viele Geräte parallel hängen könnten und auch die (ungeschirmten) Kabel entsprechend lang sein können.
Anbei noch zwei Bilder dazu. Mit beiden gezeigten Anschlussvarianten klappt das einwandfrei.
Danke nochmal für die Tipps und die großartige Vorarbeit hier!
-
Hallo,
ich habe mir ein Modul entwickelt das direkt auf den Absolut Encoder aufgesteckt wird und über WLAN die Messwerte z. B. an einen MQTT Broker übermittelt, vielleicht interessiert das hier jemanden:
https://www.seegel-systeme.de/2022/12/21/wlan-acm-esp-kommunikationsmodul-fuer-elster-gaszaehler/
Schöne Grüße
Stefan -
@floxd
Hallo, bin auch ein "Geschädigter" der Eslter Gaszähler BK-G4AT, AE5 Typ, mit transparenter Abdeckung des Zählers. Das Gerät will seine Daten einfach nicht rausrücken
Hab mir das M-Bus Interface aus https://github.com/rscada/libmbus/blob/master/hardware/MBus_USB.pdf gebaut.
Das Interface funktioniert ( mit Oszy geprüft, Signale sehen gut aus ... ).
Ich habe kein ACM 5.2 Anschluss gekauft, die MBUS+ / MBUS- Anschlüsse aus der Interface direkt an den unteren Zähler Pins angeschlossen. Es funktioniert nicht, kein Antwort aus dem Zähler. Die Stromaufnahme ist auch nicht normal, über 90 mA, hab es auch schnell getrennt.
Hat jemand Informationen ob der teure Anschlussadapter ( ACM 5.2 ) gekauft werden muss ? Findet im Anschlussadapter irgendeine Signalumwandlung ?Wenn ja, welche Pins werden danach angesteuert ?
Grüße
Nebuk -
@nebuk Da kann ich Dir leider nicht helfen. Beim AE2 / AE3 scheint es (s.o.) auch ohne das Modul zu klappen (da hier auch keine weitere Technik verbaut ist). Beim "ACM 5.2 M-Bus Wire" für den AE5 ist Technik verbaut (siehe mein Photo oben), was genau da passiert vielleicht kann Dir da @PHUNKAFIZER helfen? Er scheint sich gut mit den AE auszukennen! Lg Florian
-
@Phunkafizer
wenn ich fragen darf, was ist bei den BK-G4AT ( AE.05:05.01:01.01 Encoder ) anders als bei den AE02/AE03 ?
Deine Schaltung scheint zu auch ohne den ACM Adapter zu funktionieren, auch für den AE05 Encoder. Kannst vielleicht kurz etwas dazu sagen ?
Wenn ich den MBUS + / MBUS- an den unteren Pins anschließe, kann ich senden ( ist auf dem Oszy schön zu sehen ), es kommt aber keine Antwort, ebenso ist der gezogene Strom nicht OK, über 100 mA. Darum habe ich die Tests auch abgebrochen, das ist für MBUS nicht normal.
Entweder ist beim Zähler der Encoder defekt oder es findet im ACM Adapter eine Signalumwandlung statt. Wie auch immer, Honeywell/Elster haben sich hier etwas einfallen lassen, den Privatanwender an der Kasse zu bieten für etwas was ein offenes System sein sollte...Grüße
Nebuk -
Hallo, ich versuche mal etwas mit den Modul- und Protokollbezeichnungen aufzuräumen. Entscheidend für die Art des elektronischen Anschlusses ist das "A" nach der Modellbezeichnung, z. B. BK-G4A. Die Modelle mit einem A sind mit einer ACM Schnittstelle ausgestattet. Auf diese ACM Schnittstelle können verschiedene Kommunikationsmodule (M-Bus wire, M-Bus wireless, SCR, ...), oder auch das WiFi ACM-ESP Modul aufgesteckt werden. Elektrisch gesehen ist diese ACM Schnittstelle eine Art UART Interface, ein einfacher USB TTL Wandler ist allerdings nicht ausreichend, da die Zählerelektronik über den TX Pin mit Strom versorgt wird und deswegen noch ein Stromtreiber in die Schaltung gehört. Auf der physischen ACM Schnittstelle können nun noch softwareseitig verschiedene Protokolle ablaufen, u. A. das M-Bus Protokoll. Welches Protokoll verwendet wird geht aus der Protokollbezeichnung (AE...) auf dem Zähler hervor.
Die Zähler ohne dem "A" haben physisch eine M-Bus Schnittstelle. Diese ist elektrisch nicht kompatibel zur ACM Schnittstelle, obwohl der gleiche Stecker verwendet wird. Beim M-Bus werden nur 2 Leitungen verwendet, die für Stromversorgung, Sende- und Empfangsdaten benutzt werden.
@nebuk
Die Bezeichnungen AE.... bezeichnen nicht den Encoder, sondern eher das Protokoll. Z. B. können die Encoder AE2, AE3 oder AE5 das M-Bus Protokoll (nicht die elektrische Schnittstelle M-Bus) sprechen. Die Bezeichnung BK-G4AT bezeichnet den ganzen Zähler, also Balgengaszähler in einer bestimmten Größe (4) mit ACM Schnittstelle (A) und temperaturkompensierten Messwerten (T). Meine Schaltung funktioniert nicht nur ohne ACM Adapter, sondern IST ein ACM Adapter. Wenn Du einen BK-G4AT Zähler hast kannst Du entweder einen ACM Adapter Deiner Wahl nehmen, ODER den WiFi ACM-ESP.Gruß Stefan
-
Naja, es scheint doch etwas anders zu sein.
Ich werde in den sauren Apfel beißen müssen und mir ein ACM-Modul kaufen.Grüße
Nebuk -
@floxd Danke für den ausführlichen Post und python3 mbus-serial-request-data.py -d -a 0 /dev/ttyUSB2 läuft bei mir, aber iobroker will gar nicht.
habe leider keine Idee mehr ... Ihr?
Hier noch der Beweis das es funktioniert:
-
Hallo,
so Leute, lasst euch nicht von irgendein Mist täuschen.
Der ACM-Adapter für Gaszähler mit Encoder AE5 ist nichts anders als eine teures MBUS-TTL Adapter. Da drin ist ein NCN5151 IC verbaut, der macht genau das!
Wenn der Zähler im eigenen Keller mit ein R-Pi & Co ausgelesen wird, braucht den ACM-Adapter kein Mensch.
Ein USB-TTL Adapter für 1,5 Euro tut es auch.
Die Pinbelegung am 4-Poligen Stecker (siehe unten )
Links Oben: +3,3V (oder 5V)
Rechts Oben: TX
Links Unten: RX
Rechts Unten: GNDBei mir was die Busadresse 0 und als Baudrate 2400 eingestellt.
Mit dem Raspberry Pi auch keine Probleme.
Grüße
Nebuk -
Hallo,
so Leute, lasst euch nicht von irgendein Mist täuschen.
Ich bin mir nicht sicher von was Du Dich getäuscht fühlst. Der Elster ACM 5.2 M-Bus Wire ist genau das was es verspricht: Ein Adapter Modul der ACM Schnittstelle des Zählers zu einem M-Bus. Nicht mehr, nicht weniger. Darin ist z. B. der Chip verbaut den Du erwähnt hast, bei dem Modul das ich mal auf dem Tisch hatte war es ein TSS721A von TI, scheint aber recht ähnlich zu sein. Zusätzlich ist außenrum noch ein Spannungsregler, der erwähnte Treiber für den TX Pin und Schutzbeschaltung. Wenn Du keinen M-Bus brauchst, weil Du einfach nur in unmittelbarer nähe das TTL Signal an einen Raspberry o. ä. geben willst, kann, wie Du gezeigt hast, ein USB TTL Wandler funktionieren. Obgleich das nicht unbedingt den elektrischen Anforderungen aus dem Datenblatt der ACM Schnittstelle gerecht wird.
Das WiFi ACM-ESP bietet sich an wenn man keine Stromversorgung in der nähe des Zählers hat und/oder eine Plug-and-Play Lösung haben möchte welche direkt die Messwerte ins WiFi-Netz bringt.
Übrigens kann man als Adresse auch 0xFE nehmen, dann meldet sich der Zähler unabhängig welche Adresse er hat.
Gruß
Stefan -
@nebuk Sehr interessant!
Könntest du bitte noch ein wenig darauf eingehen, wie du das softwaretechnisch gelöst hast?Am liebsten würde ich die Daten vom USB-TTL Adapter an einen MQTT broker senden.
Besten Dank!