Ziele und Hardware
Einer der maßgeblichen Gründe für mein Home-Automatisierungsprojekt waren die folgenden Anforderungen:
- Erkennen von offenen Terrassentüren und Fenstern
- Beim Verlassen der Wohnung eine Warnung auf das Telefon, dass Türen offen stehen.
Wahl der Türkontakte

Die anfänglichen Testinstallation von Kontakten auf der Innenseite der Türen (angeklebt) wurde direkt von der 'leitenden Ästhetikkommission' der Wohnung abgelehnt. Ging GAR nicht... :-). Deshalb habe ich die kleinsten verfügbaren Sensoren von XIAOMI angeschafft und innenliegend IM Türrahmen installiert. Alle anderen Kontakte (HomeMatic, enOcean, etc.) waren hierfür zu groß.
Verwendetet Türkontakte:
- Produkt: XIAOMI mi Aqara Tür- und Fenstersensor (neu)
- Preis: ca. 10€
- Batterie: CR1632
- Funkprotokoll: Zigbee
- Abmessungen:
- Magnet: 25,3 * 11 * 9+1 mm (B*T*H+Klebestreifen)
- Sensor: 41 * 22 * 11+1 mm (B*T*H+Klebestreifen)
Die Installation der Sensoren mit Bildern ist in diesem saparaten Artikel beschrieben.
Wahl der Funk-Schnittstelle

Ich möchte meine Home Automation weitgehend ohne Hersteller-Gateways und definitiv ohne Cloud-Componenten betreiben. Ziel war damit also, einen Zigbee Koordinator direkt an der Synology DS anzuschliessen und im Home-Assistant Docker zu nutzen. Dies funktioniert mit folgendem USB-Stick:
- Produkt: NORTEK HUSBZB-1
- Preis: ca 50€
- Schnittstelle: USB 2
- Funkprotokolle: Zigbee und Z-Wave
Installation des USB-Sticks an DSM und Docker wird hier beschrieben.
Konfiguration von ZigBee / ZHA
Die Erstinstallation erfolgte nach folgender Anleitung von Phil Hawthorne. Allerdings funktionierte die Referenzierung auf die im Docker benannte USB-Schnittstelle '/zigbeestick' ab HA v0.99 nicht mehr. Deshalb wird der Zigbee-Coordinator nun direkt mit /dev/ttyUSB1 angesprochen.
configuration.yaml
################################################################ ## Radio-Devices ################################################################ # Zigbee-Coordinator (NORTEK HUSBZB-1) zha: #usb_path: /zigbeestick #naming of USB device does not work anymore since v0.99 usb_path: /dev/ttyUSB1 database_path: /data/zigbee.db
Damit wird die Integration 'ZHA: /dev/ttyUSB1' in Home-Assistant aktiv. Der Zigbee Coordinator und alle verbundenen Geräte werden dort angezeigt. Verbinden neuer Geräte geht über den neuen Menüpunkt Einstellungen > ZHA > Add Devices. Beim Einbinden neuer Türsensoren muss man:
- Einstellungen > ZHA > Add Devices oder
Einstellungen > ZHA > Repeater auswählen > Geräte hinzufügen wählen - Sensor in ca. 5 cm Abstand zum Coordinator bringen
- Taste auf dem Sensor für 5 sec drücken
- Warten bis Sensor in Home Assistant vollständig eingerichtet wurde
- Sensor bei Bedarf benennen und einem Raum zuordnen
Konfiguration der Sensoren
Zusammenfassen der einzelnen Sensoren in Gruppen:
packages/doors_windows.yaml
group:
# 'group.all_doors' fasst den Status aller Türen zusammen.
# Ist ein Türesensor 'on'='Offen', dann wird die Gruppe 'on'.
all_doors:
name: alle Türen
icon: mdi:door
entities:
- binary_sensor.lumi_lumi_sensor_magnet_aq2_031b3225_1_6 #1
- binary_sensor.lumi_lumi_sensor_magnet_aq2_03139f7b_1_6 #2
- binary_sensor.lumi_lumi_sensor_magnet_aq2_9ac61c04_1_6 #3
[...]
all_windows:
name: alle Fenster
icon: mdi:window-closed
entities:
- binary_sensor.lumi_lumi_sensor_magnet_aq2_73c61c04_1_6 #12:
- binary_sensor.lumi_lumi_sensor_magnet_aq2_c2e41c04_1_6 #13:
Zuweisen der Geräteklasse bewirkt das passende Icon:
packages/doors_windows.yaml
homeassistant:
customize:
binary_sensor.lumi_lumi_sensor_magnet_aq2_031b3225_1_6:
friendly_name: Gästezimmer
device_class: door
[...]
binary_sensor.lumi_lumi_sensor_magnet_aq2_73c61c04_1_6:
friendly_name: Bad
device_class: window
Einrichten des Alarm
Für jeden Bereich (Seite in Lovelace) kann es bei mir Warnungen/Alarme geben. Für Türen und Fenster sind es 2 Warnstufen: offene Fenster (kann ok sein --> Warnung) und offene Türen (ist nicht ok --> Alarm).
packages/doors_windows.yaml
# value to remember if an alert is active
input_boolean:
open_backdoor_alert:
name: Balkontür ist offen #active warning: door is open
icon: mdi:alert-box-outline
open_window_alert:
name: Fenster ist offen #active warning: window is open
icon: mdi:alert-box-outline
Diese Alert-Variablen werden in den Automatisierungen gesetzt.
Automatisierung
Die ersten beiden Automatisierungen verschicken eine Notification auf das Telefon, wenn die letzte Person das Haus verlässt und Türen oder Fenster offen sind. Der Sensor sensor.home_status stellt die Info bereit, ob jemand zuhause ist und wird durch die 'presence detection' (todo: link) gesetzt.
packages/doors_windows.yaml
automation:
- alias: Notify all - Open Doors
trigger:
# niemand zuhause und mindestens eine Tür offen
platform: template
value_template: "{{ states.sensor.home_status.state in ['Away', 'Extended Away']
and is_state('group.all_doors', 'on') }}"
for:
seconds: 6
action:
- service: input_boolean.turn_on
entity_id: input_boolean.open_backdoor_alert
- service: notify.family_main_devices
data_template:
title: "Smart Home Alerts"
message: "Mindestens eine Balkontür ist offen."
data:
subtitle: "Türen offen!"
push:
badge: "{{states.sensor.count_notification_alerts.state|int}}"
- alias: Notify all - Open Windows
trigger:
# niemand zuhause und mindestens ein Fenster offen
platform: template
value_template: "{{ states.sensor.home_status.state in ['Away', 'Extended Away']
and is_state('group.all_windows', 'on') }}"
for:
seconds: 6
action:
- service: input_boolean.turn_on
entity_id: input_boolean.open_window_alert
- service: notify.family_main_devices
data_template:
title: "Smart Home Alerts"
message: "Mindestens ein Fenster ist offen."
data:
subtitle: "Fenster offen!"
push:
badge: "{{states.sensor.count_notification_alerts.state|int}}"
Damit der rote Punkt an der Home-Assistant App auf dem Telefon auch die wirkliche Anzahl der aktiven Warnungen/Alarme darstellt, wird diese im Sensor sensor.count_notification_alerts berechnet und als Wert für die 'badge' mitgeliefert.
packages/notification.yaml
# sensor counts all active alerts for numbering the badge
# more alerts can be integrated!
sensor:
- platform: template
sensors:
count_notification_alerts:
friendly_name: 'count active alerts'
entity_id:
- input_boolean.open_backdoor_alert
- input_boolean.open_window_alert
- input_boolean.dwd_weather_alert
- binary_sensor.vacuum_error_alert
value_template: "{{ (1 if is_state('input_boolean.open_backdoor_alert', 'on') else 0)
+ (1 if is_state('input_boolean.open_window_alert', 'on') else 0)
+ (1 if is_state('input_boolean.dwd_weather_alert', 'on') else 0)
+ (1 if is_state('binary_sensor.vacuum_error_alert', 'on') else 0)
}}"
# numeric would be like that: + (0 if is_state('sensor.dwd_current_warn_count', '0') else 1)
icon_template: mdi:comment-alert
Wenn der Alarms aufgehoben wird, muss noch die 'badge' auf dem Telefon neu- oder zurückgesetzt werden. Aktuell kenne ich keinen Weg, die 'badge' an der App zu setzen ohne eine neue Notification zu schicken, deshalb so:
packages/doors_windows.yaml
automation:
- alias: Reset alert - Open Doors trigger: # jemand zuhause oder alle Türen zu platform: template value_template: "{{ (states.sensor.home_status.state in ['Home'] or is_state('group.all_doors', 'off')) and is_state('input_boolean.open_backdoor_alert', 'on') }}" for: seconds: 1 action: - service: input_boolean.turn_off entity_id: input_boolean.open_backdoor_alert - service: notify.family_main_devices data_template: title: "Smart Home ..." message: "Türen Alarm aufgehoben." data: push: badge: "{{states.sensor.count_notification_alerts.state|int}}" - alias: Reset alert - Open Windows trigger: # jemand zuhause oder alle Fenster zu platform: template value_template: "{{ (states.sensor.home_status.state in ['Home'] or is_state('group.all_windows', 'off')) and is_state('input_boolean.open_window_alert', 'on') }}" for: seconds: 1 action: - service: input_boolean.turn_off entity_id: input_boolean.open_window_alert - service: notify.family_main_devices data_template: title: "Smart Home ..." message: "Fenster Alarm aufgehoben." data: push: badge: "{{states.sensor.count_notification_alerts.state|int}}"
Zigbee Mesh Optimierung
Da die Aqara-Sensoren innerhalb der Aluminium-Türrahmen verbaut sind und auch der Coordinator am Rand der Wohnung positioniert ist, musste ich mich mit dem Zigbee-Netzwerk beschäftigen. Die Reichweite der verbauten Türsensoren beträgt in meinem Fall ca. 3-4m. Innerhalb dieses Radius müssen Zigbee Router positioniert werden.
Routerfunktionalität im Netzwerk können nur strombetriebene Geräte übernehmen. Eine gute und kostengünstige Variante stellen die IKEA Tradfri Signalverstärker dar. Mit diesem kann man auch noch zusätzlich USB-Geräte laden:
- Produkt: IKEA TRÅDFRI Signalverstärker
- Preis: 10€ [IKEA]
- Schnittstelle: USB 2
- Funkprotokolle: Zigbee
Vor Installation der Router kam es häufig zu Verbindungsabbrüchen und der Status der Sensoren wechselte in 'nicht verfügbar'. Sie mussten oft neu mit dem Coordinator verbunden werden.
Als weiteres Zigbee-Gerät mit Routingfunktionalität habe ich eine OSRAM PLUG+ Schaltsteckdose:
- Produkt: Osram SMART+ Plug
- Preis: ca. 14€ [Reichelt Elektronik]
- Schaltleistung: 3.680 W / 16 A
- Funkprotokolle: Zigbee
Ich habe in meiner Wohnung 3 Ikea-Signalverstärker und eine Osram Schaltsteckdose positioniert und konnte damit eine stabile Signalübertragung erreichen. Nur gelegentlich verliert Home-Assistant den Kontakt zu einem Türsensor, was sich aber fast immer durch 2-maliges Öffen und Schliessen der Tür/des Fensters wiederherstellen lässt. Ein neues Verbinden zum Zigbee-Netz ist fast nicht mehr notwendig.
Wichtig: Entgegen der Zigbee Spezifikation, suchen die Aqara-Sensoren nicht den besten (=stärksten) Router in ihrer Nähe, sondern senden nur zu dem Gerät, mit dem sie ursprünglich verbunden wurden. Bei Anpassungen im Netz durch die Hinzunahme von neuen Repeatern müssen die Aqara-Sensoren evtl. neu mit den nächstgelegenen Zigbee-Router verbunden werden.
Hilfreiche Links:
- https://docs.hubitat.com/index.php?title=How_to_Build_a_Solid_Zigbee_Mesh
- https://community.hubitat.com/t/xiaomi-aqara-devices-pairing-keeping-them-connected/623
Bei der Optimierung des Netzwerks war die Tabelle der Zigbee-Geräte (zha-network-card) im Frontend sehr hilfreich:
lovelace/views/zigbee_view.yaml
id: zha_table
title: Zigbee
path: zha_table
icon: mdi:zigbee
panel: true
cards:
- type: 'custom:zha-network-card'
clickable: true
columns:
- name: Name
prop: name
# - attr: area_id
# name: Area
- attr: available
id: available
modify: x || "false"
name: Online
- attr: rssi
name: RSSI
- attr: lqi
name: LQI
- attr: last_seen
name: Last Seen
- attr: manufacturer
name: Manufacturer
- attr: model
name: Model
# - attr: ieee
# name: IEEE
# - name: NWK
# prop: nwk
- attr: power_source
name: Power Source
# - attr: quirk_class
# name: Quirk
sort_by: available #, name
Lovelace Frontend
Anzeigen einer dynamischen Card (custom:auto-entities - früher Monster-Card), die nur die offenen (und nicht verfügbaren) Türen/Fenster anzeigt.
lovelace/views/home_view.yaml
id: home
title: Home
icon: mdi:home
path: home
cards:
# show only open (or unavailable) door-/window sensors (if any...)
- type: custom:auto-entities
show_empty: false
card:
type: entities
title: Offene Türen
show_header_toggle: false
filter:
include:
- entity_id: "binary_sensor.lumi_lumi_sensor_magnet_aq2*"
state: "on"
- entity_id: "binary_sensor.lumi_lumi_sensor_magnet_aq2*"
state: "unavailable"
Anzeige der gesetzten Warnungen/Alarme in diesem Bereich (interessant während der Entwicklung):
lovelace/views/home_view.yaml
- type: entities
show_header_toggle: false
entities:
- type: custom:fold-entity-row
head:
type: section
label: Gruppen & Alarm
open: false
entities:
- entity: group.all_doors
name: Balkontüren
type: custom:multiple-entity-row
primary:
entity: input_boolean.open_backdoor_alert
name: Alarm
- entity: group.all_windows
name: Fenster
type: custom:multiple-entity-row
primary:
entity: input_boolean.open_window_alert
name: Alarm
- entity: sensor.count_notification_alerts
name: Anz. aktiver Alarme
Bei gesetztem Alarm wird der Custom-Header rot mit speziellem Icon, bei Warnungen gelb:
ui-lovelace.yaml
custom_header:
compact_mode: true
menu_hide: false
voice_hide: true
chevrons: false
tab_icons:
#NOTE: only in one line, no multiple lines with '>'!!
home: '{% if is_state("input_boolean.open_backdoor_alert", "on") or is_state("input_boolean.open_window_alert", "on") %}mdi:home-alert{% endif %}'
[...]
tabs_color:
home: '{% if is_state("input_boolean.open_backdoor_alert", "on") %}red{% elif is_state("input_boolean.open_window_alert", "on") %}yellow{% endif %}'
[...]
Fazit
Insgesamt bin ich mit dem Ergebnis super zufrieden. Die Kontakte arbeiten einigermassen zuverlässig, gelegentlich verliert ZHA die Verbindung zu einem oder zwei Sensoren. Meistens reicht es dann, die Tür ein- bis zweimal zu öffnen und zu schliessen. In seltenen Fällen muss der Sensor neu mit dem Coordinator oder seinem Repeater verbunden werden.
Wichtig war aber die Plazierung ausreichend vieler Router.