Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Gas Zähler BK-G4 AT - mit M-Bus auslesen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    562

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Gas Zähler BK-G4 AT - mit M-Bus auslesen

Scheduled Pinned Locked Moved Hardware
52 Posts 23 Posters 12.7k Views 21 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    moritzabcde
    wrote on last edited by moritzabcde
    #42

    Hey!
    Ich habe gerade einen BK-G4 Ac eingebaut bekommen und würde ihn nun gerne bei ioBroker einbinden. Vermutlich lacht ihr wegen der Frage: Darf man die "Plombe" unten rechts entfernen/zerstören, um an den Anschluss zu kommen? BK-G4Ac.jpg
    Wie habt ihr das gemacht? Dieses PDF zur Installation eines Funkmoduls habe ich bei Pipersberg gefunden, aber da wird von einer Ersatzplombe gesprochen.

    P 1 Reply Last reply
    0
    • M moritzabcde

      Hey!
      Ich habe gerade einen BK-G4 Ac eingebaut bekommen und würde ihn nun gerne bei ioBroker einbinden. Vermutlich lacht ihr wegen der Frage: Darf man die "Plombe" unten rechts entfernen/zerstören, um an den Anschluss zu kommen? BK-G4Ac.jpg
      Wie habt ihr das gemacht? Dieses PDF zur Installation eines Funkmoduls habe ich bei Pipersberg gefunden, aber da wird von einer Ersatzplombe gesprochen.

      P Offline
      P Offline
      peterfido
      wrote on last edited by peterfido
      #43

      @moritzabcde Plomben entfernen ist strafbar. Ruf den Energieversorger / Messstellenbetreiber an und frag, ob Du da dran darfst, oder jemand rauskommt und dein Kabel anschließt. Die Antwort ist mit sehr hoher Wahrscheinlichkeit ein Nein.

      Gruß

      Peterfido


      Proxmox auf Intel NUC12WSHi5
      ioBroker: Debian (VM)
      CCU: Debmatic (VM)
      Influx: Debian (VM)
      Grafana: Debian (VM)
      eBus: Debian (VM)
      Zigbee: Debian (VM) mit zigbee2mqtt

      1 Reply Last reply
      0
      • I Offline
        I Offline
        Interflexus
        wrote on last edited by
        #44

        Habe benno B´s Lösung nachgebaut, funktioniert einwandfrei. Sehr simpel im Aufbau. Danke an Oli.

        VG Jens

        D 1 Reply Last reply
        0
        • I Interflexus

          Habe benno B´s Lösung nachgebaut, funktioniert einwandfrei. Sehr simpel im Aufbau. Danke an Oli.

          VG Jens

          D Offline
          D Offline
          dojodojo
          wrote on last edited by dojodojo
          #45

          @interflexus Hast Du für uns ein Bild von deinem Gaszähler?

          Benno B ist Oli, richtig?

          Mit welcher Software, auch das Release flasht Ihr?

          I 1 Reply Last reply
          0
          • D dojodojo

            @interflexus Hast Du für uns ein Bild von deinem Gaszähler?

            Benno B ist Oli, richtig?

            Mit welcher Software, auch das Release flasht Ihr?

            I Offline
            I Offline
            Interflexus
            wrote on last edited by Homoran
            #46

            @dojodojo

            Zählerbild:edited_IMG_20250901_174653205_AE.jpg

            Software ist platformio.io. Ist beschrieben auf Benno B´s github-Link.

            VG Jens

            HomoranH 1 Reply Last reply
            0
            • I Interflexus

              @dojodojo

              Zählerbild:edited_IMG_20250901_174653205_AE.jpg

              Software ist platformio.io. Ist beschrieben auf Benno B´s github-Link.

              VG Jens

              HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #47

              @interflexus setz das Bild nochmal rein! Aber nicht nur die Klartext-ID unkenntlich machen! da gibt es noch weitere :-)

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Reply Last reply
              0
              • I Offline
                I Offline
                Interflexus
                wrote on last edited by
                #48

                Zählerbild - zweiter Versuch:IMG_20250922_172257034~2.jpg

                D 1 Reply Last reply
                1
                • I Interflexus

                  Zählerbild - zweiter Versuch:IMG_20250922_172257034~2.jpg

                  D Offline
                  D Offline
                  dojodojo
                  wrote on last edited by
                  #49

                  @interflexus Vielen Dank

                  1 Reply Last reply
                  0
                  • Benno BB Benno B

                    Ich habe unter https://github.com/BennoB666/BK-G4AT2MQTT einen Quellcode für eine Firmware welche mit einem ESP32 ohne zusätzliche Hardware den Zählerstand ausließt und per MQTT an einen Server sendet.
                    Falls es jemanden hilt.
                    LG Oli

                    R Offline
                    R Offline
                    Rikus1234
                    wrote on last edited by Rikus1234
                    #50

                    @benno-b Danke Dir für den Code! Ich habe ihn in Arduino implementiert und einen Wemos S2 mini genutzt, da ich den noch rumliegen hatte. RX-, TX-Pins angepasst, aber leider erhielt ich da immer nur nicht auswertbare Rückgabewerte vom Zähler. Dann holte ich mir einen Wemos C3 mini wie Du ihn genutzt hast und es klappte. Wo wird das Problem liegen? Ich nutze schon ewig alle möglichen ESPs mit deren GPIOs und kenne mich da schon etwas aus... LG aus Dresden

                    1 Reply Last reply
                    0
                    • Benno BB Benno B

                      Ich habe unter https://github.com/BennoB666/BK-G4AT2MQTT einen Quellcode für eine Firmware welche mit einem ESP32 ohne zusätzliche Hardware den Zählerstand ausließt und per MQTT an einen Server sendet.
                      Falls es jemanden hilt.
                      LG Oli

                      R Offline
                      R Offline
                      Rainer 2
                      wrote on last edited by
                      #51

                      @benno-b

                      Hallo,
                      ich habe mir nun auch den ESP32-C3 Super Mini besorgt.
                      Leider kenne ich mich damit überhaupt nicht aus.
                      Wie bekomme ich den Quellcode auf den ESP?

                      Gruß Rainer

                      1 Reply Last reply
                      0
                      • H Offline
                        H Offline
                        he3
                        wrote on last edited by
                        #52

                        Hi, vielen Dank an @nebuk.
                        Ich hab den BK-G4AT mit dem Protokoll AE.05:05.01:01.01.
                        Ich habs zuerst auch mit nem Wemos probiert, allerdings ESP8266 (D1 mini). Das hab ich mit Arduino irgendwie nicht zum laufen gekriegt und hab mich dann inspirieren lassen von @bv-iobroker. Ich hatte vorher eh einen Pi Zero mit Magnetsensor genutzt und hab den dann einfach mal geupdatet und mit dem USB TTL Adapter läuft es jetzt top. Kosten für den Adapter 2,20€ (Prolific PL2303HX bei Berrybase).

                        anschluss.jpg

                        Angeschlossen sind wie schon beschrieben:
                        2 3
                        1 4

                        1 - grün - TX
                        2 - rot - 5V
                        3 - weiß - RX
                        4 - schwarz - GND

                        Das Python Script:

                        # ---------------------------- Bibliotheken -----------------------
                        import serial
                        import time
                        # ---------------------- Variablen und Inistialisierung -----------
                        # USB Wandler Seriell
                        PORT = "/dev/ttyUSB0"
                        
                        # Poll-Frame um Zaehler anzufragen
                        # Start | Control | Address | Checksum | Stopb
                        POLL_FRAME = bytes([0x10, 0x5B, 0x00, 0x5B, 0x16])
                        
                        # Serielle Schnittstelle
                        ser = serial.Serial(
                            port=PORT,
                            baudrate=2400,
                            bytesize=8,
                            parity=serial.PARITY_EVEN,
                            stopbits=1,
                            timeout=1
                        )
                        
                        # ---------------------- Funktionen -------------------------------
                        #Rohdaten umwandeln
                        def parse_gas_volume_bcd(data):
                            # Sucht nach DIF=0x0C und VIF=0x13 und dekodiert die folgenden 4 BCD-Bytes.
                            for i in range(len(data) - 6):
                                if data[i] == 0x0C and data[i+1] == 0x13:
                                    b0 = data[i+2]
                                    b1 = data[i+3]
                                    b2 = data[i+4]
                                    b3 = data[i+5]
                        
                                    # BCD dekodieren
                                    digits = []
                                    for b in (b0, b1, b2, b3):
                                        digits.append(b & 0x0F)        # Low nibble
                                        digits.append((b >> 4) & 0x0F) # High nibble
                        
                                    # Zahl zusammensetzen
                                    value = 0
                                    factor = 1
                                    for d in digits:
                                        value += d * factor
                                        factor *= 10
                        
                                    # /1000 fuer m3
                                    return value / 1000.0
                                    
                            return None
                        
                        #Seriell abfragen
                        def read_mbus():  
                            # Daten anfragen
                            ser.reset_input_buffer()
                            ser.write(POLL_FRAME)
                            ser.flush()
                            time.sleep(0.1)
                            data = ser.read(256)
                            return data
                            
                        # ---------------------- Programmschleife -------------------------------
                        while True:
                            try:
                                data = read_mbus()
                                print("Rohdaten:", data)
                        
                                if data:
                                    volume = parse_gas_volume_bcd(data)
                                    if volume is not None:
                                        print("Gasverbrauch:", volume, "m3")
                                    else:
                                        print("Kein Volumenwert gefunden")
                                else:
                                    print("Keine Antwort")
                                    
                            except Exception as e:
                                print("Except Fehler:", e)
                                
                            time.sleep(15)
                        
                        
                        
                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        333

                        Online

                        32.7k

                        Users

                        82.6k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe