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
- Starte PiCtory.
- 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 :
|
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 |
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).