Wärmemengenzähler per MBus auslesen

Begonnen von torfbolt, 28 Dezember 2014, 00:15:05

Vorheriges Thema - Nächstes Thema

torfbolt

Hallo zusammen!

Ich habe in den letzten Tagen ein paar Geräte im Haus an FHEM angebunden. Dabei ist auch ein Wärmemengenzähler, der seine Werte per mbus (meter-bus) zur Verfügung stellt. Dieser hängt per Kabel an einem mbus-master (/dev/ttyUSB0).

Da FHEM soweit ich das sehe noch keine Unterstützung für kabelgebundene mbus-devices hat, habe ich die Bibliothek libmbus von rscada bemüht: https://github.com/rscada/libmbus.
Diese enthält das Beispielprogramm mbus-serial-request-data, welches ein device ausliest und die Daten als XML ausgibt. Das wird dann geparsed und per CustomReadings in FHEM eingebunden:

define WMZ CustomReadings
attr WMZ icon sani_boiler_temp
attr WMZ interval 10
attr WMZ readingDefinitions COMBINED:qx(/opt/libmbus/get_mbus_data.sh),Energie:,Volumen:,Fluss:,Leistung:,Vorlauf_raw:,Ruecklauf_raw:,Spreizung_raw:,HerstellerID:,KundenID:
attr WMZ room Heizung
attr WMZ stateFormat {sprintf("%.2f",ReadingsVal("WMZ","Leistung",0)/1000.0)."kW"}
attr WMZ userReadings Ruecklauf:Ruecklauf_raw { ReadingsVal("WMZ", "Ruecklauf_raw", 0)/10.0;; },Vorlauf:Vorlauf_raw { ReadingsVal("WMZ", "Vorlauf_raw", 0)/10.0;; },Spreizung:Spreizung_raw { ReadingsVal("WMZ", "Spreizung_raw", 0)/1000.0;; }


Das script zum Abholen der Daten, falls jemand ein ähnliches Gerät auslesen will:

#!/bin/sh

datafile="/tmp/mbusdata"

DATA=$(timeout 2s /opt/libmbus/mbus-serial-request-data -b 2400 /dev/ttyUSB0 0 2> /dev/null)
[[ -n "$DATA" ]] && echo "$DATA" > $datafile

echo "cat /MBusData/*/Value/text()" | xmllint $datafile --shell 2> /dev/null | grep -v ">" | grep -v " ---"

Da die mbus Kommunikation bei meinem Gerät leider etwas unzuverlässig ist, werden die Daten in /tmp/mbusdata gecached und nur bei erfolgreicher Kommunikation aktualisiert.


Ich habe auch versucht, libmbus etwas allgemeiner als FHEM-Modul einzubinden, bin da aber mangels Perl-Kenntnissen nicht wirklich weiter gekommen. Wäre aber sicher eine interessante Ergänzung, falls sich jemand mit mehr Erfahrung daran versuchen möchte.

VG David

kvo1

Hallo David,

welchen Typ Wärmemengenzähler verwendest Du ? Ich such soetwas auch... ! Einige haben aber auch IrDA schnittstelle!

gruss
kvo1
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

daubsi

Hallo David,

könntest Du mal bitte das rohe XML File hier posten, welches mbus-serial-request-data zurückliefert? Ich habe heute meinen Zähler (Landis & Gyr) auch via MBUS angebunden und kann ihn nun auslesen und möchte Dein Script entsprechend adaptieren.

Danke!

VG
Markus