Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:controller:m-bus_ohne_perl

M-Bus Controller ohne Perl

Auf dieser Seite finden sie eine Möglichkeit ohne perl einen MBus Zähler abzufragen

Vorraussetzung

Zähler ist über einen Serial Anschluß angeschlossen ( der Script kann auch auf TCP MBus gändert werden oder für einen virtuellen Seriellen Anschluß über SOCAT beispielweise)

Der Com-Port sollte auf 2400Baud 8E1 gestellt werden alternativ 300 Baud bzw 9600 Baud

sudo stty /dev/ttyUSB0 2400 cs8 -parodd -cstopb

libmbus libxml2-utils

falls libmbus nicht zu finden ist können sie diese auch manuell bauen siehevzlogger Installation Punkt Building OMS
  • nötigen Dateien installieren
sudo apt update && apt install libmbus libxml2-utils
  • nun eine Zähler auflisten lassen

bitte den Port anpassen

 mbus-serial-scan  /dev/ttyUSB0
#alternativ IP und Port
mbus-tcp-scan 192.168.x.x 10001

Bitte die Addresse merken oder von Zähler ablesen

  • nun kann eine Testabfrage der Daten gemacht werden

001 ist die Addresse des Zählers

mbus-serial-request-data /dev/ttyUSB0 001
#alternativ IP Port addresse
mbus_request_data 192.168.x.x 10001 1
  • Im Fontend einen Kanal erstellen (bsp Zählerstand) und die UUID dann in den Nachfolgenden Schritten eintrag
falls der Zähler die Daten siehe Testabfrage in Wh ausgibt sollte der Kanal mit einer Auflösung von 1000 erstellt werden, bei Leistung zb mW ist eine Auflösung von 10 notwendig

Bitte die hier schauen welche Daten der Zähler zur Verfügung stelle Der nachfolgende Script nutz „ DataRecord id=„0“ “ für Zählerstand

  • Als nächstes Abfragedatei erstellen
  1. Manuelle erstellen
    sudo nano read_meter.sh
  2. alternativ git clone
    sudo git clone https://github.com/RaptorSDS/VZ-Mbus_script.git
  • Abfragedatei bearbeiten
sudo nano read_meter.sh
  • darin folgenden Inhalt hinzufügen/editieren
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# set -e Stop script when something went wrong
set -e

#follow libary need libxml2-utils and libmbus

# Set the serial port for the M-bus adapter
SERIAL_PORT="/dev/ttyUSB0"
#SERIAL_BAUD="2400"

#alternativ ip address and port
#IP="192.xxx.xxx.xxx"
#PORT="10001"

# Set the meter primary address and medium type
PRIMARY_ADDRESS="0"

# Set the medium type
# Medium Type 2 is for electricity meters
# Medium Type 3 is for gas meters
# Medium Type 6 is for heat meters
#MEDIUM_TYPE="2"

#Set Data for Database
UUID1="7680efc0-xxx-xxxx-xxxx-xxxxxxx"
#UUID2=""
#Set address for Database
host_db="192.xxx.xxx.xxx"


# Set the output file path
OUTPUT_FILE="\var\tmp\meter_data.xml"
#OUTPUT_FILE="meter_data.xml"

# Read meter data using libmbus
mbus-serial-request-data "$SERIAL_PORT" "$PRIMARY_ADDRESS"  > "$OUTPUT_FILE"
# alternativ IP Port
# mbus_request_data "$IP" "$PORT" "$PRIMARY_ADDRESS" > "$OUTPUT_FILE"

# Extract the energy value from the XML file using xmllint
ENERGY_VALUE=$(xmllint --xpath 'string(//DataRecord[@id="0"]/Value/text())' "$OUTPUT_FILE")

# Extract the power value from the XML file using xmllint
#POWER_VALUE=$(xmllint --xpath 'string(//DataRecord[@id="1"]/Value/text())' "$OUTPUT_FILE")

#Send data to Database
wget -O - -q "http://"$host_db"/middleware/data/"$UUID1".json?operation=add&value="$ENERGY_VALUE""
#wget -O - -q "http://"$host_db"/middleware/data/"$UUID2".json?operation=add&value="$POWER_VALUE""

# Print the energy and power values for debug
#echo "Energy Value: $ENERGY_VALUE"
#echo "Power Value: $POWER_VALUE"
Bitte Com-Port und UUID an deine Gegebenheiten anpassen.

Dieses Script sendet nur die aktuellen Zählerstand an die Middleware, bereits vorbereitet ist alternativ/zusätzlich die Leistung.
Zeilen mit „#“ sind auskommentiert und können bei Bedarf genutzt werden für Debug oder um einen zweiten Kanal hinzuzufügen.

  • Datei Speichern und ausführbar machen
 chmod +x read-meter.sh
  • Datei zu CRON hinzufügen (hier als Beispiel Raspberry Pi mit 3 minuten Intervall)
*/3 * * * * /bin/bash /home/pi/read_meter.sh

Der Mbus ist ggf nicht der schnellste eine Auslesung sollte minimal im Minuten Bereich durchgeführt werden .

software/controller/m-bus_ohne_perl.txt · Zuletzt geändert: 2023/05/27 18:02 von raptorsds