Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Fernwärme Sensus PolluStat / MBus

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    14
    1
    188

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

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

Fernwärme Sensus PolluStat / MBus

Geplant Angeheftet Gesperrt Verschoben Hardware
19 Beiträge 2 Kommentatoren 1.6k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    Clown007
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich bin ein wenig am Verzweifeln mit dem Auslesen des Sensus PolluStat über den MBus. Ich möchte diesen Zähler auslesen und habe angefangen mich zu informieren. Das MBus Modul lässt sich nachrüsten, also bestellt und eingebaut. Dazu einen MBus-USB Konverter bestellt und in einen Raspi gesteckt. Die beiden mit zwei Kabeln verbunden. Mein iobroker läuft auf einem Server an anderer Stelle. So, das war der einfache Teil, jetzt kommt das auslesen der Daten.
    Ich habe es erst mal mit libmbus probiert: https://the78mole.de/taking-your-m-bus-online-with-mqtt/
    Der findet keine Geräte.
    Dann habe ich mal iobroker installiert und den Adapter Mbus installiert: All M-Bus devices could not be read, reinitialize and start over

    Jetzt weiß ich nicht so richtig wo ich suchen soll. Funktioniert der MBus Adapter im Sensus? Ist der USB Stick ein Problem? Zwischendurch hatte ich noch etwas von 2 Widerständen gelesen. Sol ich die Spannung auf dem Bus mal messen? Ich bin für jeden Tipp dankbar.

    C SBorgS 2 Antworten Letzte Antwort
    0
    • C Clown007

      Hallo,
      ich bin ein wenig am Verzweifeln mit dem Auslesen des Sensus PolluStat über den MBus. Ich möchte diesen Zähler auslesen und habe angefangen mich zu informieren. Das MBus Modul lässt sich nachrüsten, also bestellt und eingebaut. Dazu einen MBus-USB Konverter bestellt und in einen Raspi gesteckt. Die beiden mit zwei Kabeln verbunden. Mein iobroker läuft auf einem Server an anderer Stelle. So, das war der einfache Teil, jetzt kommt das auslesen der Daten.
      Ich habe es erst mal mit libmbus probiert: https://the78mole.de/taking-your-m-bus-online-with-mqtt/
      Der findet keine Geräte.
      Dann habe ich mal iobroker installiert und den Adapter Mbus installiert: All M-Bus devices could not be read, reinitialize and start over

      Jetzt weiß ich nicht so richtig wo ich suchen soll. Funktioniert der MBus Adapter im Sensus? Ist der USB Stick ein Problem? Zwischendurch hatte ich noch etwas von 2 Widerständen gelesen. Sol ich die Spannung auf dem Bus mal messen? Ich bin für jeden Tipp dankbar.

      C Offline
      C Offline
      Clown007
      schrieb am zuletzt editiert von
      #2

      @clown007 Ich habe jetzt am MBus gemessen und konnte keine Spannung feststellen. Dann muss die Schnittstelle wohl doch noch mit der Service Software aktiviert werden? Im Handbuch ist nur die Änderung der Adresse per Software beschrieben von der Aktivierung steht dort nichts.

      1 Antwort Letzte Antwort
      0
      • C Clown007

        Hallo,
        ich bin ein wenig am Verzweifeln mit dem Auslesen des Sensus PolluStat über den MBus. Ich möchte diesen Zähler auslesen und habe angefangen mich zu informieren. Das MBus Modul lässt sich nachrüsten, also bestellt und eingebaut. Dazu einen MBus-USB Konverter bestellt und in einen Raspi gesteckt. Die beiden mit zwei Kabeln verbunden. Mein iobroker läuft auf einem Server an anderer Stelle. So, das war der einfache Teil, jetzt kommt das auslesen der Daten.
        Ich habe es erst mal mit libmbus probiert: https://the78mole.de/taking-your-m-bus-online-with-mqtt/
        Der findet keine Geräte.
        Dann habe ich mal iobroker installiert und den Adapter Mbus installiert: All M-Bus devices could not be read, reinitialize and start over

        Jetzt weiß ich nicht so richtig wo ich suchen soll. Funktioniert der MBus Adapter im Sensus? Ist der USB Stick ein Problem? Zwischendurch hatte ich noch etwas von 2 Widerständen gelesen. Sol ich die Spannung auf dem Bus mal messen? Ich bin für jeden Tipp dankbar.

        SBorgS Offline
        SBorgS Offline
        SBorg
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #3

        @clown007 sagte in Fernwärme Sensus PolluStat / MBus:

        MBus-USB Konverter

        Hi, welchen denn? Ich hoffe keinen "Slave", du brauchst nämlich einen "Master". Der injiziert dann auch die typ. 30-40V Busspannung...

        LG SBorg ( SBorg auf GitHub)
        Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

        C 1 Antwort Letzte Antwort
        1
        • SBorgS SBorg

          @clown007 sagte in Fernwärme Sensus PolluStat / MBus:

          MBus-USB Konverter

          Hi, welchen denn? Ich hoffe keinen "Slave", du brauchst nämlich einen "Master". Der injiziert dann auch die typ. 30-40V Busspannung...

          C Offline
          C Offline
          Clown007
          schrieb am zuletzt editiert von
          #4

          @sborg Das könnte das Problem sein. Es handelt sich um diesen Adapter: https://de.aliexpress.com/item/33026100346.html?spm=a2g0o.9042311.0.0.3d494c4dh4lPP1
          China typisch taucht natürlich Master und Slave auf ;-)

          Kannst Du mir einen Adapter empfehlen? Das ist ja wahrscheinlich auch nur ein Slave? https://www.ebay.de/itm/255283310832

          SBorgS 1 Antwort Letzte Antwort
          0
          • C Clown007

            @sborg Das könnte das Problem sein. Es handelt sich um diesen Adapter: https://de.aliexpress.com/item/33026100346.html?spm=a2g0o.9042311.0.0.3d494c4dh4lPP1
            China typisch taucht natürlich Master und Slave auf ;-)

            Kannst Du mir einen Adapter empfehlen? Das ist ja wahrscheinlich auch nur ein Slave? https://www.ebay.de/itm/255283310832

            SBorgS Offline
            SBorgS Offline
            SBorg
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #5

            @clown007 sagte in Fernwärme Sensus PolluStat / MBus:

            Das könnte das Problem sein.

            Ist leider das Problem: "1 x USB Zu MBUS Slave Modul (ohne klein paket"
            Das ist quasi dasselbe wie dein Zähler, nur halt mit Anschluss an den PC. Damit kann man die Daten auf dem MBus abhören/protokollieren.
            Du brauchst im MBus zumindest einen Master und dann 1+n Slaves (üblicherweise die Zähler, oder auch Relais). Da die Busspannung aus dem USB-Anschluss generiert wird und die Slaves sich darüber mit Strom versorgen, ist dann bei ~10 Slaves Schluss.
            Ohne jetzt speziell den Händler zu bevorzugen: https://de.aliexpress.com/item/1005001480698710.html (aber die Master-Variante ;) ). Gibt es auch oft für etwas unter 30,- €
            Bei < 20,- € ist es 100pro nur ein Slave-Modul.
            ...und das Ebay-Teil ist ein reiner Signal-Konverter, der wird dann sicherlich nicht vom ioBroker erkannt, noch liefert er die Busspannung.

            LG SBorg ( SBorg auf GitHub)
            Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

            C 1 Antwort Letzte Antwort
            1
            • C Offline
              C Offline
              Clown007
              schrieb am zuletzt editiert von
              #6

              @sborg Vielen Dank, das war mir so nicht klar. Jetzt muss ich erst mal wieder etwas warten ;-)
              Zwischendurch hatte ich überlegt diesen HAT für den Raspberry zu bestellen: https://www.packom.net/m-bus-hats/
              Für alle zur Info, die sich ein weiteres Gehäuse sparen wollen.

              1 Antwort Letzte Antwort
              0
              • SBorgS SBorg

                @clown007 sagte in Fernwärme Sensus PolluStat / MBus:

                Das könnte das Problem sein.

                Ist leider das Problem: "1 x USB Zu MBUS Slave Modul (ohne klein paket"
                Das ist quasi dasselbe wie dein Zähler, nur halt mit Anschluss an den PC. Damit kann man die Daten auf dem MBus abhören/protokollieren.
                Du brauchst im MBus zumindest einen Master und dann 1+n Slaves (üblicherweise die Zähler, oder auch Relais). Da die Busspannung aus dem USB-Anschluss generiert wird und die Slaves sich darüber mit Strom versorgen, ist dann bei ~10 Slaves Schluss.
                Ohne jetzt speziell den Händler zu bevorzugen: https://de.aliexpress.com/item/1005001480698710.html (aber die Master-Variante ;) ). Gibt es auch oft für etwas unter 30,- €
                Bei < 20,- € ist es 100pro nur ein Slave-Modul.
                ...und das Ebay-Teil ist ein reiner Signal-Konverter, der wird dann sicherlich nicht vom ioBroker erkannt, noch liefert er die Busspannung.

                C Offline
                C Offline
                Clown007
                schrieb am zuletzt editiert von
                #7

                @sborg Mittlerweile habe ich den MBus Master Hat am Raspi pi Zero am laufen. Wenn man die Kabel direkt anlötet, passt das sogar in das Standard Gehäuse. Ich habe lange gesucht, bis ich gelesen habe, dass GPIO 26 aktiviert werden muss ;-) Das habe ich jetzt einfach dauerhaft in der config.txt gelöst. England kostet jetzt Zoll ;-(

                Ich kann jetzt tatsächlich mein Fernwärme Messgerät mit libmbus auslesen. Jetzt muss ich die Daten zum ioBroker bringen.

                Eigentlich wollte ich die Daten per mqtt übertragen. Leider habe kein passendes Script gefunden. Dann habe ich angefangen die Daten zu parsen (mit xq) und mittels mosquitto an den iobroker MQTT Server zu senden. Da bin ich noch dabei. Wenn es läuft, kann ich meins gerne bereitstellen.

                Es gibt ja auch den ModBus Adapter. Gibt es nicht eine Software die einen MBus TCP Server auf dem Raspi bereit stellt? Ich habe leider mit suchen nichts gefunden.

                SBorgS 1 Antwort Letzte Antwort
                0
                • C Clown007

                  @sborg Mittlerweile habe ich den MBus Master Hat am Raspi pi Zero am laufen. Wenn man die Kabel direkt anlötet, passt das sogar in das Standard Gehäuse. Ich habe lange gesucht, bis ich gelesen habe, dass GPIO 26 aktiviert werden muss ;-) Das habe ich jetzt einfach dauerhaft in der config.txt gelöst. England kostet jetzt Zoll ;-(

                  Ich kann jetzt tatsächlich mein Fernwärme Messgerät mit libmbus auslesen. Jetzt muss ich die Daten zum ioBroker bringen.

                  Eigentlich wollte ich die Daten per mqtt übertragen. Leider habe kein passendes Script gefunden. Dann habe ich angefangen die Daten zu parsen (mit xq) und mittels mosquitto an den iobroker MQTT Server zu senden. Da bin ich noch dabei. Wenn es läuft, kann ich meins gerne bereitstellen.

                  Es gibt ja auch den ModBus Adapter. Gibt es nicht eine Software die einen MBus TCP Server auf dem Raspi bereit stellt? Ich habe leider mit suchen nichts gefunden.

                  SBorgS Offline
                  SBorgS Offline
                  SBorg
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @clown007 Brexit... ;)
                  Mit dem USB-Teil hättest du halt einfach den Adapter nutzen können ohne weiteres drum herum (+10 Tage Lieferung bieten mittlerweile viele beim Ali an inkl. Zoll, was auch alles super funktioniert).
                  Was aber auch funktionieren könnte, ist dein "falscher" Slave. Den Bus hast du mit dem Hat jetzt am laufen, dann kannst du auch mit dem Slave nun die Daten abgreifen. Ich weiß nur nicht ob der Adapter den Slave als Quelle akzeptiert. Aber Versuch macht kluch :)

                  LG SBorg ( SBorg auf GitHub)
                  Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                  C 1 Antwort Letzte Antwort
                  0
                  • SBorgS SBorg

                    @clown007 Brexit... ;)
                    Mit dem USB-Teil hättest du halt einfach den Adapter nutzen können ohne weiteres drum herum (+10 Tage Lieferung bieten mittlerweile viele beim Ali an inkl. Zoll, was auch alles super funktioniert).
                    Was aber auch funktionieren könnte, ist dein "falscher" Slave. Den Bus hast du mit dem Hat jetzt am laufen, dann kannst du auch mit dem Slave nun die Daten abgreifen. Ich weiß nur nicht ob der Adapter den Slave als Quelle akzeptiert. Aber Versuch macht kluch :)

                    C Offline
                    C Offline
                    Clown007
                    schrieb am zuletzt editiert von Clown007
                    #9

                    @sborg Ich kann den USB Adapter nicht in den IoBroker Server stecken, weil der auf einem virtuellen Server läuft und ganz wo anders steht. Ich hätte den USB Adapter ja genau so in der Raspberry gesteckt oder habe ich einen Denkfehler? Anders wäre es mit einem ModBus-> TCP Server. Ich wollte jetzt einen "ganzen" iobroker auf dem Raspi aufsetzen.

                    SBorgS 1 Antwort Letzte Antwort
                    0
                    • C Clown007

                      @sborg Ich kann den USB Adapter nicht in den IoBroker Server stecken, weil der auf einem virtuellen Server läuft und ganz wo anders steht. Ich hätte den USB Adapter ja genau so in der Raspberry gesteckt oder habe ich einen Denkfehler? Anders wäre es mit einem ModBus-> TCP Server. Ich wollte jetzt einen "ganzen" iobroker auf dem Raspi aufsetzen.

                      SBorgS Offline
                      SBorgS Offline
                      SBorg
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @clown007 Macht der Raspi etwas oder bedient der nur den Hat?
                      Du könntest auf dem Pi einen ioB installieren und nur den MBus-Adapter. Dann stellst du deinen ioB-Server auf Multihost um und den Pi als ioB-Slave.
                      Ansonsten gibt es (unbezahlbare) MBus-LAN-Gateways ... so ab 500,- € aufwärts...
                      ...oder mit Leidensfähigkeit auch Bastelprojekte MBus --> ESP8266/32 (dann per MQTT an den ioB)

                      LG SBorg ( SBorg auf GitHub)
                      Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                      C 1 Antwort Letzte Antwort
                      0
                      • SBorgS SBorg

                        @clown007 Macht der Raspi etwas oder bedient der nur den Hat?
                        Du könntest auf dem Pi einen ioB installieren und nur den MBus-Adapter. Dann stellst du deinen ioB-Server auf Multihost um und den Pi als ioB-Slave.
                        Ansonsten gibt es (unbezahlbare) MBus-LAN-Gateways ... so ab 500,- € aufwärts...
                        ...oder mit Leidensfähigkeit auch Bastelprojekte MBus --> ESP8266/32 (dann per MQTT an den ioB)

                        C Offline
                        C Offline
                        Clown007
                        schrieb am zuletzt editiert von Clown007
                        #11

                        @sborg Der Raspi macht nur den Hat. Das wäre also eine Option. War mir eigentlich zu viel Overhead. Ich hatte gehofft, dass es einen Modbus -> TCP Adapter in Software gibt (eigentlich reicht der Slave Teil von Modbus Adapter. Hat der Raspi Pi Zero genug Power für ein IoBroker?
                        Eventuell mach ich doch noch die Umsetzung auf MQTT selber ;-)

                        SBorgS 1 Antwort Letzte Antwort
                        0
                        • C Clown007

                          @sborg Der Raspi macht nur den Hat. Das wäre also eine Option. War mir eigentlich zu viel Overhead. Ich hatte gehofft, dass es einen Modbus -> TCP Adapter in Software gibt (eigentlich reicht der Slave Teil von Modbus Adapter. Hat der Raspi Pi Zero genug Power für ein IoBroker?
                          Eventuell mach ich doch noch die Umsetzung auf MQTT selber ;-)

                          SBorgS Offline
                          SBorgS Offline
                          SBorg
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @clown007 Hatte ich oben vergessen, eine Softwarelösung kenne ich auch nicht.
                          Da der ioB auch auf einem PI 2 mit 500MB läuft, sollte es der Zero auch packen. Ein "naggischer" ioB mit einem Adapter braucht auch nicht wirklich viel.

                          LG SBorg ( SBorg auf GitHub)
                          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                          C 1 Antwort Letzte Antwort
                          0
                          • SBorgS SBorg

                            @clown007 Hatte ich oben vergessen, eine Softwarelösung kenne ich auch nicht.
                            Da der ioB auch auf einem PI 2 mit 500MB läuft, sollte es der Zero auch packen. Ein "naggischer" ioB mit einem Adapter braucht auch nicht wirklich viel.

                            C Offline
                            C Offline
                            Clown007
                            schrieb am zuletzt editiert von Clown007
                            #13

                            @sborg Ich habe mir jetzt doch einfach ein kleines Bash Script geschrieben, dass die Daten zum MQTT Broker überträgt. Das kann Dein einfach per Cronjob ausgeführt werden:

                            Änderungen, Optimierungen, Anmerkungen natürlich erwünscht (mein erstes Bash Script)

                            #!/bin/bash 
                            
                            # Code Basis stammt von https://the78mole.de/taking-your-m-bus-online-with-mqtt/
                            # Ich habe es nur ergänzt um alle Datenfelden flexibel zum MQTT Server zu übertragen
                            # Getestet nur mit einem Wärmezähler. Ich hoffe es felxibel genug auch für andere Geräte
                            
                            
                            ADDRESS_FILE="~/addresses.txt"
                            BAUDRATE=2400
                            DEVICE=/dev/ttyAMA0
                            MQTT_HOST=HOSTNAME
                            MQTT_USER=MQTT_USER
                            MQTT_PASS=MQTT_PASSWORT
                            MQTT_TOPIC=MQTT_TOPIC
                            
                            #Basis Informationen
                            modbus_array[0]=.MBusData.SlaveInformation.Id
                            modbus_array[1]=.MBusData.SlaveInformation.Manufacturer 
                            modbus_array[2]=.MBusData.SlaveInformation.Version
                            modbus_array[3]=.MBusData.SlaveInformation.Status
                            
                            #----------------------------------------------------------
                            
                            
                            
                             
                            
                            while read ameter
                            do 
                            echo -n "Getting data from $ameter..."
                                # The sed is for replacing the @ with _ to be able to match on it in HASS templates
                                 METER_DATA=$(mbus-serial-request-data-multi-reply -b $BAUDRATE $DEVICE $ameter | xq . | sed -e 's/@/_/')
                                  /usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS \
                                    -t $MQTT_TOPIC/$ameter -m "${METER_DATA}"
                              
                             BYTCNT=$(echo "$METER_DATA" | wc -c)
                                echo "  $BYTCNT bytes sent"
                            
                            
                            # Basis Parameter auslesen
                            for Parameter in "${modbus_array[@]}"
                            do
                              ausgabe=$(echo $METER_DATA | jq "$Parameter" )
                              #Punkte in / konvertieren für mqtt
                              Parameter=$(echo $Parameter | sed -e 's!\.!\/!g') 
                              /usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS -t $MQTT_TOPIC/$ameter$Parameter -m "$ausgabe"
                              #Ausgabe des MQTT Pfades und Wertes 
                              echo "$MQTT_TOPIC/$ameter$Parameter -> $ausgabe"
                            
                            done
                            
                            #Schleife über alle Data Records
                            for row in $(echo $METER_DATA | jq '.MBusData.DataRecord | keys'); do
                            
                            	#Leere Datenfelder am Anfang und Ende abfangen
                            	if [[ ${row} != "[" ]] && [[ ${row} != "]" ]]
                            	then
                            	 #Das Komma am Ende entfernen
                            	 id=$(echo "${row}" | sed -e 's/,//')
                             
                            	 #Einen Int Wert daraus machen
                            	 nummer=$(("$id"+0)) 
                            
                            	  #Alle Keys (Datenpunkte) auslesen
                            		for name in $(echo $METER_DATA | jq ".MBusData.DataRecord[$nummer] | keys"); do
                            	
                            			#Leere Datenfelder am Anfang und Ende abfangen
                            			if [[ ${name} != "[" ]] && [[ ${name} != "]" ]]
                            			then
                            	
                            				# Ein paar Sonderzeichen aus dem Pfad entfernen
                            				pfad=".MBusData.DataRecord[$nummer].${name}"
                            				pfad=$(echo $pfad |  sed 's/\"//g')	
                            				pfad=$(echo $pfad |  sed 's/\,//g')
                            	
                            				#Den richtigen Wert aus dem json holen
                            				wert=$(echo $METER_DATA | jq $pfad)
                            
                                                            #Anführungsteichen entfernen
                            				wert=$(echo $wert |  sed 's/\"//g')
                            
                            
                            				#Umformatieren für eine MQTT Pfad
                            				pfad=$(echo $pfad |  sed 's/\./\//g')
                            				pfad=$(echo $pfad |  sed 's/\[/\_/g')
                            				pfad=$(echo $pfad |  sed 's/\]//g')
                            				#Zum MQTT Server senden
                            				/usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS -t $MQTT_TOPIC/$ameter$pfad -m "$wert"
                            				echo "$MQTT_TOPIC/$ameter$pfad --> $wert"
                            		
                            			fi
                            
                            		done
                            
                            
                            	fi
                              
                            done	
                            
                            
                            
                            done < <(cat $ADDRESS_FILE)
                            
                            SBorgS 1 Antwort Letzte Antwort
                            0
                            • C Clown007

                              @sborg Ich habe mir jetzt doch einfach ein kleines Bash Script geschrieben, dass die Daten zum MQTT Broker überträgt. Das kann Dein einfach per Cronjob ausgeführt werden:

                              Änderungen, Optimierungen, Anmerkungen natürlich erwünscht (mein erstes Bash Script)

                              #!/bin/bash 
                              
                              # Code Basis stammt von https://the78mole.de/taking-your-m-bus-online-with-mqtt/
                              # Ich habe es nur ergänzt um alle Datenfelden flexibel zum MQTT Server zu übertragen
                              # Getestet nur mit einem Wärmezähler. Ich hoffe es felxibel genug auch für andere Geräte
                              
                              
                              ADDRESS_FILE="~/addresses.txt"
                              BAUDRATE=2400
                              DEVICE=/dev/ttyAMA0
                              MQTT_HOST=HOSTNAME
                              MQTT_USER=MQTT_USER
                              MQTT_PASS=MQTT_PASSWORT
                              MQTT_TOPIC=MQTT_TOPIC
                              
                              #Basis Informationen
                              modbus_array[0]=.MBusData.SlaveInformation.Id
                              modbus_array[1]=.MBusData.SlaveInformation.Manufacturer 
                              modbus_array[2]=.MBusData.SlaveInformation.Version
                              modbus_array[3]=.MBusData.SlaveInformation.Status
                              
                              #----------------------------------------------------------
                              
                              
                              
                               
                              
                              while read ameter
                              do 
                              echo -n "Getting data from $ameter..."
                                  # The sed is for replacing the @ with _ to be able to match on it in HASS templates
                                   METER_DATA=$(mbus-serial-request-data-multi-reply -b $BAUDRATE $DEVICE $ameter | xq . | sed -e 's/@/_/')
                                    /usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS \
                                      -t $MQTT_TOPIC/$ameter -m "${METER_DATA}"
                                
                               BYTCNT=$(echo "$METER_DATA" | wc -c)
                                  echo "  $BYTCNT bytes sent"
                              
                              
                              # Basis Parameter auslesen
                              for Parameter in "${modbus_array[@]}"
                              do
                                ausgabe=$(echo $METER_DATA | jq "$Parameter" )
                                #Punkte in / konvertieren für mqtt
                                Parameter=$(echo $Parameter | sed -e 's!\.!\/!g') 
                                /usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS -t $MQTT_TOPIC/$ameter$Parameter -m "$ausgabe"
                                #Ausgabe des MQTT Pfades und Wertes 
                                echo "$MQTT_TOPIC/$ameter$Parameter -> $ausgabe"
                              
                              done
                              
                              #Schleife über alle Data Records
                              for row in $(echo $METER_DATA | jq '.MBusData.DataRecord | keys'); do
                              
                              	#Leere Datenfelder am Anfang und Ende abfangen
                              	if [[ ${row} != "[" ]] && [[ ${row} != "]" ]]
                              	then
                              	 #Das Komma am Ende entfernen
                              	 id=$(echo "${row}" | sed -e 's/,//')
                               
                              	 #Einen Int Wert daraus machen
                              	 nummer=$(("$id"+0)) 
                              
                              	  #Alle Keys (Datenpunkte) auslesen
                              		for name in $(echo $METER_DATA | jq ".MBusData.DataRecord[$nummer] | keys"); do
                              	
                              			#Leere Datenfelder am Anfang und Ende abfangen
                              			if [[ ${name} != "[" ]] && [[ ${name} != "]" ]]
                              			then
                              	
                              				# Ein paar Sonderzeichen aus dem Pfad entfernen
                              				pfad=".MBusData.DataRecord[$nummer].${name}"
                              				pfad=$(echo $pfad |  sed 's/\"//g')	
                              				pfad=$(echo $pfad |  sed 's/\,//g')
                              	
                              				#Den richtigen Wert aus dem json holen
                              				wert=$(echo $METER_DATA | jq $pfad)
                              
                                                              #Anführungsteichen entfernen
                              				wert=$(echo $wert |  sed 's/\"//g')
                              
                              
                              				#Umformatieren für eine MQTT Pfad
                              				pfad=$(echo $pfad |  sed 's/\./\//g')
                              				pfad=$(echo $pfad |  sed 's/\[/\_/g')
                              				pfad=$(echo $pfad |  sed 's/\]//g')
                              				#Zum MQTT Server senden
                              				/usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS -t $MQTT_TOPIC/$ameter$pfad -m "$wert"
                              				echo "$MQTT_TOPIC/$ameter$pfad --> $wert"
                              		
                              			fi
                              
                              		done
                              
                              
                              	fi
                                
                              done	
                              
                              
                              
                              done < <(cat $ADDRESS_FILE)
                              
                              SBorgS Offline
                              SBorgS Offline
                              SBorg
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @clown007 Aus früherer leidiger Erfahrung bin ich nicht so der Fan von vielen Schreibzugriffen auf eine SD-Karte ;)

                              LG SBorg ( SBorg auf GitHub)
                              Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                              C 1 Antwort Letzte Antwort
                              0
                              • SBorgS SBorg

                                @clown007 Aus früherer leidiger Erfahrung bin ich nicht so der Fan von vielen Schreibzugriffen auf eine SD-Karte ;)

                                C Offline
                                C Offline
                                Clown007
                                schrieb am zuletzt editiert von Clown007
                                #15

                                @sborg Wie kommst Du auf viele Schreibzugriffe? Du meinst das Bash Script macht mehr Schreibzugriffe als ein IoB? Es muss nichts gespeichert werden. Es muss nur das Bashscript ausgeführt werden. Das schreibt keinerlei Daten lokal auf das System (einmalig die MBus Adressen, aber auch die könnte man schnell hardcoden). Es werden also nur die Daten vom Betriebssystem gespeichert.
                                Wenn man sich mit Linux auskennt, könnte man das auch die Daten in eine RAM Disk schreiben und die SD-Karte vorm überschrieben schützen. Es sind ja nur log und System Daten. Oder man bootet den Raspi direkt mit PXE ohne SD-Karte ;-)

                                SBorgS 1 Antwort Letzte Antwort
                                0
                                • C Clown007

                                  @sborg Wie kommst Du auf viele Schreibzugriffe? Du meinst das Bash Script macht mehr Schreibzugriffe als ein IoB? Es muss nichts gespeichert werden. Es muss nur das Bashscript ausgeführt werden. Das schreibt keinerlei Daten lokal auf das System (einmalig die MBus Adressen, aber auch die könnte man schnell hardcoden). Es werden also nur die Daten vom Betriebssystem gespeichert.
                                  Wenn man sich mit Linux auskennt, könnte man das auch die Daten in eine RAM Disk schreiben und die SD-Karte vorm überschrieben schützen. Es sind ja nur log und System Daten. Oder man bootet den Raspi direkt mit PXE ohne SD-Karte ;-)

                                  SBorgS Offline
                                  SBorgS Offline
                                  SBorg
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #16

                                  @clown007 sagte in Fernwärme Sensus PolluStat / MBus:

                                  Wie kommst Du auf viele Schreibzugriffe?

                                  Kommt halt darauf an wie oft gepolt wird aber

                                  done < <(cat $ADDRESS_FILE)
                                  

                                  muss halt auch schreibend jedes mal auf die Karte vorher gespeichert werden.
                                  Der ioB schreibt wenig wenn du keine Daten/Adapter hast. Ob das wirklich weniger ist, ehrlich gesagt kA. Letztendlich hilft nur ausprobieren wie lange eine Karte durchhält. Mir hat es in einem Jahr 3 Stück zersemmelt, egal ob günstig, oder teure Kingston etc. Erstes Indiz sind immer komische Fehlermeldungen, bedingt dadurch, dass wg. Fehler das Filesystem auf "read only" gesetzt wurde. Das ist dann 5 vor 12 Uhr vor dem gänzlichen Tod ;)

                                  LG SBorg ( SBorg auf GitHub)
                                  Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                  C 1 Antwort Letzte Antwort
                                  0
                                  • SBorgS SBorg

                                    @clown007 sagte in Fernwärme Sensus PolluStat / MBus:

                                    Wie kommst Du auf viele Schreibzugriffe?

                                    Kommt halt darauf an wie oft gepolt wird aber

                                    done < <(cat $ADDRESS_FILE)
                                    

                                    muss halt auch schreibend jedes mal auf die Karte vorher gespeichert werden.
                                    Der ioB schreibt wenig wenn du keine Daten/Adapter hast. Ob das wirklich weniger ist, ehrlich gesagt kA. Letztendlich hilft nur ausprobieren wie lange eine Karte durchhält. Mir hat es in einem Jahr 3 Stück zersemmelt, egal ob günstig, oder teure Kingston etc. Erstes Indiz sind immer komische Fehlermeldungen, bedingt dadurch, dass wg. Fehler das Filesystem auf "read only" gesetzt wurde. Das ist dann 5 vor 12 Uhr vor dem gänzlichen Tod ;)

                                    C Offline
                                    C Offline
                                    Clown007
                                    schrieb am zuletzt editiert von Clown007
                                    #17

                                    @sborg In dem AdressFile steht nur die MBus Adresse. Die könnte man auch schnell hardcoden im Code oder den Scan jedesmal vorher ausführen. cat sollte aber nicht scheiben, oder?

                                    SBorgS 1 Antwort Letzte Antwort
                                    0
                                    • C Clown007

                                      @sborg In dem AdressFile steht nur die MBus Adresse. Die könnte man auch schnell hardcoden im Code oder den Scan jedesmal vorher ausführen. cat sollte aber nicht scheiben, oder?

                                      SBorgS Offline
                                      SBorgS Offline
                                      SBorg
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von
                                      #18

                                      @clown007 Nein, cat (=type bei DOS/Windows) ließt nur. Ich war der Meinung da landen die Messwerte drin, bis ich eben erst gecheckt habe, dass das Hat per Serial direkt ausgelesen wird.
                                      Sorry, mein Fehler :(
                                      Alles gut und einfach so lassen.

                                      LG SBorg ( SBorg auf GitHub)
                                      Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                      C 1 Antwort Letzte Antwort
                                      1
                                      • SBorgS SBorg

                                        @clown007 Nein, cat (=type bei DOS/Windows) ließt nur. Ich war der Meinung da landen die Messwerte drin, bis ich eben erst gecheckt habe, dass das Hat per Serial direkt ausgelesen wird.
                                        Sorry, mein Fehler :(
                                        Alles gut und einfach so lassen.

                                        C Offline
                                        C Offline
                                        Clown007
                                        schrieb am zuletzt editiert von
                                        #19

                                        @sborg Das ist ja eigentlich das schöne, dass es sehr einfach ist. Nicht mal ein Backup macht Sinn. Einfach die Libmbus, mosquitto und jq installieren. Das wars. Dann reicht es das script wieder zu kopieren. Die MBus Geräte werden selber gesucht. Sollte auch problemlos mit USB ModBus Mastern funktionieren. Die Belastung der SD-Karte ist minimal. Wenn man die auch weg haben will und einem Logs egal sind, einfach mit einer Ram Disk konfigurieren ;-)

                                        1 Antwort Letzte Antwort
                                        0
                                        Antworten
                                        • In einem neuen Thema antworten
                                        Anmelden zum Antworten
                                        • Älteste zuerst
                                        • Neuste zuerst
                                        • Meiste Stimmen


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        586

                                        Online

                                        32.7k

                                        Benutzer

                                        82.4k

                                        Themen

                                        1.3m

                                        Beiträge
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                        ioBroker Community 2014-2025
                                        logo
                                        • Anmelden

                                        • Du hast noch kein Konto? Registrieren

                                        • Anmelden oder registrieren, um zu suchen
                                        • Erster Beitrag
                                          Letzter Beitrag
                                        0
                                        • Home
                                        • Aktuell
                                        • Tags
                                        • Ungelesen 0
                                        • Kategorien
                                        • Unreplied
                                        • Beliebt
                                        • GitHub
                                        • Docu
                                        • Hilfe