Custom Component: hass-browser_mod für Homeassistant

Custom Component: hass-browser_mod für Homeassistant

Bekannterweise bietete Homeassistant an Port 8123 eine UI, die bequem von jedem Gerät aufgerufen werden kann, das einen Browser besitzt. Die Geräte sind jedoch lediglich stumme Betrachtungsmittel und Homeassistant hat keinen Einfluss darauf, was auf dem Gerät gerade angezeigt und von Haus aus keine Möglichkeit das Dargestellte zu kontrollieren.
Wäre es nicht ein nettes Feature, wenn beim Klingeln an der Haustür auf allen Geräten ein Pop-Up erscheint und auf den Besucher visuell hinweist oder gar den Live-Feed der Kamera an der Haustür anzeigt? Wäre es nicht hilfreich, wenn Homeassistant automatisch einen spezifischen Tab lädt, sobald man einen bestimmten Raum betritt?

Das ist nun möglich mit der Custom Component hass-browser_mod von Thomas Loven. Eine sinnvolle Anwendung für diese Erweiterung stelle ich im folgenden vor:

Anwendungsbeispiel: Automatisch in einen Tab wechseln bei betreten eines Raumes

In Homeassistants Lovelace UI habe ich für jeden Raum einen eigenen Tab. In jedem Raum befindet sich ein Bewegungssensor. Homeassistant weiß also in welchem Raum ich mich aufhalte – vorrausgesetzt es ist nur eine Person anwesend.

Schritt 1: hass-browser_mod installieren

Zuerst muss die Custom Component installiert werden. Das kann manuell geschehen oder unter Hilfenahme des hilfreichen Tools HACS.

Schritt 2: Configuration.yaml erweitern und Hass neustarten

Die Datei configuration.yaml muss vorerst um eine Codezeile erweitert werden:

browser_mod:

Anschließend muss Homeassistant neu gestartet werden, damit die Custom Component erfolgreich geladen werden kann. Beim Neustart erzeugt Hass nun jedesmal, wenn die UI in einem Browser aufgerufen wird, eine deviceID und einen zugehörigen media_player.

Schritt 3: deviceID herausfinden und einen zugehörigen Alias anlegen

Die deviceID kann mit einem Alias versehen werden, so dass ein sprechender Name anstelle der cryptischen Zahlen- und Buchstabenfolge verwendet wird. Um die deviceID des betrachtenden Browsers herauszufinden, geht mann in der Hass UI unten links auf den Button Dev-Service, wählt den Service browser_mod.command aus und trägt im Feld Service Data folgendes ein:

{
  "command": "debug"
}

Es öffnet sich ein Fenster, das die deviceID präsentiert. Diese muss herauskopiert werden und anschließend kann in der configuration.yaml der bereits bestehende Eintrag erweitert werden.
Im folgenden Beispiel habe ich mein Smartphone (oneplus) als Namen verwendet:

browser_mod:
  devices:
    89fc613c-xxxxxxx:
      name: oneplus

Nachdem der Alias angelegt wurde, muss Homeassistant ein zweites mal neu gestartet werden.

Schritt 4: Automation erzeugen, die Tabs bei betreten eines Raumes lädt

Als Trigger wird der Zustand der Bewegungssensoren gewählt. Registriert einer von ihnen eine Bewegung, wird ermittelt welcher es war und ein zum Raum gehöriger Tab geladen:

- alias: Autoswitch Tabs
  initial_state: True
  trigger:
  - platform: state
    to: 'on'
    entity_id:
    - sensor.wohnzimmer_bewegungssensor
    - sensor.schlafzimmer_bewegungssensor
    - sensor.room2_bewegungssensor
    - sensor.kueche_bewegungssensor
  action:
  - service: browser_mod.command
    data_template:
      command: navigate
      deviceID:
        - oneplus
      navigation_path: >
        {% if trigger.entity_id == "sensor.schlafzimmer_bewegungssensor" %} /lovelace/3
        {% elif trigger.entity_id == "sensor.wohnzimmer_bewegungssensor" %} /lovelace/1
        {% elif trigger.entity_id == "sensor.room2_bewegungssensor" %} /lovelace/4
        {% elif trigger.entity_id == "sensor.kueche_bewegungssensor" %} /lovelace/2
        {% endif %}

Voilà! Sollte es beim Anzeigen der deviceID zu Fehlern kommen, ist es ratsam den Browsercache zu löschen und es erneut zu versuchen.

Als Tipp empfehle ich noch eine weitere Automation, die diese ausschaltet sobald mehrere Personen im Haus anwesend sind. Ansonsten wird bei jeder Bewegung in unterschiedlichen Räumen der entsprechende Tab geladen werden, obwohl die steuernde Person nicht zwingend in diesem verweilt.

Auch sollte der neu erzeugte media_player genauer betrachtet werden. Mit ihm kann eine Tonausgabe auf dem Gerät genutzt werden. Wenn bspw. ein Timer abläuft, kann so auf einem oder mehreren verbundenen Geräten ein Ton abgespielt werden.