MQTT Parsers
To efficiently handle and process data from wireless M-Bus and Metra proprietary meters, we have developed two tools:
- MQTT Parser Microservice – A Docker-based service that subscribes to raw meter data from an MQTT broker, processes and decrypts messages, and publishes the parsed data for further use.
- Node-RED MQTT Parser Flow – A low-code visual solution that integrates directly with MQTT, allowing users to parse and handle messages efficiently using Node-RED.
MQTT Parser Microservice
The MQTT Parser microservice is a Docker-based application designed to parse wireless M-Bus and Metra proprietary meter frames published to an MQTT broker. This service subscribes to acrios/<IMSI>/meter/<meter-id>/raw, processes the data, and publishes the parsed results to acrios/<IMSI>/meter/<meter-id>/parsed.
- Containerized: Runs in Docker for easy deployment and environment consistency.
- Configurable: Environment variables allow easy setup of broker details, authentication, and parser selection.
- Secure: Supports TLS connections via MQTT.
- Automated: Parses incoming messages from ACR-CV101NI-W-D devices.
- Encrypted: Supports message decryption using AES keys.
Importing AES Keys
The MQTT Parser microservice can decrypt messages using AES keys. To import an AES key, create a file named meter_data.csv in the import folder with the following format:
meter_id,driver,aes_key
55124572,minomess,A81A94AB882B83715842AE7AA0B6C9E2
55124573,minomess,A81A94AB882B83715842AE7AA0B6C9E3
55124574,minomess,A81A94AB882B83715842AE7AA0B6C9E4
55124575,minomess,A81A94AB882B83715842AE7AA0B6C9E5
| Column Name | Description | Example |
|---|---|---|
| meter_id | Meter ID | 55124572 |
| driver | Meter driver or auto for automatic detection | minomess |
| aes_key | AES key | A81A94AB882B83715842AE7AA0B6C9E2 |
List of Supported Drivers
| Driver | Meter Type |
|---|---|
auto | AutoMeter |
abbb23 | ElectricityMeter |
aerius | GasMeter |
amiplus | ElectricityMeter |
apator08 | WaterMeter |
apator162 | WaterMeter |
apator172 | WaterMeter |
apatoreitn | HeatCostAllocationMeter |
apatorna1 | WaterMeter |
aventieshca | HeatCostAllocationMeter |
aventieswm | WaterMeter |
bfw240radio | HeatCostAllocationMeter |
c5isf | HeatMeter |
cma12w | TempHygroMeter |
compact5 | WaterMeter |
dme_07 | WaterMeter |
ebzwmbe | ElectricityMeter |
ehzp | ElectricityMeter |
ei6500 | SmokeDetector |
elf | HeatMeter |
em24 | ElectricityMeter |
emerlin868 | WaterMeter |
encal | HeatMeter |
engelmann-faw | HeatMeter |
esyswm | ElectricityMeter |
eurisii | HeatCostAllocationMeter |
ev200 | WaterMeter |
evo868 | WaterMeter |
fhkvdataiii | HeatCostAllocationMeter |
fhkvdataiv | HeatCostAllocationMeter |
flowiq2200 | WaterMeter |
gransystems | ElectricityMeter |
gwfwater | WaterMeter |
hcae2 | HeatCostAllocationMeter |
hydrocalm3 | HeatMeter |
hydroclima | HeatCostAllocationMeter |
hydrodigit | WaterMeter |
hydrus | WaterMeter |
iem3000 | ElectricityMeter |
itron | WaterMeter |
iwmtx5 | WaterMeter |
izar | WaterMeter |
kamheat | HeatMeter |
lansendw | DoorWindowDetector |
lansenpu | PulseCounter |
lansenrp | Repeater |
lansensm | SmokeDetector |
lansenth | TempHygroMeter |
lse_07_17 | WaterMeter |
lse_08 | HeatCostAllocationMeter |
microclima | HeatMeter |
minomess | WaterMeter |
mkradio3 | WaterMeter |
mkradio4 | WaterMeter |
mkradio4a | WaterMeter |
multical21 | WaterMeter |
munia | TempHygroMeter |
nemo | ElectricityMeter |
omnipower | ElectricityMeter |
piigth | TempHygroMeter |
pollucomf | HeatMeter |
q400 | WaterMeter |
qcaloric | HeatCostAllocationMeter |
qheat | HeatMeter |
qheat_55_us | HeatMeter |
qsmoke | SmokeDetector |
qualcosonic | HeatCoolingMeter |
qwater | WaterMeter |
rfmamb | TempHygroMeter |
rfmtx1 | WaterMeter |
sharky | HeatMeter |
sharky774 | HeatMeter |
sontex868 | HeatCostAllocationMeter |
supercom587 | WaterMeter |
topaseskr | WaterMeter |
tsd2 | SmokeDetector |
ultraheat | HeatMeter |
ultrimis | WaterMeter |
unismart | GasMeter |
vario411 | HeatMeter |
vario451 | WaterMeter |
vario451mid | HeatMeter |
waterstarm | WaterMeter |
watertech | WaterMeter |
weh_07 | WaterMeter |
wme5 | HeatMeter |
aquastream | WaterMeter builtin |
elf2 | HeatMeter builtin |
elster | GasMeter builtin |
eltako | ElectricityMeter builtin |
ime | ElectricityMeter builtin |
iperl | WaterMeter builtin |
istaheat | HeatMeter builtin |
itronheat | HeatMeter builtin |
kampress | PressureSensor builtin |
relhca | HeatCostAllocationMeter builtin |
sensostar | HeatMeter builtin |
supercal | HeatMeter builtin |
werhlemodwm | WaterMeter builtin |
unknown | UnknownMeter |
Automatic driver detection may misidentify some meters.
When data on the MQTT broker changes, the service scans the import folder for an import file. If found, it saves the data to the database, appends timestamps to each record, and renames the file to indicate when the import occurred.