Seit kurzem wird die Entwicklung der offiziellen Android App für Homeassistant eifrig voran getrieben. Seit dem Release 1.6 hat diese ein nützliches Festure hinzugewonnen, das sich Actionable Notifications nennt. Actionable Notifications ermöglichen es maximal 3 Aktionen an Pushnachrichten zu binden und diese quasi wie ein Shortcut zu triggern:

Hello Friend

Wie man diese Notification aus Homeassistant heraus sendet und den gewählte Aktion in Appdaemon nutzen kann zeige ich in den folgenden Schritten. Vorraussetzungen hierfür sind, dass die Mobile App Integration von Homeassistant in der configuration.yaml eingetragen, die offizielle Android App installiert und erfolgreich mit der Instanz verbunden und diese aus dem Internet erreichbar ist. Sind alle Vorraussetzungen erfüllt, erstellt Homeassistant automatisch einen Service zum Senden von Pushnachrichten. Dieser lautet notify.mobile_app_TELEFONNAME. Wer sich nicht sicher ist, wie der Dienst für sein Smartphone heißt, kann den genauen Namen unter DEVELOPER TOOLS > SERVICES im Dropdown Menü nachschauen.

Beispielscript für Notification

Als Beispiel wird ein Script erstellt, dass eine Pushnachricht mit drei Aktionen sendet:

script:
  test_notification:
    sequence:
      - service: notify.mobile_app_oneplus
        data:
          message: 'Was möchtest du tun?'
          title: 'Testnachricht'
          data:
            actions:
              - action: 'PN_LICHT'
                title: 'Licht an'
              - action: 'PN_STECKDOSE'
                title: 'Steckdose an'
              - action: 'PN_SCENE'
                title: 'Scene Hell'

Wichtig ist, dass jede angelegte Aktion einen endeutigen Namen erhält, z.B. PN_LICHT. Nach dem anlegen des Script, müssen in Homeassitant die Scripte neu eingelesen werden oder ein Neustart von Hass erfolgen. Anschließend kann unter den DEVELOPER TOOLS > STATES das Script gesucht werden. Klickt man auf das kleine rund umrandete i vor dem Script, öffnet sich ein Menü mit dem man es auslösen kann. Unmittelbar danach sollte eine Pushnachricht auf dem Handy erscheinen.

Appdaemon konfigurieren

Da Pushnotifications einen Haufen unterschiedlicher Services triggern können, habe ich mich entschlossen diese über Appdaemon ausführen zu lassen. Im Ordner config/appdaemon/apps/ wird nun eine Datei mit dem namen pushactions.py erzeugt und folgender Inhalt eingefügt:

import appdaemon.plugins.hass.hassapi as hass
 
class PushActions(hass.Hass):
    def initialize(self):
        self.listen_event(self.handle_event, "mobile_app_notification_action")
 
    def handle_event(self, event_name, data, kwargs):
        if data['action'] == 'PN_LICHT':
            self.call_service("light/turn_on", entity_id = "light.decke")
        elif data['action'] == 'PN_STECKDOSE':
            self.call_service("switch/turn_on", entity_id = "switch.lampe")
        elif data['action'] == 'PN_SCENE':
            self.call_service("scene/turn_on", entity_id = "scene.hell")

Die Namen der Scenen, Switches und Lights sind exemplarisch und müssen selbstverständlich an die eigenen Belange angepasst werden.

Nun muss die neue App noch Appdaemon bekannt gemacht werden. Dazu wird die Datei config/appdaemon/apps.yaml aufgerufen und folgender Eintrag hinzugefügt:

ActionableNotifications:
  module: pushactions
  class: PushActions