5
Rated 5 out of 5
5 von 5 Sternen (basierend auf 14 Bewertungen)
Ausgezeichnet100%
Sehr gut0%
Durchschnittlich0%
Schlecht0%
Furchtbar0%

Super Projekt!

Rated 5 out of 5
2. November 2022

Hallo!

Ich finde das Projekt super und würde auch gerne eine der neuen Platinen erwerben. Bitte melde Dich gerne bei mir! Danke!

Gibt es Plände auch Parameter zurück zu schreiben, bspw. Warmwassersolltemperatur oder andere, so dass man grundsätzlich die Regelung der 2107 beliebig dynamisch gestalten könnte?

Viele Grüße!

Anton

Tolles Projekt…….

Rated 5 out of 5
23. Oktober 2022

Hallo Daniel,

Durch Zufall bin ich auf Deinen sehr interessanten Blog gestossen. Möchte auch meine Logamatic aus der Ferne auslesen. Hast Du noch eine alte REV der Platine übrig (brauche „nur“ seriell, kein WLAN) oder muss ich auf die Neulieferung warten ?

Danke und Grüße

Henry

Henry

Antwort von MolesBlog

Hallo Henry,

leider ist alles an Bestand weg…

Ohne WLAN-Modul ist schwierig, da ich nur SMD-bestückte PCBs bestellt habe und keine unbestückten. Man könnte theoretisch natürlich einfach einen USB-serial-TTL-Konverter (5V-Pegel) an die Stiftleiste anhängen und die Spannungsversorgung der restlichen Schaltung nicht freischalten, aber das wäre eigentlich Verschwendung. Man kann aber auch ganz einfach den seriellen Port des ESP über TCP verfügbar machen: https://github.com/AlphaLima/ESP32-Serial-Bridge

Für den ESP8266 (leider nicht direkt für den ESP32) gibt es z.B. dieses Projekt hier: https://github.com/jeelabs/esp-link

Auch in ESPhome ist das ganz easy. Einen Blogpost zu genau dem Thema habe ich ja auch schon erstellt: https://the78mole.de/the-remote-serial-debugging-nightmare/

So fällt dann auch das ganze Rumgekabele mit der seriellen Schnittstelle weg.

Ich schreibe Dich auch nochmal über Email an bzgl. Adress-Austausch.

Grüße,

Daniel

Genau das, was ich suche

Rated 5 out of 5
29. September 2022

Moin!

Ich habe Interesse an einer fertigen Platine. Eigentlich wollte ich so etwas auf Basis einer NodeMCU selbst bauen, aber ein fertiges Gerät wäre natürlich besser – und schneller. Meine SMD-Lötkenntnisse sind allerdings nicht besonders.

Ist die FW auch allgemein für MQTT/FHEM/OpenHAB geeignet?

Ralph

Nur Monitoring oder Steuerung?

Rated 5 out of 5
28. September 2022

Kann man damit die Werte nur ablesen, oder kann man auch Steuern (Temperatur, Warmwasser, etc.)?

Alexander Kusnezov

Tolle Einführung, die mir sehr geholfen hat

Rated 5 out of 5
26. Januar 2022

Ich habe mir erlaubt, dein Script etwas zu erweitern:

#!/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)

#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)

Martin

Antwort von MolesBlog

Hallo Martin,

schön, dass es Dir geholfen und gefallen hat.

Danke auch für die Verbesserungsvorschläge. Die werde ich mir mal genauer anschauen und einpflegen.

Grüße,

Daniel (the78mole)