Daten mit dem RevPi M-Bus auslesen

In diesem Tutorial zeigen wir Dir, wie Du mit unserem RevPi M-Bus Daten aus einem Heizkostenverteiler auslesen kannst.

Du kannst dieses Beispiel gerne gleich mitmachen. Dazu benötigst Du:

  • RevPi Connect
  • RevPi M-Bus
  • Antenne für RevPi M-Bus
  • M-Bus Slave *

*Wir verwenden hier einen Heizkostenverteiler. Wenn Du einen anderen Slave verwendest, musst Du die entsprechenden Arbeitsschritte gemäß den Angaben in der Bedienungsanleitung des Geräteherstellers anpassen.

Vorbereitung

  • Lade Dir unser Softwarepaket zu diesem Tutorial herunter.
  • Installiere einen FTP-Client auf Deinem PC (z. B. Filezilla).
  • Stelle sicher, dass sich Dein RevPi Connect in Deinem Netzwerk befindet.
  • Ermittle die IP-Adresse Deines RevPi Connect.
  • Notiere Dir ggf. die Anmeldedaten Deines RevPi Connect. (Der RevPi M-Bus verdeckt den Aufkleber mit dem Passwort, sobald er installiert ist.)

Aufbau

  • Verbinde den RevPi Connect und den RevPi M-Bus mithilfe der conBridge.
  • Schließe die Antenne an den Antennenanschluss des RevPi M-Bus an.
  • Verbinde Deinen RevPi Connect mit Deinem Netzwerk.
  • Installiere Deinen M-Bus Slave nach Angaben des Geräteherstellers.

Los geht`s:

  • Entpacke das Software-Paket.

Daten auf den RevPi Connect kopieren

  • Öffne den FTP-Client.
  • Gib folgende Parameter an, um eine Verbindung zu Deinem RevPi Connect herzustellen

Host

IP-Adresse Deines RevPi Connect

Username

Benutzername Deines RevPi Connect. Wenn Du diesen nicht verändert hast, ist der Benutzername „pi“.

Passwort

Passwort Deines RevPi Connect. Du findest es auf dem Aufkleber an der Seite Deines RevPi Connect.

Port

22 (Standardwert für SFTP)

  • Klicke auf „Quickconnect“.

  • Im Statusfenster siehst Du, ob Deine Verbindung hergestellt werden konnte, oder ob ein Fehler vorliegt.

  • Du hast jetzt Zugriff auf die lokalen Daten, die auf Deinem PC sind und auf die Daten Deines RevPi Connect.
  • Wähle den entpackten Ordner wMBus auf Deinem PC aus.
  • Ziehe den Ordner per Drag-and-Drop in den Ordner „pi“ auf Deinem RevPi Connect.

Geräte konfigurieren

Der RevPi Status öffnet sich.

  • Klicke auf den Start-Button hinter dem Eintrag „PiCtory“, um PiCtory zu öffnen.

PiCtory öffnet sich

  • Ziehe Deinen RevPi Connect per Drag-and-Drop auf das Configuration Board.
  • Ziehe Deinen RevPi M-Bus per Drag-and-Drop auf das Configuration Board und ordne es rechts neben dem RevPi Connect an.
  • Klicke auf „File>Safe as Start Config.”
  • Klicke auf “Tools>Reset Driver“.

Bibliothek installieren

  • Stelle jetzt einen Zugriff zur Shell her. Dazu kannst Du das Gerät headless betreiben oder Monitor, Maus und Tastatur direkt anschließen.
  • Melde Dich an.
  • Installiere die Bibliothek librxtx-java :

sudo apt-get install librxtx-java.

Script konfigurieren

Das Script ist für dieses Beispiel bereits vorkonfiguriert. Um es für Deinen Slave anzupassen, kannst Du das Kommandozeilenhilfsprogramm „wMBus.py“ verwenden. Es handelt sich hierbei um ein Python-Script, das die Konfigurationswerte als Argument übergibt.

Die Notation muss immer folgende Form haben:

pi@mycon $ ./wMBus.py <Konfigurationskommando> <Adresse>

Das folgende Beispiel liest den Übertragungsmodus (MBUS_MODE s. Tab. 1 und Tab. 2) des wM-Bus Moduls aus.

Sollen mehrere Konfiguratonsparameter aus dem Speicher ausgelesen werden, kann dies mit der folgenden Kommdozeile erfolgen:

pi@mycon $ for i in 03 05 12 19 1A 1B 1C 1D 1E 1F 10 30; do python ./wMBus.py 59 $i; done

Konfigurationskommandos

Auszug Konfigurationskommandos

Parameter

Kommando

Formel

Bemerkung

Speicherkonfiguration

4dh

Signalstärke

53h

P=-RSSI (dez) / 2 (dBm)

Rückgabewert ein Byte

Modultemperatur

55h

T=TEMP (dez) -128 (°C)

Rückgabewert ein Byte

Modulspannung

56h

V=VCC (dez) * 0.03 (V)

Rückgabewert ein Byte

Speicherabfrage

59h

 

Konfigurationsparameter wM-Bus Modul

Auszug MBUS3 Konfigurationsspeicher

Parameter

Beschreibung

Adresse

Argument

MBUS_MODE

Übertragungsmodus

03h

S2-Mode: 00h

T1-Mode: 01h

T2-Mode: 02h

S1-Mode: 03h

RSSI_MODE

05h

Inaktiv: 00h

Aktiv: 01h

NETWORK_ROLE

12h

Slave: 00h

Master: 01h

Repeater: 02h

M_ID1

Hersteller ID, 1. Byte

19h

00h-FFh

M_ID2

Hersteller ID, 2. Byte

1ah

00h-FFh

U_ID1

Modul ID, 1. Byte

1bh

00h-FFh

U_ID2

Modul ID, 2. Byte

1ch

00h-FFh

U_ID3

Modul ID, 3. Byte

1dh

00h-FFh

U_ID4

Modul ID, 4. Byte

1eh

00h-FFh

VER

Version

1fh

00h-FFh

DEV

Typ

20h

00h-FFh

UART_BAUD_RATE

Datenrate

30h

2400: 01h
4800: 02h
9600 03h
14400 04h
19200 05h
28800 06h
38400 07h
57600 08h

TERMINIERUNG

ffh

Tipp! Wenn Du das Kommando „jmbus-app.sh“ in die Kommandozeile eingibst, werden alle aktuell verfügbaren Argumente aufgelistet.

Script ausführen

Gib folgendes Kommando ein, um das mitgelieferte Script ausführbar zu machen:

wMBus/jmbus-3.3.0/jmbus-3.3.0/jmbus/run-scripts $ chmod 755 jmbus-app.sh

HINWEIS: Um unverschlüsselte Daten zu erhalten, benötigst Du den Key Deines M-Bus Slaves. Du musst das Kommando hier mit dem Key ergänzen:

/wMBus/jmbus-3.3.0/jmbus-3.3.0/jmbus/run-scripts $ ./jmbus-app.sh wmbus -cp „/dev/ttyConBridge“ -bd 19200 -t 2 -v -tr rc -wm T -key

Deine Rückgabewerte sollten so aussehen:

2020-11-04 08:48:26.354 ——- New Message ——-

Message Bytes: 7644C5252501107055087225011070C525550818006005F15022710A0D6044417FB62B1FCD93F3FD3C649B5705378306DC765FA3D3D22AA9AB4018212A00C026FA2AFDF11B8EF14496B814DE2D4DF7A4BC0B61B22FCDAD12E090DB23927C2B260208C139CE2878BDE654B9E65EBC6A9F2E72AACC45399727

Message was received with signal strength: -19dBm

Control Field: 0x44

Secondary Address -> manufacturer ID: INE, device ID: 70100125, device version: 85, device type: HEAT_COST_ALLOCATOR, as bytes: C525250110705508

Variable Data Response:

Secondary address: {manufacturer ID: INE, device ID: 70100125, device version: 85, device type: HEAT_COST_ALLOCATOR, as bytes: 25011070C5255508}

Short Header: {Access No.: 24, status: 0, encryption mode: AES_CBC_IV, number of encrypted blocks: 6}

DIB:0B, VIB:6E -> descr:HCA, function:INST_VAL, value:000000, unit:RESERVED

DIB:42, VIB:6E -> descr:HCA, function:INST_VAL, storage:1, value:0, unit:RESERVED

DIB:8201, VIB:6E -> descr:HCA, function:INST_VAL, storage:2, value:0, unit:RESERVED

DIB:C201, VIB:6E -> descr:HCA, function:INST_VAL, storage:3, value:0, unit:RESERVED

DIB:8202, VIB:6E -> descr:HCA, function:INST_VAL, storage:4, value:0, unit:RESERVED

DIB:C202, VIB:6E -> descr:HCA, function:INST_VAL, storage:5, value:0, unit:RESERVED

DIB:8203, VIB:6E -> descr:HCA, function:INST_VAL, storage:6, value:0, unit:RESERVED

DIB:C203, VIB:6E -> descr:HCA, function:INST_VAL, storage:7, value:0, unit:RESERVED

DIB:8204, VIB:6E -> descr:HCA, function:INST_VAL, storage:8, value:0, unit:RESERVED

DIB:C204, VIB:6E -> descr:HCA, function:INST_VAL, storage:9, value:0, unit:RESERVED

DIB:8205, VIB:6E -> descr:HCA, function:INST_VAL, storage:10, value:0, unit:RESERVED

DIB:C205, VIB:6E -> descr:HCA, function:INST_VAL, storage:11, value:0, unit:RESERVED

DIB:8206, VIB:6E -> descr:HCA, function:INST_VAL, storage:12, value:0, unit:RESERVED

DIB:C206, VIB:6E -> descr:HCA, function:INST_VAL, storage:13, value:0, unit:RESERVED

DIB:8207, VIB:6E -> descr:HCA, function:INST_VAL, storage:14, value:0, unit:RESERVED

DIB:C207, VIB:6E -> descr:HCA, function:INST_VAL, storage:15, value:0, unit:RESERVED

DIB:8208, VIB:6E -> descr:HCA, function:INST_VAL, storage:16, value:0, unit:RESERVED

DIB:C208, VIB:6E -> descr:HCA, function:INST_VAL, storage:17, value:0, unit:RESERVED

DIB:02, VIB:FD17 -> descr:ERROR_FLAGS, function:INST_VAL, value:0

Wenn Du den falschen Key oder keinen Key verwendest, erhältst Du verschlüsselte Daten:

2020-11-04 08:38:02.859 ——- New Message ——-

Message Bytes: 7644C5252501107055087225011070C5255508130060051F5CF0FDE1356B6A82D8708F378DF17D0D3B67D017FA14B863583CC899AA6CB751D992CBFE263841DEE1ED3B8A8C43D0953BA7461DFC3392450B1693DD8CE611BF7624DDB4AA37C2D75FDEE339B5E203BD194D6299AD85D4DDB67C8FB46773F827

Unable to fully decode received message:

Unable to decode encrypted payload because no key for the following secondary address was registered: manufacturer ID: INE, device ID: 70100125, device version: 85, device type: HEAT_COST_ALLOCATOR, as bytes: C525250110705508

Message was received with signal strength: -19dBm

Control Field: 0x44

Secondary Address -> manufacturer ID: INE, device ID: 70100125, device version: 85, device type: HEAT_COST_ALLOCATOR, as bytes: C525250110705508

Variable Data Response:

VariableDataResponse has not been decoded. Bytes:

7225011070C5255508130060051F5CF0FDE1356B6A82D8708F378DF17D0D3B67D017FA14B863583CC899AA6CB751D992CBFE263841DEE1ED3B8A8C43D0953BA7461DFC3392450B1693DD8CE611BF7624DDB4AA37C2D75FDEE339B5E203BD194D6299AD85D4DDB67C8FB46773F8

Tipp! Weitere Informationen findest Du im „jMBus User Guide“ (https://www.openmuc.org/m-bus/files/jmbus-doc.pdf).