2 Minuten
Homeassistant, Actionable Notifications und Appdaemon
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 Feature hinzugewonnen, das sich Actionable Notifications nennt. Actionable Notifications ermöglichen es maximal 3 Aktionen an Push-Nachrichten zu binden und diese quasi wie ein Shortcut zu triggern:
Wie man diese Notification aus Homeassistant heraus sendet und den gewählte Aktion in Appdaemon nutzen kann zeige ich in den folgenden Schritten. Voraussetzungen 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 Voraussetzungen erfüllt, erstellt Homeassistant automatisch einen Service zum Senden von Push-Nachrichten. 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 eindeutigen 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 Push-Nachricht 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