Lebt man in seiner Wohnung allein, kann über Bewegungssensoren verlässlich ermittelt werden, in welchem Raum man sich aufhält. Schaut man einen Film oder hört ein Hörbuch, geschieht das über einen Media Player, der klar einem Raum zugeordnet ist. Verlässt man den Raum, in dem gerade eine Wiedergabe erfolgt, bspw. um eine Tüte Chips zu holen, kann der Media Player automatisch pausiert und beim Wiedereintreten in den Raum automatisch fortgesetzt werden.

Vorraussetzungen

Für diese Automation wird der sensor.last_motion benötigt, der in dem Post Room Based Presence mit Motion Sensoren ausgiebig erläutert wurde. Durch diesen Sensor weiß Homeassistant in welchem Raum man sich derzeit aufhält.

Es gelten die erläuterten Grundsätze, die im verlinkten Post erläutert wurden:

  • Jeder Raum des Hauses benötigt einen Bewegungssensor
  • Diese Automation funktioniert nur, wenn sich nur eine Person im Haus aufhält
  • Es sollte ein input_boolean als Condition in der Automation verwendet werden für den Fall, dass mehrere Personen im Haus anwesend sind

Die Automation

Benötigt wird ein Media Player. In diesem Beispiel verwendete ich meinen Beelink GT-King Pro, der mit CoreElec geflasht wurde und das kostenlose Media Center Kodi ausführt. Wie man diesen Media Player mit CoreElec flasht, habe ich in dem Post Beelink GT-King Pro und CoreElec ausgeführt.

Der Media Player für dieses Beispiel hat den Namen media_player.beelink und befindet sich in meinem Wohnzimmer.

- alias: Kodi Auto Pause
  description: "Automatically pauses and resumes playback when living room is left or entered"
  trigger:
    - platform: state
      entity_id: sensor.last_motion
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: input_boolean.besuchermodus
        state: 'off'
      - condition: state
        entity_id: sensor.current_av_receiver_source
        state: 'Kodi'
  action:
    - service: >
        {% if not is_state("sensor.last_motion", "Wohnzimmer") and is_state("media_player.beelink", "playing") %}
          media_player.media_pause
        {% elif is_state("sensor.last_motion", "Wohnzimmer") and is_state("media_player.beelink", "paused") %}
          media_player.media_play
        {% endif %}
      data:
        entity_id: media_player.beelink

Erläuterung der Automation

Trigger

- platform: state
  entity_id: sensor.last_motion

Trigger ist der Sensor sensor.last_motion, der den Auftenthalt in Haus angibt. Ändert sich der Aufenthalt, werden zwei conditions geprüft.

Conditions

- condition: state
  entity_id: input_boolean.besuchermodus
  state: 'off'

Diese Condition prüft den State eines input_boolean, der von mir gesetzt wird, wenn Besuch anwesend ist. Für diesen Fall soll die Automation nicht ausgeführt werden.

- condition: state
  entity_id: sensor.current_av_receiver_source
  state: 'Kodi'

Diese Condition prüft, ob mein AV-Receiver auf den Eingang des Media Players geschaltet ist, damit die Automation nicht triggert, wenn ich bspw. über das Gerät Musik höre.

Action

- service: >
    {% if not is_state("sensor.last_motion", "Wohnzimmer") and is_state("media_player.beelink", "playing") %}
      media_player.media_pause
    {% elif is_state("sensor.last_motion", "Wohnzimmer") and is_state("media_player.beelink", "paused") %}
      media_player.media_play
    {% endif %}
  data:
    entity_id: media_player.beelink

Für die Action kommt eine service_template zum Einsatz, die basierend auf dem Zustand des sensor.last_motion und des Media Players media_player.beelink zwei Unterschiedliche Aktionen ausführt:

  • Pause: Wenn eine Bewegung außerhalb des Wohnzimmers detektiert wird UND der Media Player gerade etwas abspielt
  • Resume: Wenn eine Bewegung im Wohnzimmer detektiert wird UND der Media Player pausiert ist.