3 Minuten
Room Based Presence mit Motion Sensoren

In jedem meiner Räume befindet sich ein Hue Motion Bewegungsmelder aus dem Hause Philips, die ich in Homeassistant über das Deconz Addon eingebunden habe. Diese triggern – neben dem obligatorischem Einschalten von Lichtern – in meinem Alltag diverse Automationen, z.B:
- Automatisch die Tagesschau auf dem Bose Lautsprecher anmachen, wenn ich wochentags das Bett verlassen habe und in die Küche laufe
- Automatisch die Rollos hochfahren, wenn ich aufgestanden bin
- Automatisch den Wecker ausschalten, wenn ich wochentags das Schlafzimmer verlassen habe
Da ich alleine in meiner Wohnung lebe, eignen sich die Bewegungsmelder auch hervorragend, um Homeassistant mitzuteilen in welchem Raum man sich gerade befindet. Dies lässt sich hervorragend nutzen, um bspw. Lichter in Räumen auszuschalten in denen man sich gerade nicht aufhält oder automatisch den Fernseher zu pausieren, wenn man den Raum verlässt. Wie man einen solchen Last Motion Sensor
erstellt, erkläre ich im Folgenden.
Die Theorie des Vorgehens
Wird ein Bewegungssensor getriggert (state = on), muss Homeassistant schauen welcher es war und anschließend den Namen des Raumes in eine Variable schreiben. Anschließend kann ein optionaler Template Sensor erstellt werden, der diese Variable ausließt und ein passendes Icon zu jedem Raum zuordnet.
Praktische Umsetzung
Variablen sind kein natürliches Konzept von Homeassistant und müssen über eine Custom Component namens home-assistant-variables installiert werden.
Variable anlegen
Es wird eine Variable konfiguriert. In meinem Fall habe ich sie last_motion
genannt:
last_motion:
restore: true
icon: mdi:map-marker
friendly_name: 'Last Motion'
Automation: Letzter Aufenthaltsraum
Als Trigger dienen die Bewegungssensoren, die in Homeassistant als Binary Sensors erscheinen:
- alias: Set Last Motion Variable
initial_state: True
trigger:
- platform: state
entity_id:
- binary_sensor.hue_motion_flur
- binary_sensor.hue_motion_kueche
- binary_sensor.hue_motion_room2
- binary_sensor.hue_motion_schlafzimmer
- binary_sensor.hue_motion_wohnzimmer
- binary_sensor.aqara_motion_bad
- binary_sensor.aqara_motion_klo
to: 'on'
action:
- service: var.set
data_template:
entity_id:
- var.last_motion
value: >-
{% if trigger.entity_id == "binary_sensor.hue_motion_flur" %} Flur
{% elif trigger.entity_id == "binary_sensor.hue_motion_kueche" %} Küche
{% elif trigger.entity_id == "binary_sensor.hue_motion_room2" %} Room2
{% elif trigger.entity_id == "binary_sensor.hue_motion_schlafzimmer" %} Schlafzimmer
{% elif trigger.entity_id == "binary_sensor.hue_motion_wohnzimmer" %} Wohnzimmer
{% elif trigger.entity_id == "binary_sensor.aqara_motion_klo" %} Klo
{% elif trigger.entity_id == "binary_sensor.aqara_motion_bad" %} Bad
{% endif %}
Anschließend steht eine Variable mit dem Namen var.last_motion
zur Verfügung. Der State dieser Variable kann - analog zu einem Sensor - ausgelesen und in Automationen genutzt werden.
Template Sensor mit Icon für jeden Raum (optional)
Optional kann zusätzlich noch ein Template Sensor erstellt werden, der jedem State/Raum ein passendes Icon zuweist:
- platform: template
sensors:
last_motion:
friendly_name: 'Wo bin ich?'
value_template: "{{ states.var.last_motion.state }}"
icon_template: >-
{% if is_state('var.last_motion', 'Küche') %}
mdi:food-variant
{% elif is_state('var.last_motion', 'Wohnzimmer') %}
mdi:sofa
{% elif is_state('var.last_motion', 'Flur') %}
mdi:cube-unfolded
{% elif is_state('var.last_motion', 'Room2') %}
mdi:guitar-electric
{% elif is_state('var.last_motion', 'Schlafzimmer') %}
mdi:bed
{% elif is_state('var.last_motion', 'Bad') %}
mdi:shower
{% elif is_state('var.last_motion', 'Klo') %}
mdi:toilet
{% else %}
mdi:account-question
{% endif %}
Anwendungseispiel: Licht im aktuellen Raum blinken lassen, wenn Smartphone aufgeladen ist
Nutzt man die offizielle Homeassistant App, kann diese Auskunft über den Batteriestand des Telefons und auch darüber, ob das Smartphone gerade geladen wird, ausgeben. Die folgende Automation prüft, ob das Telefon sich am Lader befindet und lässt ein Licht im aktuellen Raum kurz aufblinken, wenn der Akkustand über 90% erreicht hat:
- alias: Flash Light when Smartphone fully charged
initial_state: True
trigger:
- platform: numeric_state
entity_id: sensor.mizar_battery_level
above: 90
condition:
- condition: time
after: '09:00:00'
before: '22:00:00'
- condition: state
entity_id: person.jonas
state: 'home'
action:
- service: light.turn_on
data_template:
entity_id: >
{% if is_state('var.last_motion','Schlafzimmer') %} light.schlafzimmer_kommode
{% elif is_state('var.last_motion','Wohnzimmer') %} light.wohnzimmer_regal
{% elif is_state('var.last_motion','Room2') %} light.room2_decke
{% elif is_state('var.last_motion','Küche') %} light.kuche_kuhlschrank
{% endif %}
flash: short
Ein weiteres Beispiel habe ich in dem separaten Post Automatisch pausierender Media Player aufgeführt. Dort wird erläutert, wie man einen beliebigen Media Player pausiert, wenn man den Raum verlässt und die Wiedergabe automatisch fortsetzt, sobald man den Raum erneut betritt.
presence hue-motion-sensor hass-variables
homeautomation zigbee motion-sensor sensoren
620 Wörter
2020-03-30 23:42