M-Bus Gateway
← Tilbage til blog
· wM-Bus· fejlfinding· signal· RSSI· kryptering· driver· wmbusmeters· gateway· tekniker

wM-Bus fejlfinding — ingen signal, krypteret og forkert driver

Systematisk fejlfinding ved wM-Bus reception: ingen telegrammer, krypterede frames, forkert mode, driver-fejl, RSSI-problemer og løsninger trin for trin.

Af M-Bus Gateway

wM-Bus-reception fejler typisk af ét af fem årsager: forkert mode, manglende AES-nøgle, ringe signal, forkert driver eller hardware-problem. Her er den systematiske fejlfindingsguide.


Trin 1: Verificer at gateway modtager noget

# Kør wmbusmeters direkte og kig om der overhovedet modtages:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | head -50

# Forventede output (OK):
# 2026-05-23T10:15:32.123Z (12345678) T1 rssi=-78
# 2026-05-23T10:15:33.456Z (87654321) C1 rssi=-91

# Intet output → Gå til Hardware-tjek
# Output men ingen kendte målere → Gå til Trin 2

Hardware-tjek (USB-dongle)

# Verificer at dongle er registreret:
lsusb | grep "Würth\|WEH\|10C4\|1A86"
# Forventet: "Silicon Labs CP2104 USB to UART"

# Verificer symlink:
ls -la /dev/wmbus
# Skal vise: /dev/wmbus -> /dev/ttyUSB0

# Mangler symlink? Tjek udev-regel:
cat /etc/udev/rules.d/99-wmbus.rules
# Forventet:
# SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="wmbus"

# Genindlæs udev-regler:
udevadm control --reload-rules && udevadm trigger

# Tjek at mbus-bruger er i dialout-gruppen:
groups mbus | grep dialout

Trin 2: Identificer mode (C1 vs T1)

Mange målere sender kun på ét mode. Prøv begge:

# Test C1:
timeout 30 wmbusmeters --listento=c1 /dev/wmbus NOKEY 2>&1
echo "C1 telegrams: $(timeout 30 wmbusmeters --listento=c1 /dev/wmbus NOKEY 2>&1 | wc -l)"

# Test T1:
timeout 30 wmbusmeters --listento=t1 /dev/wmbus NOKEY 2>&1
echo "T1 telegrams: $(timeout 30 wmbusmeters --listento=t1 /dev/wmbus NOKEY 2>&1 | wc -l)"

# Typiske resultater:
# Engelmann SensoStar: Kun C1
# Techem HCA type 5/6: Kun T1
# Kamstrup: C1 (primær) + T1 (backup)
# Danfoss Ally: T1

Trin 3: AES-krypterede telegrammer

# Identificer krypterede frames (NOKEY viser "not decryptable"):
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep -i "encrypt\|aes\|not decrypt"

# Forventet output ved krypteret måler:
# {"media":"heat_cost_allocator","meter":"unknown","id":"12345678",
#  "status":"not decryptable","..."}

# Løsning 1: Tilføj AES-nøgle direkte i test:
wmbusmeters --listento=c1 /dev/wmbus 12345678 MANUFACTURER_KEY 2>&1
# → AES-nøglen er 32 hex-tegn (16 bytes)

# Løsning 2: Konfigurationsfil med nøgle:
cat > /etc/wmbusmeters.d/hca_lej3.conf << EOF
name=lej3_stue
type=sensostar
id=12345678
key=A1B2C3D4E5F6789012345678ABCDEF01
EOF

Hent AES-nøgle: Se AES-nøgle guide.


Trin 4: Forkert driver (fabrikat ukendt)

# Se hvad wmbusmeters genkender:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep '"meter"'

# Ukendt fabrikat:
# {"meter":"unknown","id":"AABBCCDD","mfct":"XYZ",...}

# Find FAB ID:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep '"mfct"'
# → "mfct":"TCH" = Techem
# → "mfct":"KAM" = Kamstrup
# → "mfct":"ELS" = Elster
# → "mfct":"APT" = Brunata/Apator

# Se liste over alle drivers:
wmbusmeters --listmeters | grep -i "hca\|heat_cost"

Driver-tabel for HCA:

FAB IDFabrikatDriver
TCHTechemteca (type 5/6) eller techem_hca_typ8 (type 8)
APTBrunata/Apatorapator162
ENGEngelmannsensostar
DANDanfossdanfoss_ally
QDSQundisq_caloric
SONSontexsupercom_587
HIKHourlyauto

Trin 5: RSSI-problemer

# Se RSSI pr. måler:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep -o '"rssi_dbm":[^,}]*'

# Typiske værdier:
# -60 til -80 dBm: Fremragende
# -80 til -95 dBm: God
# -95 til -105 dBm: Marginal — overvej repeater
# < -105 dBm: Dårlig — måler ses sporadisk eller slet ikke

Løsninger ved dårligt signal:

ProblemLøsning
Måler bag metalskabFlyt gateway 1 etage op
Betonvæg (> 30 cm)Installer repeater halvvejs
Lang afstand (> 20 m)wM-Bus repeater (OMS Annex B)
RF-interferensFlyt væk fra WiFi-router / andre 868 MHz enheder

Trin 6: Wmbusmeters konfiguration og log

# Kør med verbose logging:
wmbusmeters --debug --listento=c1 /dev/wmbus NOKEY 2>&1 | head -100

# Typiske fejl i log:
# "Could not open /dev/wmbus: Permission denied"
# → Bruger ikke i dialout-gruppen: usermod -aG dialout mbus

# "Failed to set baud rate"
# → Forkert USB-dongle eller kabel-problem

# "Unexpected message format"
# → Proprietær protokol (ikke OMS) — kontakt fabrikant

Trin 7: Systematisk test-script

#!/bin/bash
# /opt/mbus/test_wmbus.sh — kør som mbus-bruger

echo "=== wM-Bus Diagnostik ==="
echo "1. Hardware:"
lsusb | grep -i "10c4\|1a86\|wmbus" || echo "FEJL: USB-dongle ikke fundet"
ls /dev/wmbus 2>/dev/null || echo "FEJL: /dev/wmbus mangler"

echo "2. C1-scan (30 sek):"
C1_COUNT=$(timeout 30 wmbusmeters --listento=c1 /dev/wmbus NOKEY 2>/dev/null | wc -l)
echo "   C1-telegrammer modtaget: $C1_COUNT"

echo "3. T1-scan (30 sek):"
T1_COUNT=$(timeout 30 wmbusmeters --listento=t1 /dev/wmbus NOKEY 2>/dev/null | wc -l)
echo "   T1-telegrammer modtaget: $T1_COUNT"

echo "4. Krypterede:"
ENCRYPTED=$(timeout 30 wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>/dev/null | grep -c "not decrypt")
echo "   Krypterede målere (mangler AES-nøgle): $ENCRYPTED"

echo "=== Klar ==="

Konklusion

wM-Bus-fejlfinding er systematisk: hardware → mode → AES → driver → RSSI. De hyppigste årsager er forkert mode (C1 vs T1) og manglende AES-nøgle til krypterede HCA'er. Platformen viser i realtid hvilke målere der er set men ikke dekrypteret — og giver besked hvis dækning falder under 80%.

Se RSSI guide eller wmbusmeters installationsguide.