Anleitung: Push-Nachrichten mit Home Assistant unter iOS

Wer sein Smart Home aus der Ferne steuern möchte, der kann mit Home Assistant auf die geniale Home Assistant Companion App unter iOS zurückgreifen. Sollen die Informationen aber nicht nur abgefragt, sondern proaktiv vom Smart Home auf das Smartphone gepusht werden, benötigt es ein paar Einstellungen. Die folgende Anleitung zeigt, wie sich die Push-Nachrichten-Komponenten von Home Assistant aktivieren lässt.

Überblick

Jeder kennt Push-Nachrichten aus anderen Apps auf seinem iPhone* oder iPad*: Egal ob Social Media Netzwerke, Messenger Apps oder Mail-Clients, beinahe jede App nutzt Push Notifications, um den Nutzer über neu eingetroffene Nachrichten oder andere Ereignisse zu informieren. Diese Funktion lässt sich mit der Home Assistent Companion App für iOS ebenfalls nutzen. So kann in eine Automation das Versenden von bestimmten Nachrichten oder Informationen eingebunden werden. In Kombination mit Nachrichten benötigt man zudem immer einen vernünftigen Trigger – also ein definiertes Ereignis, welches den Nachrichtenversandt auslöst. Für solche Trigger eignen sich Binärsensoren, die bei einer Statusänderung (von 0 auf 1 oder von 1 auf o) eine Nachricht verschicken. Aber Schritt für Schritt.

Das Apple iOS Push Notifications System

Zu aller erst wollen wir uns kurz mit der Funktionsweise von Push Messages unter iOS beschäftigen. Damit die Home Assistant Instanz in eurem vier Wänden weiß, wohin sie die Nachricht schicken soll, wird eine eindeutige ID für jeden Smartphone* oder Tablet benötigt. Sobald eine Nachricht von Home Assistant versandt wird, wird diese nicht direkt an das Smartphone gesendet, sondern an einen Apple Server. Dieser identifiziert das Smartphone und leitet die Nachricht als Push Notification weiter. Auf dem Smartphone* wird die Nachricht dann der Home Assistant Companion App zugeordnet. Dieser „Umweg“ über die Apple-Server ist wichtig zu verstehen, da Apple pro App nur eine begrenzte Anzahl an Push Notifications pro Endgerät erlaubt. Ihr könnt also nicht wild mit Nachrichten umher spammen – aber in der Regel möchte man ja so wenig wie möglich von seinem Smart Home gestört werden. 😉

Vorbereitung

Um Nachrichten mit über iOS Push Notifications zu empfangen, sind einige Voraussetzungen zu erfüllen, die im Folgenden kurz genannt werden sollen:

  • Eure Home Assistant Instant benötigt ein gültiges, NICHT selbstsigniertes SSL-Zertifikat (Apple erlaubt keine selbstsignierten Zertifikate auf iOS-Geräten)
  • Euer iPhone oder iPad* läuft mindestens mit iOS9 (besser iOS 10)
  • Home Assistant ist auf dem aktuellsten Stand und auf jeden Fall neuer als V 0.42.4
  • Die Home Assistant Companion App ist auf eurem iPhone* installiert und ihr könnt euch mit eurem Home Assistant verbinden

Sind all diese Anforderungen erfüllt und die Verbindung zwischen App und Home Assistant Instant funktioniert, kann es losgehen. (Weiterführende Infos in meinem Artikel zur Einrichtung der Home Assistant Companion App unter iOS)

Home Assistant iOS Push Notifications Schritt für Schritt

Push ID identifizieren

Im ersten Schritt identifizieren wir unser Smartphone* mit seiner eindeutigen Push Notification ID. Dazu öffnet ihr die Home Assistant Companion App und wählt in der unteren rechten Ecke das Optionsmenü (Zahnradsymbol). Am unteren Ende findet sich das Optionsmenü für „Benachrichtigungsoptionen“.

Home Assistant Companion App Einstellungen Home Assistant iOS Push Notification App Benachrichtigungsoptionen

Die Push ID benötigen wir im Normalfall nicht, da die Kommunikation zwischen App und Home Assistant Instant automatisch funktionieren sollte. Sobald ihr euch auf einem iPhone* mit der Home Assistant Companion App an eurem Home Assistant System angemeldet habt, wird in der Datei „known_devicel.yaml“ ein Eintrag für jedes Gerät erstellt. In meinem Fall sieht dieser wie folgt aus:

nils_iphone:
hide_if_away: false
icon:
mac:
name: Nils
picture:
track: true
vendor:

Jedes weitere iOS-Gerät erhält einen eigenen Eintrag in dieser Datei. Die Geräte sind nach einem Neustart des Home Assistant Dienstes mit all ihren Sensorinformationen im Sensor-Tab von Home Assistant einsehbar. Die erste Zeile repräsentiert den Namen des iOS-Gerätes in Home Assistant.

Hinweis: Solltet ihr beim ersten Start der App verweigert haben, dass die Home Assistant Companion App euch Benachrichtigen schicken darf, müsst ihr dieses in den iOS Privatsphäreeinstellungen nachträglich erlauben.

Home Assistant Nachrichtenkomponenten für iOS aktivieren

Im zweiten Schritt aktivieren wir die Nachrichtenkomponenten in Home Assistant. Dazu wird folgende Zeile der configuration.yaml hinzugefügt

ios:

Danach den Home Assistant Service neu starten. Nun werden die iOS und die notify Komponenten zur Verfügung gestellt und können in Automationen genutzt werden.

PS: Wenn ihr die Discovery-Komponente aktiviert habt, sollte die Zeile oben nicht nötigt sein.

Push-Nachrichten in Home Assistant an einem Beispiel testen

Da die grundlegenden Dinge bereits erledigt sind, können wir uns direkt an das Ausprobieren eines Beispiels machen. Folgendes Szenario soll als Beispiel dienen: Sobald der Wert eines Luftfeuchtigkeitssensors im Innenraum einen festgelegten Grenzwert überschreitet, soll eine Push-Nachricht mit der Aufforderung zum Lüften versandt werden.

Zunächst müssen wir uns dazu einen entsprechenden Trigger bauen, der als Auslöser für den Versandt der Nachricht fungiert. Zum Verständnis unser Luftfeuchtigkeitssensor* hört auf die schöne Bezeichnung: „sensor.humidity_158d0001ab199c“. Dazu nutzen wir die Binärsensor-Komponenten, welche es erlaubt, das Erreichen eines Grenzwertes in eine binäre Aussage (also wahr oder falsch bzw. 1 oder 0) umzuwandeln.

Folgende Konfiguration erstellt einen neuen, binären Sensor mit dem Namen „wohnzimmer_luftfeuchtigkeit“:

binary_sensor:
  - platform: template
    sensors:
     wohnzimmer_luftfeuchtigkeit:
        value_template: "{{ states('sensor.humidity_158d0001ab199c') | float > 62.0 }}"
        entity_id: sensor.humidity_158d0001ab199c

In der Zeile value_template wird unsere Bedingungen eingegeben. In diesem Fall fragen wir ab, ob der Wert unseres Sensors „sensor.humidity_158d0001ab199c“ größer als 62 % relative Luftfeuchtigkeit* ist. Trifft die Bedingung zu, wird der State unseres neuen Trigger-Sensors „wohnzimmer_luftfeuchtigkeit“ auf 1 gesetzt, andernfalls ist der State = 0.

Damit haben wir uns einen Trigger gebaut, den wir zum Auslösen der Push-Nachricht verwenden können. Die folgende Konfiguration erlaubt nun den Nachrichtenversandt über Home Assistant, es handelt sich um ein normale Automation:

automation:
  - alias: 'Regel 12: Lüften'
    trigger:
     platform: state
     entity_id: binary_sensor.wohnzimmer_luftfeuchtigkeit
     from: 'off'
     to: 'on'
    action:
     service: notify.iPHONES
     data:
      message: "Luftfeuchtigkeit ist hoch! Bitte lüften."
      data:
       push:
        badge: 0

Sobald sich der State unseres Trigger-Sensors von „off“ (=Null) zu „on“ (=Eins) ändert, d.h. die gemessene relative Luftfeuchtigkeit* über die festgelegten 62 % klettert, wird die Automation ausgelöst. Als Aktion wird die notify-Komponenten mit der Nachricht „Luftfeuchtigkeit ist hoch! Bitte lüften.“ im message-Container aufgerufen. Die Angabe badge: 0 bedeutet, dass diese Push-Nachricht die kleine rote Zahl an der Ecke jeder App auf dem Home Screen des iOS-Device nicht hoch zählt.

Anmerkung: Solltet ihr Badges an eurer Home Assistant Companion App angezeigt bekommen, lässt sich diese in den Benachrichtigungsoption der App wieder auf Null zurücksetzen.

Home Assistant iOS Push Notification Push ID

Mehrere Geräte gleichzeitig informieren

Der aufmerksame Leser wird sich nun fragen: Und woher weiß das System, was „IPHONE“ ist? Berechtigte Frage, hier die Antwort.

Da es in den meisten Fällen sinnvoll ist, eine Nachricht an mehrere Geräte (und/oder Hausbewohner) zu senden, lassen sich alle iOS-Geräte* die zusammen benachrichtigt werden sollen, in einer Gruppe bündeln. Das hält die Konfiguration schlank.

Im obigen Beispiel ist dazu die Gruppe IPHONE folgendermaßen in der Konfiguration hinterlegt:

notify:
 - name: iPHONES
   platform: group
   services:
     - service: ios_nils_iphone
     - service: ios_iphone_von_XYZ
     - service: ios_iphone_von_XYY

Somit wird mit Aktivierung der Automations-Bedingung dieselbe Nachricht parallel an alle drei iPhones* in der Gerätegruppe „IPHONES“ geschickt. Fertig 🙂

Schlusswort

Das obige Beispiel zeigt einen Einstieg in die Möglichkeiten, die sich mit der Notify-Komponenten unter iOS ergeben, um Push-Nachrichten zu versenden. Wer nicht nur Nachrichten verschicken, sondern via Push-Nachricht auch Aktionen an das Smart Home zurückspielen will, der hat dazu ebenfalls die Möglichkeit. Die entsprechende Komponenten in Home Assistant nennt sich Actionable Notifications. Fragen oder Anregungen? Hinterlasst gerne einen Kommentar! 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.