iOS Actions sind eine Funktion von Homeassistant, die speziell für das iOS-Ökosystem genutzt werden kann. Im Kern ähneln sie den Actionable Notification, wobei letztere - unabhängig davon ob man die Android- oder die iOS-Companion App auf dem Smartphone installiert hat - genutzt werden können, wie in dem Post Homeassistant, Actionable Notifications und Appdaemon bereits beschrieben wurde.

iOS Actions können nach initialem Setup in der iOS Shortcuts App und auch auf der Apple Watch genutzt werden. Wie dies einfach möglich ist, möchte ich in diesem Post zeigen.

Das Vorgehen

Für mein Setup definiere ich alle iOS Actions direkt in Homeassistant. Wird eine dieser Actions ausgeführt, bspw. über einen Shortcut oder einen Tap auf der Apple Watch, wird auf dem Eventbus von Homeassistant ein Event mit dem Namen ios.action_fired gefeuert. Diesen fange ich mit einer Appdaemon App ab und weise in der App an, welche Action erfolgen soll.

Konfiguration Homeassistant

In der configuration.yaml muss zuerst die iOS-Integration aktiviert werden. Da ich ungern meine configuration.yaml zumülle habe ich im ersten Schritt im Ordner ./config/ eine Datei mit dem Namen ios.yaml angelegt und diese anschließend so in der configuration.yaml eingebunden:

ios: !include ios.yaml

In der Datei ios.yaml habe ich vier Einträge eingefügt, die für diesen Post als Beispiel herhalten sollen:

actions:
  - name: blind_toggle
    background_color: "#000000"
    label:
      text: "Rollo"
      color: "4BA7EE"
    icon:
      icon: blinds
      color: "#ffffff"
  - name: sleepmode
    background_color: "#000000"
    label:
      text: "Schlafmodus"
      color: "4BA7EE"
    icon:
      icon: bed
      color: "#ffffff"
  - name: christmastree
    background_color: "#000000"
    label:
      text: "Weihnachtsbaum"
      color: "4BA7EE"
    icon:
      icon: pine-tree
      color: "#ffffff"
  - name: cast_toggle
    background_color: "#000000"
    label:
      text: "Chromecast"
      color: "4BA7EE"
    icon:
      icon: cast
      color: "#ffffff"

Entscheidend sind an dieser Stelle die Namen der Actions in den Einträgen name:, da diese auf dem Eventbus abgefangen werden müssen.

Erläuterung Beispiele

Name Action
blind_toggle Fährt mein Ikea Fyrtur Rollo entweder hoch oder herunter. Siehe: Post
sleepmode Ein Script, das den Schlafmodus einschaltet.
christmastree Schaltet meinen Weihnachtsbaum ein oder aus. Siehe Post
cast_toggle Schaltet eine Steckdose ein oder aus, an der mein Chromecast samt Monitor und Boxen angeschlossen ist.

Ist diese Einrichtung erfolgt, muss Homeassistant neugestartet werden. Anschließend stehen diese Actions bereits in der Companion App, der Watch App und der iOS Shortcuts App zur Verfügung, können aber zu dem jetzigen Zeitpunkt noch keine Actions ausführen.

Screenshots

Apple Watch Companion App

Screenshot Apple Watch

iOS Shortcut App

Screenshot Shortcuts App

Konfiguration Appdaemon

Damit die vier Beispiele auch Aktionen ausführen können, bspw. das Rollo oder den Weihnachtsbaum schalten, nutze ich Appdaemon. Dazu muss im ersten Schritt die Datei ./config/appdaemon/apps/iosactions.py angelegt werden und folgendes in diese geschrieben werden:

import appdaemon.plugins.hass.hassapi as hass

class iOSActions(hass.Hass):
    def initialize(self):
        self.listen_event(self.handle_event, "ios.action_fired")

    def handle_event(self, event_name, data, kwargs):
        if data['actionName'] == 'blind_toggle':
            self.call_service("cover/toggle", entity_id = "cover.rollo_schlafzimmer")
        elif data['actionName'] == 'sleepmode':
            self.call_service("script/turn_on", entity_id = "script.schlafzimmer_readytosleep")
        elif data['actionName'] == 'christmastree':
            self.call_service("light/toggle", entity_id = "light.wled")
        elif data['actionName'] == 'cast_toggle':
            self.call_service("switch/toggle", entity_id = "switch.schlafzimmer_steckdose_cast")

Diese Appdaemon App lauscht kontinuierlich nach dem Event ios.action_fired. Ist ein solcher Event erkannt, wird anschließend nach dem actionName gesucht und die zugewiesene Action ausgeführt. Die App muss im letzten Schritt noch für Appdaemon zugänglich gemacht werden. Dazu muss in der Datei ./config/appdaemon/apps/apps.yaml der folgende Eintrag hinzugefügt werden:

# Handling iOS Actions
iOSActions:
  module: iosactions
  class: iOSActions

Nach dem Speichern registriert Appdaemon automatisch die neue Konfiguration. Anschließend können die iOS Actions genutzt werden.

Tipp zum Abschluss

iOS erlaubt auf dem iPhone unter Einstellungen > Bedienungshilfen > Tippen > Auf Rückseite tippen die Möglichkeit einen Shortcut direkt mit einem Doppel- oder Dreifachtipp auf die Rückseite des iPhones auszuführen. Da die iOS Shortcut App auch auf die iOS Actions zugreifen kann, kann man also auch mit einem Doppeltipp auf die Rückseite seinen Weihnachtsbaum ein- oder ausschalten.

Viel Spaß damit!