M-Bus Gateway
← Tilbage til blog
· bygningsautomation· BMS· Modbus· BACnet· KNX· MQTT· IoT· integration· smart building

Bygningsautomation og IoT-integration — wM-Bus i BMS-systemer

Integration af wM-Bus fjernaflæsning med bygningsautomationssystemer (BMS): Modbus, BACnet, KNX, MQTT-gateway og hvad der giver mest mening for udlejningsejendomme.

Af M-Bus Gateway

Større ejendomme har ofte bygningsautomationssystemer (BMS) der styrer HVAC, belysning og adgangskontrol. Her er hvordan wM-Bus fjernaflæsning passer ind.


BMS-landskabet: Hvad bruges i Danmark

Protokoller i dansk erhvervs- og boligejendomme:

BACnet/IP (mest udbredt erhverv):
  → Bruges af: Schneider Electric EcoStruxure, Siemens Desigo, Honeywell
  → Anvendelse: HVAC-anlæg, chillers, ventilationsaggregater
  → Rækkevidde: IP-baseret (ubegrænset)

Modbus RTU/TCP (industri og tekniske anlæg):
  → Bruges af: Frekvensomformere, varmepumper, UPS-anlæg
  → Enkel protokol, meget udbredt i ældre anlæg
  → RS-485 (RTU) eller TCP (Modbus/TCP)

KNX (boligautomation):
  → Bruges af: Lys, persienner, varme i lejligheder
  → KNX er bus-standard (twisted pair kabel)
  → Dyr installation, men meget robust

Proprietære (DALI, LON, m.fl.):
  → Belysningsstyring (DALI)
  → Sjældnere i nybyggeri (udskiftes med KNX/BACnet)

wM-Bus (forbrugsmåling):
  → Radiosignal 868 MHz
  → Specifikt til forbrugsmålere (varme, vand, el)
  → IKKE designet til real-time styring

wM-Bus' rolle i BMS

wM-Bus er en data-kilde — ikke et styringssystem:

Hvad wM-Bus ER:
✅ Aflæsning af forbrugsmålere (HCA, varmemåler, vandmåler)
✅ Batteridrevne målere der sender 1x/dag (C1) eller push (T1)
✅ Typisk 15-30 minutters interval for T1-målere
✅ Krypteret, OMS-standardiseret

Hvad wM-Bus IKKE er:
✗ Real-time datastrøm (ikke egnet til regelbaseret HVAC-styring)
✗ Bidirektionel kommunikation (kun modtagelse i standard)
✗ Styreprotokol (ingen actuator-interface)
✗ Lavlatens (ikke egnet til lyskontrol, ventilatorstyring)

Konkret: wM-Bus er et aflæsningsnetværk — BACnet/Modbus er styresystemet

Integration: wM-Bus → MQTT → BMS

Den typiske integrationsvej i større ejendomme:

[wM-Bus målere] → [M-Bus Gateway (Pi)] → [MQTT broker]
                                              ↓
                              [MQTT-BMS Bridge (middleware)]
                                              ↓
                              [BACnet/IP eller Modbus/TCP]
                                              ↓
                              [BMS (Schneider/Siemens/etc.)]
# Simpel MQTT-til-Modbus bridge:
# server/src/integrations/bms_bridge.py

import paho.mqtt.client as mqtt
from pymodbus.server import StartTcpServer
from pymodbus.datastore import ModbusSequentialDataBlock, ModbusSlaveContext

# Modbus registers:
# 40001: HCA units (lejl. 1.tv)
# 40002: HCA units (lejl. 1.th)
# 40003-40010: Øvrige lejligheder
# 40011: Total ejendoms varmeforbrug kWh
# 40012: Gateway online status (1=OK, 0=offline)

class MBusModbusBridge:
    def __init__(self):
        self.store = ModbusSlaveContext(
            hr=ModbusSequentialDataBlock(40001, [0]*100)
        )

    def on_mqtt_message(self, client, userdata, msg):
        """Modtag wM-Bus data og opdatér Modbus registers."""
        import json
        data = json.loads(msg.payload)
        for reading in data.get("readings", []):
            register = self._get_register(reading["meter_id"])
            if register:
                self.store.setValues(3, register, [int(reading["value"])])

BACnet integration

# BACnet Analog Input pr. måler:
# (Kræver BACnet/IP library: bacpypes3)

from bacpypes3.local.analog import AnalogInputObject

class WMBusBACnetDevice:
    def __init__(self):
        self.analog_inputs = {}

    def create_point(self, meter_id: str, description: str):
        """Opret BACnet Analog Input pr. måler."""
        ai = AnalogInputObject(
            objectIdentifier=("analogInput", len(self.analog_inputs) + 1),
            objectName=f"wMBus_{meter_id}",
            description=description,
            units="noUnits",  # HCA units er dimensionsløse
            presentValue=0.0,
        )
        self.analog_inputs[meter_id] = ai
        return ai

    def update_from_mqtt(self, meter_id: str, value: float):
        if meter_id in self.analog_inputs:
            self.analog_inputs[meter_id].presentValue = value

Hvornår giver BMS-integration mening?

Relevant for:
✅ Erhvervsejendomme med eksisterende BMS
✅ Projekter med facility management systemer (CAFM/IWMS)
✅ Smart building projekter med energi-dashboard
✅ Ejendomme med HVAC-styring baseret på forbrugsdata

IKKE relevant for:
✗ Standard udlejningsejendomme (5-50 lejligheder)
✗ Private udlejere
✗ Ejendomme uden eksisterende BMS

For standard udlejningsejendomme:
→ M-Bus Gateway portal er tilstrækkeligt
→ CSV/API eksport dækker BI-behov
→ BMS-integration er over-engineering

REST API som BMS-alternativ

For de fleste er REST API den enkleste integration:

# GET /api/v1/readings/latest?property_id=EJD-001
# → Returnerer seneste aflæsning pr. måler i JSON

# GET /api/v1/dashboard?tenant_id=...
# → Returnerer aggregerede KPI'er

# Webhook: POST til din URL ved ny daglig batch:
# {
#   "event": "daily_batch_received",
#   "gateway_id": "GW-0001",
#   "timestamp": "2026-05-24T06:00:00Z",
#   "meter_count": 45,
#   "readings": [...]
# }

Dette er tilstrækkeligt for 95% af integrationsbehovene uden BMS-kompleksitet.


Konklusion

wM-Bus fjernaflæsning er en data-kilde, ikke et styresystem — det supplerer BMS frem for at erstatte det. For standard udlejningsejendomme er MQTT + REST API mere end tilstrækkeligt. Kun ved eksisterende BMS i erhvervsejendomme giver Modbus/BACnet-bridge mening. M-Bus Gateway platformen eksponerer data via REST API og webhooks der kan integreres i ethvert BMS.

Se API-katalog eller dataeksport guide.