6 Min. Lesezeit

Homematic CCU3 × Apple HomeKit – Praxisleitfaden

Homematic CCU3 mit Apple HomeKit verbinden: Homebridge, Home Assistant und HmIPW-Wired in der Praxis – inkl. Rolläden, Thermostate und Stolperfallen.

Homematic ist eines der verbreitetsten Smarthome-Systeme in Deutschland – aber Apple HomeKit spricht es von Haus aus nicht. Wer seine CCU3-Zentrale mit der Apple Home App verbinden will, steht vor einer Reihe von Entscheidungen und Stolperfallen. Dieser Artikel dokumentiert den kompletten Weg: von der ersten Idee über Homebridge bis zum finalen Setup mit Home Assistant.

Ausgangslage

Das Kundenprojekt umfasst ein umfangreiches HmIP-Wired-Setup mit einer CCU3-Zentrale:

  • ~10 Heizkörperthermostate (HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-B)
  • ~10 Raumthermostate (HmIP-WTH, HmIP-WTH-1, HmIP-WTH-2)
  • 3 Jalousie-Aktoren mit 9 Rolläden (HmIPW-DRBL4)
  • 12 Fensterkontakte (HmIP-SWDM, HmIP-SWDM-2)
  • 8 Wassermelder (HmIP-SWD)
  • Lichtschalter, Dimmer, Markise, Alarmsirene, Wetterstation
  • Bus-Aktoren im Schaltschrank (HmIPW-DRS8, HmIPW-DRI16)

Das Ziel: Alle relevanten Geräte in Apple Home sichtbar und steuerbar machen.

Phase 1: Homebridge aufsetzen

Hardware-Vorbereitung

Der Kunde hatte eine CCU3 und einen separaten Raspberry Pi (Debian 13 Trixie, aarch64). Erster Stolperstein: Der Pi war per Ethernet-Kabel direkt am Mac angeschlossen und hatte die IP 169.254.10.3 – ein isoliertes Punkt-zu-Punkt-Netz. Die CCU3 saß im WLAN unter 192.168.178.50.

Lösung: Pi per WLAN ins Heimnetz einbinden:

sudo nmcli device wifi connect "WLAN_NAME" password "PASSWORT"

Danach hatte der Pi die IP 192.168.178.80 und konnte die CCU3 erreichen.

XML-API auf der CCU3

Das Homebridge-Plugin homebridge-homematic kommuniziert über die XML-API mit der CCU3. Installation als Addon über die CCU3-Zusatzsoftware-Verwaltung.

Erste Hürde: <not_authenticated/> bei jedem API-Call – obwohl die Authentifizierung deaktiviert war. Die Lösung lag in der CCU3-internen Firewall: Die Script-API musste auf “Vollzugriff” stehen.

Homebridge + Plugin

sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x
sudo hb-service install --user homebridge

Das Homebridge-UI ist danach unter http://<pi-ip>:8581 erreichbar. Plugin homebridge-homematic installieren und konfigurieren:

{
    "name": "HomeMatic CCU",
    "ccu_ip": "192.168.178.50",
    "subsection": "Homekit",
    "enable_hmip": true,
    "enable_wired": true,
    "platform": "HomeMatic"
}

Phase 2: Das 149-Geräte-Limit

Das Problem

HomeKit erlaubt maximal 149 Accessories pro Bridge. Das Plugin importierte alle CCU3-Kanäle ungefiltert – inklusive 50 virtueller HM-RCV-50-Kanäle und hunderten unbenutzter Bus-Aktor-Kanäle. Ergebnis:

Error: Cannot Bridge more than 149 Accessories

Die Lösung: CCU3-Gewerk als Filter

Das Plugin nutzt den Parameter subsection, der einem CCU3-Gewerk entspricht. Nur Geräte/Kanäle in diesem Gewerk werden nach HomeKit exportiert.

Gewerk “Homekit” auf der CCU3 angelegt mit gezielter Kanalauswahl:

Gerätetyp Welchen Kanal Warum
Lichtschalter (HmIP-BSM) nur :4 Schaltaktor – schaltet tatsächlich
Dimmer (HmIP-BDT) nur :4 Dimmaktor
Rolladen (HmIPW-DRBL4) nur :2/:6/:10/:14 Rollladenaktor pro Motor
Thermostate nur :1 Sender-Kanal
Fensterkontakte nur :1 Sensor-Kanal
Wassermelder nur :1 Sensor-Kanal

Wichtig: Bei HmIP-BSM-Geräten gibt es pro Aktor 9+ Kanäle (Taster, Status, Wochenprogramm, virtuelle Kanäle). Nur Kanal :4 ist der eigentliche Schaltaktor – alle anderen erzeugen nur Duplikate in HomeKit.

Phase 3: HmIPW-Wired-Rolläden – Die große Hürde

Das Problem

Das Plugin homebridge-homematic kannte den Gerätetyp HmIPW-DRBL4 (Wired Jalousie-Aktor) nicht:

[ServiceClassLoader] There is no service for HmIPW-DRBL4:BLIND_VIRTUAL_RECEIVER
[ServiceClassLoader] There is no service for HmIPW-DRBL4:BLIND_TRANSMITTER

Versuch 1: channel_config.json patchen

Die Service-Zuordnung liegt in der Datei channel_config.json des Plugins. Per Python-Script neue Einträge hinzugefügt:

import json
f = 'channel_config.json'
d = json.load(open(f))
d['channelconfig'].append({
    'type': 'HmIPW-DRBL4:BLIND_VIRTUAL_RECEIVER',
    'service': 'HomeMaticHomeKitBlindServiceIP'
})
d['channelconfig'].append({
    'type': 'HmIPW-DRBL4:BLIND_TRANSMITTER',
    'service': 'HomeMaticHomeKitBlindServiceIP'
})
json.dump(d, open(f, 'w'), indent=4)

Ergebnis: Die Fehlermeldungen verschwanden, die Rolläden tauchten in HomeKit auf – aber sie reagierten nicht auf Befehle. Der Grund: HomeMaticHomeKitBlindServiceIP ist für HmIP-Funk-Geräte geschrieben und nutzt andere Datenpunkte als die Wired-Variante.

Versuch 2: Alternative Plugins

  • homebridge-homematic-asaw (v0.2.234): Aktiv gepflegter Fork – aber komplett dysfunktional. Alle Handler antworteten nicht (“didn’t respond at all”).
  • homebridge-ccu (hobbyquaker): In der Plugin-Suche nicht verfügbar.

Versuch 3: Systemvariablen-Workaround

Idee: CCU3-Systemvariablen als Proxy zwischen HomeKit und Rollladenaktor. Variable ändert sich → CCU3-Programm fährt den Rolladen.

Verworfen – zu umständlich, fehleranfällig und schlecht wartbar.

Phase 4: Home Assistant – Die Lösung

Warum Home Assistant?

  • Native HmIPW-Wired-Unterstützung über die Integration “Homematic(IP) Local”
  • Eingebaute HomeKit-Bridge – ersetzt Homebridge komplett
  • Automationen ohne Apple Home Hub möglich
  • Alle Gerätetypen werden korrekt erkannt und gesteuert

Installation per Docker

Der Raspberry Pi behält sein Debian – Home Assistant läuft als Container:

sudo apt install -y docker.io
sudo docker run -d \
  --name homeassistant \
  --restart=unless-stopped \
  --network=host \
  -v /opt/homeassistant:/config \
  --env TZ=Europe/Berlin \
  ghcr.io/home-assistant/home-assistant:stable

Nach 2 Minuten erreichbar unter http://<pi-ip>:8123.

HACS + Homematic(IP) Local

Die Standard-Homematic-Integration in Home Assistant übernahm keine Gerätenamen von der CCU3 – nur Seriennummern. Die Lösung: HACS (Home Assistant Community Store) mit dem Plugin “Homematic(IP) Local”.

# HACS installieren
sudo docker exec -it homeassistant bash -c \
  "wget -O - https://get.hacs.xyz | bash -"
sudo docker restart homeassistant

Nach der Installation über die UI:

  1. HACS → Integrationen → “Homematic(IP) Local” herunterladen
  2. Einstellungen → Geräte & Dienste → Integration hinzufügen
  3. CCU-Adresse 192.168.178.50 + Admin-Zugangsdaten eingeben

Ergebnis: 76 Geräte mit korrekten CCU3-Namen.

HomeKit Bridge

Home Assistant hat eine eingebaute HomeKit-Bridge-Integration:

  1. Einstellungen → Geräte & Dienste → Integration hinzufügen → “HomeKit Bridge”
  2. Domains auswählen: cover, climate, light, switch, binary_sensor
  3. QR-Code mit iPhone scannen

Alle Geräte erscheinen in Apple Home – inklusive der HmIPW-DRBL4-Rolläden, die mit Homebridge nie funktionierten.

Ergebnis

┌─────────────────────────────────────────────────────────────┐
│                    Finales Setup                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   iPhone / Apple Home                                       │
│        │                                                    │
│        ▼                                                    │
│   ┌──────────────────┐                                      │
│   │  HomeKit Bridge   │ (Home Assistant Integration)        │
│   └────────┬─────────┘                                      │
│            │                                                │
│            ▼                                                │
│   ┌──────────────────┐                                      │
│   │  Home Assistant   │ Docker auf Raspberry Pi             │
│   │  + HACS           │                                     │
│   │  + HomematicIP    │                                     │
│   │    Local          │                                     │
│   └────────┬─────────┘                                      │
│            │ XML-RPC                                        │
│            ▼                                                │
│   ┌──────────────────┐                                      │
│   │  Homematic CCU3   │ 192.168.178.50                       │
│   │  + XML-API        │                                     │
│   └────────┬─────────┘                                      │
│            │ HmIP-RF / HmIPW-Bus                            │
│            ▼                                                │
│   ┌──────────────────────────────────────────────────────┐  │
│   │  Geräte: Rolläden, Thermostate, Licht, Sensoren     │  │
│   │  HmIPW-DRBL4, HmIP-eTRV, HmIP-BSM, HmIP-SWDM ...  │  │
│   └──────────────────────────────────────────────────────┘  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Was funktioniert

Gerätetyp HomeKit-Funktion
HmIPW-DRBL4 Rolläden Position 0-100%, auf/zu
HmIP-eTRV Thermostate Soll-Temperatur, Ist-Temperatur
HmIP-BSM Lichtschalter Ein/Aus, Stromverbrauch
HmIP-BDT Dimmer Ein/Aus, Helligkeit
HmIP-SWDM Fensterkontakte Offen/Geschlossen
HmIP-SWD Wassermelder Leckage-Erkennung
HmIP-FROLL Markise Position
HMIP-SWDO Türkontakte Offen/Geschlossen

Lessons Learned

  1. Homebridge funktioniert gut für HmIP-RF-Geräte (Funk). Für HmIPW-Wired fehlt die Unterstützung bei allen getesteten Plugins.

  2. Das 149-Geräte-Limit in HomeKit ist real. Bei umfangreichen Installationen muss gefiltert werden – am besten über ein dediziertes CCU3-Gewerk.

  3. Nicht jeder Kanal gehört in HomeKit. Ein HmIP-BSM hat 9+ Kanäle – nur Kanal :4 (Schaltaktor) ist relevant. Alles andere erzeugt Duplikate und “keine Antwort”-Geräte.

  4. Home Assistant + Homematic(IP) Local ist die zuverlässigste Bridge für gemischte HmIP/HmIPW-Setups. Docker-Installation auf einem bestehenden Pi ist in 30 Minuten erledigt.

  5. Automationen brauchen einen Home Hub (HomePod, Apple TV) in Apple Home. Home Assistant kann dies teilweise kompensieren, da es eigene Automationen unabhängig von Apple ausführt.

  6. Direktverknüpfungen auf der CCU3 nicht anfassen. Die funktionieren ohne Zentrale und sind die Lebensversicherung des Systems. HomeKit/Home Assistant ergänzt – ersetzt nicht.