M-Bus Gateway
← Tilbage til blog
· home-assistant· mqtt· smart-home· wmbus· iot· realtid· integration· teknisk

Forbrugsdata i Home Assistant — wM-Bus og MQTT-integration

Integrer automatiske aflæsninger fra wM-Bus forbrugsmålere i Home Assistant via MQTT. Realtidsdata på el, vand og varme direkte i dit smarthome-dashboard.

Af M-Bus Gateway

Har du wM-Bus forbrugsmålere (vand, varme, HCA) i din ejendom, kan du hente realtidsdata direkte ind i Home Assistant eller andre smarthome-platforme via MQTT. Her er en teknisk guide.


Arkitekturen

[wM-Bus målere 868 MHz]
        ↓ C1/T1 telegram hvert 4-16 sek
[wM-Bus gateway (Raspberry Pi)]
        ↓ MQTT publish til broker
[Mosquitto MQTT broker]
        ↓ Subscribe
[Home Assistant MQTT integration]
        ↓
[Dashboards, automations, alerts]

wM-Bus gateway sender målernes aflæsninger til en MQTT-broker. Home Assistant abonnerer på disse topics og kan behandle data i realtid.


MQTT topic-struktur

Aflæsninger publiseres på:

meters/{gateway_id}/data       ← Daglig payload (MessagePack+zlib)
meters/{gateway_id}/status     ← Heartbeat hvert 5. min (JSON)
meters/{gateway_id}/alarm      ← Alarm JSON (lækage, offline, osv.)

For realtidsbrug er det dog muligt at konfigurere gateway til at publisere individuelle målertelegrams:

meters/{gateway_id}/readings/{meter_id}

Home Assistant MQTT-konfiguration

1. Tilslut MQTT-broker i Home Assistant

I Home Assistant configuration.yaml:

mqtt:
  broker: 192.168.1.89   # Gateway IP (eller ekstern broker)
  port: 1883             # Dev: 1883, Prod: 8883 (TLS)
  username: ha_reader
  password: !secret mqtt_password

For produktion med TLS:

mqtt:
  broker: mbus-gateway.example.com
  port: 8883
  tls_insecure: false
  certificate: /config/ssl/ca.crt
  client_key: /config/ssl/client.key
  client_cert: /config/ssl/client.crt

2. Sensor-definition pr. måler

# sensors.yaml
- platform: mqtt
  name: "Vandmåler lejl. 1"
  state_topic: "meters/GW-0001/readings/12345678"
  value_template: "{{ value_json.volume | round(3) }}"
  unit_of_measurement: "m³"
  device_class: water
  state_class: total_increasing

- platform: mqtt
  name: "Varmemåler lejl. 1"
  state_topic: "meters/GW-0001/readings/87654321"
  value_template: "{{ value_json.energy | round(1) }}"
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing

3. Template sensor til dagforbrug

- platform: statistics
  name: "Vandmåler lejl. 1 — dagforbrug"
  entity_id: sensor.vandmaaler_lejl_1
  state_characteristic: change
  max_age:
    hours: 24
  sampling_size: 1000

Webhook-integration (alternativ)

Platformen understøtter også webhook-push til Home Assistant:

  1. Opret en webhook-URL i Home Assistant (/api/webhook/<id>)
  2. Konfigurer webhook i platform-portalen under API-nøgler → Webhooks
  3. Vælg event-typer: reading.new, alarm.created, meter.offline
{
  "event": "reading.new",
  "meter_id": "12345678",
  "type": "water",
  "volume": 123.456,
  "unit": "m3",
  "timestamp": "2026-05-23T06:00:00Z"
}

REST API-polling (simpelt alternativ)

Ønsker du ikke real-time, kan Home Assistant polling via REST API:

- platform: rest
  name: "Vandmåler lejl. 1 (API)"
  resource: https://api.mbus-gateway.dk/api/v1/meters/12345678/latest
  headers:
    Authorization: Bearer YOUR_API_KEY
  value_template: "{{ value_json.volume }}"
  unit_of_measurement: "m³"
  scan_interval: 3600  # Polling hvert 60 min

Automations og alerts i Home Assistant

Lækage-alarm

automation:
  - alias: Vandlækage alarm
    trigger:
      platform: mqtt
      topic: "meters/GW-0001/alarm"
    condition:
      condition: template
      value_template: "{{ trigger.payload_json.type == 'leak' }}"
    action:
      - service: notify.mobile_app_min_telefon
        data:
          title: "Vandlækage detekteret!"
          message: "Måler {{ trigger.payload_json.meter_id }} — adresse {{ trigger.payload_json.address }}"

Unormalt forbrug

automation:
  - alias: Unormalt høj vandforbrug
    trigger:
      platform: template
      value_template: >
        {{ states('sensor.vandmaaler_lejl_1_dagforbrug') | float > 500 }}
    action:
      - service: notify.persistent_notification
        data:
          title: "Unormalt vandforbrug"
          message: "Lejlighed 1 brugte {{ states('sensor.vandmaaler_lejl_1_dagforbrug') }} liter i dag"

Dashboard: Energi-oversigt

Med Home Assistants Energy Dashboard kan du tilføje:

  • Vandmålere som "Individual water devices"
  • Varmemålere som "Individual home heating"
  • Elmålere (hvis installeret)

Dette giver en komplet energioversigt med dag/uge/måned historik.


Sikkerhed: Begræns MQTT-adgang

For multi-lejligheds ejendomme: Giv Home Assistant kun adgang til specifikke topics via ACL:

# Mosquitto ACL
user ha_reader
topic read meters/GW-0001/#

Platformen bruger per-gateway ACL isolation — en gateway kan kun læse/skrive sine egne topics.


Andre smarthome-platforme

Denne MQTT-integration virker også med:

  • Node-RED: Wire MQTT-node → function node → dashboard
  • Grafana + InfluxDB: Skriv til InfluxDB fra MQTT, visualiser i Grafana
  • openHAB: MQTT Binding med Thing-definitioner
  • Domoticz: MQTT plugin
  • n8n/Zapier: Via webhook-integration

Begrænsninger

  • Gateway sender dagligt kl. 06:00 (konfigurerbart) — ikke kontinuerlig strøm
  • Realtids MQTT pr. telegram kræver tillægskonfiguration på gateway
  • AES-nøgler kræves for krypterede målere — gateway dekrypterer lokalt

Konklusion

wM-Bus forbrugsmålere kan integreres direkte i Home Assistant og andre smarthome-platforme via MQTT. Kombiner lækage-alarmer, forbrugshistorik og automatiseringer for fuld kontrol.

Se REST API-dokumentation eller læs om MQTT-integration for teknikere.