Wir haben keinen hochgezรผchteten Kaffeeroboter mit 4k-Display und 67 „Kaffeespezialitรคten“ auf Knopfdruck, sondern einen italienischen Chrom-Bomber der Marke Lelit – eine einfache Siebtrรคgermaschine. Sie liefert hervorragenden Kaffee und hat nur 3 Schalter. Da ich Corona-bedingt auch viel im Homeoffice bin, genieรe ich meinen Kaffee nun deutlich รถfter als sonst.

Dummerweise schalte ich die Maschine gerne mal an und vergesse sie, weil zwischenzeitlich ein Online-Meeting lรคuft oder ich in meine Tรคtigkeit vertieft bin. Die heizt dann stundenlang vor sich hin, ohne benutzt zu werden. Eine Siebtrรคgermaschine muss auch regelmรครig gereinigt (โrรผckgespรผltโ) werden, was bei hรคufiger Nutzung auch hรคufiger erfolgen muss.
Warum also nicht die Kaffeemaschine fernbedienbar machen und mit einer automatischen Abschaltung versehen? Und wenn wir schon dabei sind, bauen wir auch gleich noch einen Zรคhler fรผr Anzahl der Nutzungen ein, der mich per Alexa an die Reinigung erinnert?

Das ist in Home Assistant recht einfach und elegant umsetzbar, wenn man einmal die grundlegenden Konzepte von Home Assistant verstanden hat. Automation, Integration, Events, Entity-IDs, Scripts, Trigger, Actions, Notifier, Sequence, Service – all das verwirrt am Anfang sehr. Zum Glรผck kann man bei Home Assistant auch immer mehr รผber die Ui konfigurieren und muss nicht mehr alles komplett in YAML schreiben. Ganz ohne geht es aber noch immer nicht. Das ist aber auch gut so, denn mit YAML hat man unendliche Mรถglichkeiten und behรคlt trotzdem die รbersicht. YAML ist auch nicht programmieren, sondern konfigurieren.
Projekt Teil 1: Steckdose ein- und automatisch ausschalten – Automation und Action
Die grundlegendste Funktion war, die Kaffeemaschine per HA einzuschalten und nach einer vorgegebenen Zeit automatisch abschalten zu kรถnnen. Dazu nutze ich eine TP-Link HS100 WLAN-Steckdose (Neukauf kann ich nicht empfehlen, da bei neuerer Firmware der externe Zugriff unterbunden wurde), die noch herumlag. HA bringt die passende Integration bereits fix und fertig mit. Das ginge aber natรผrlich auch mit einer Sonoff-, Osram Smart+ Plug oder einem Aktor der Gebรคudeautomation. Auch meine LCN-Module habe ich in HA eingebunden.

Nach der Installation steht die WLAN-Steckdose als neuer Switch und der Entity switch.kaffeemaschine zur Verwendung bereit. Entities kรถnnen Schalter, Werte von Sensoren, Zรคhler, Steuerelemente von Mediaplayern wie z. B. „Play“ oder Eigenschaften wie der Akkustand des Smartphones etc. sein. Sie liefern Informationen oder kรถnnen von HA aus angesprochen werden, um Aktionen auszufรผhren.
Gerรคte, in HA Devices genannt, kรถnnen mehrere Entities haben. Der Aqara Multisensor wรคre ein Device, das als Entities Temperature, Humidity, Pressure, Battery Level hat. Also 1 Device mit 4 Entities.
Mit den MDI-Icons kann man dem Schalter auch gleich noch das passende Icon verpassen, um ihn dann im Frontend z. B. mithilfe einer Entities-Card anzulegen.

Nun lรคsst sich die Maschine im Frontend und direkt mit der Taste an der Dose schalten. Das ist zwar schรถn, weil ich die Siebtrรคgermaschine so schon einmal vom Bรผro im Untergeschoss aus anschalten und vorheizen lassen kann, aber noch ist das nur ein verlรคngerter Netzschalter und nicht wirklich smart.
Dazu braucht man eine Automation, die nach einem einstellbaren Zeitraum die Steckdose wieder ausschaltet. Diese Automation lรคsst sich in der aktuellen HA-Version komplett รผber Configuration -> Automation per Menรผ anlegen.

Als Mode wird Single eingestellt, da es sich um ein einzelnes Ereignis handelt. Nun braucht es einen Auslรถser, einen Trigger, der der dann eine Action auslรถst. In diesem Fall mรผssen wir auf den Status der switch.kaffeemaschine Entity schauen, weil wir wissen wollen, ob sie gerade eingeschaltet wurde.
Dazu gibt es den Trigger-Type State mit den Status off und on. Was uns interessiert, ist der Wechsel von off to on als Trigger.
Eine Bedingung „Conditions“ brauchen wir diesem Fall nicht. Man kรถnnte hier aber z. B. festlegen, dass die Automation nur greifen soll, wenn es zwischen 8:00 und 16:00 ist oder wenn auรen die Sonne scheint. Ihr versteht was ich meine!
Zum Schluss folgt die Aktion, welche die Automation ausfรผhren soll, wenn der Status von off nach on wechselt. Weil wir mรถchten, dass die Steckdose nach z. B. 30 Minuten automatisch ausschaltet, brauchen wir erst den Action Type Delay und die zugehรถrige Verzรถgerungszeit.

Danach fรผgen wir noch eine Aktion ein, die nach den 30 Minuten ausgefรผhrt wird, nรคmlich das eigentliche Ausschalten der Steckdose.
Hier kommt eine weitere Home Assistant Technik zum Einsatz: Services. HA bringt jede Menge Services mit, die alle mรถglichen Standardaufgaben abdecken. Darunter eben auch, einen Schalter wieder auszuschalten. Man kann jedoch auch eigene Services erstellen, dazu spรคter mehr.

Der switch.turn_off Service braucht nur eine Entity, die er ansprechen soll. Im Beispiel ist das wieder unsere switch.kaffeemaschine Entity. Nun geben wir der Automation noch einen Namen, vielleicht auch eine Beschreibung und Schritt 1 ist erledigt.
Wenn man die Kaffeemaschine einschaltet, wird sie nach 30 Minuten automatisch wieder ausgeschaltet.
Projekt Teil 2: Nutzungen protokollieren – Counter
Damit man einen Anhaltspunkt hat, wie oft die Maschine im Einsatz war, soll ein Zรคhler bei jedem Einschalten um 1 erhรถht werden. Natรผrlich spiegelt das nicht wider, wie viele Tassen man tatsรคchlich herausgelassen hat. Die Kaffeeprofis sprechen da ja von „Bezรผgen“. Ich kรถnnte mich immer kaputt lachen, wenn aus jedem Furz eine Wissenschaft samt dazugehรถrigem Jargon gemacht wird. In Foren ist das ganz schlimm. Wie auch immer …
Wir sind zwei Personen im Haushalt. Beide derzeit viel im Homeoffice. Zwei Tassen am Morgen und zwei am Nachmittag. Wir schalten die Maschine zweimal pro Tag ein (plus Fehlalarme, wenn ich die Maschine vergesse). Eine Rรผckspรผlung mit Reinigungsmittel (ich kann Puly Caff empfehlen – ein hervorragender und ergiebiger Kaffeefett-Lรถser), mache ich meist so alle 14 Tage. Also lassen wir den Zรคhler bei 25 eine Benachrichtigung auslรถsen.
Zunรคchst braucht man einen Zรคhler. Diese legt man in der Configuration.yaml an:
counter:
coffee_counter:
initial: 0
step: 1
icon: mdi:coffee
Code-Sprache: YAML (yaml)
Die Platform ist counter. Der Name der Entitรคt ist coffee_counter. Der Zรคhler beginnt bei 0 und wird bei jedem Aufruf spรคter um 1 erhรถht. Mit icon kann man ihm z. B. eine Kaffeetasse als Symbol zuteilen. Nach einem Restart von Home Assistant steht der Counter als neue Entity counter.coffee_counter zur Verfรผgung. Der Restart ist nach รnderungen der configuration.yaml unbedingt erforderlich. Neue Automations, Scripts etc. kรถnnen seit einiger Zeit auch einzeln ohne Neustart des Gesamtsystems aktualisiert werden. Beides findet man unter Configuration -> Server Controls.
Das kรถnnen wir gleich in die vorherige Automation einbauen, in dem man eine weitere Action anlegt. Diesmal VOR dem Delay, denn der Zรคhler soll ja gleich beim Einschalten um eins erhรถht werden. Hier wird nun wieder ein Service aufgerufen, diesmal der counter.increment Service. Dem mรผssen wir nur noch mitteilen, welchen Counter er erhรถhen soll, nรคmlich den counter.coffee_counter. Mit den Pfeilen rechts kann man die Action nun nach oben vor unsere Delay Action schieben.

Im Frontend kรถnnen wir der Entity-Card noch den Counter hinzufรผgen, damit wird die Anzahl der Starts angezeigt bekommen.
Projekt Teil 3: Benachrichtigung auslรถsen – Scripts und Conditions
Da man natรผrlich nicht erst HA aufmachen oder die Home Assistant App รถffnen mรถchte um zu sehen, ob man die Kaffeemaschine reinigen sollte, brauchen wir eine Benachrichtigungsfunktion. Da in der Kรผche ohnehin ein Amazon Echo steht, lassen wir das von Alexa รผbernehmen.
Die Einrichtung von Alexa in Home Assistant werde ich hier nicht beschreiben, da das eine sehr umfangreiche Angelegenheit ist. Man kann aber auch die Home Assistant Cloud von Nabu Casa abonnieren. Damit bekommt man fรผr $5 die Alexa und Google Assistant Einbindung auf einfachste Weise, einen sicheren Fernzugang und unterstรผtzt auch noch die Entwicklung von Home Assistant.
Um die Sache etwas รผbersichtlicher zu machen, legen wir eine weitere Automation an „Kaffeemaschine Reinigen Alexa„. Auch hier wieder der Single-Modus. Als Trigger wieder State wenn die Entitรคt switch.kaffeemaschine von off auf on wechselt.

Nun kommt etwas Neues: eine Condition, also Bedingung. Unsere Bedingung ist, dass die Action nur ausfรผhrt wird, wenn die switch.kaffeemaschine auf on UND der Numeric state des counter.coffee_counter รผber 25 ist.

Die Action ist wieder ein Service. Der Service muss nun ein Script aufrufen, das wir selbst erstellen: Alexa Sprachausgabe. Dazu geht es in Configuration->Scripts und hier wird ein neues Benutzer-Script angelegt. Einer der groรen Vorteile eines Scripts in Home Assistant ist, dass man beliebig viele Actions pro Script ausfรผhren (Sequence) und Scripte flexibel wiederverwenden kann, sofern man sie intelligent mit Variablen gestaltet.
Durch den Einsatz von Variablen in Scripts, kann man letztere universell einsetzen. In unserem Beispiel kann man Alexa damit beliebige Sรคtze in den Mund, Pardon, Lautsprecher legen, die von der Action an das Script รผbergeben werden.

Anstatt im Script eine fixe Nachricht in dieser Form zu integrieren:
message: 'Bitte die Kaffeemaschine reinigen'
Code-Sprache: YAML (yaml)
Nehmen wir eine Variable:
message: '{{ message }}'
Code-Sprache: YAML (yaml)
In der Automation kann nun das neue Script aufgerufen werden. Als Service Data wird nun der Name der Variable mit der gewรผnschten Sprachausgabe รผbergeben. Damit kann das Script immer wieder eingesetzt werden.

Damit ermahnt uns Alexa nun beim รberschreiten von 25 Nutzungen der Kaffeemaschine, diese zu reinigen. Das macht sie nun bei jedem Einschalten bis …
Reinigungszรคhler zurรผcksetzen
… wir den Reinigungszรคhler zurรผcksetzen. Dazu nutzen wir eine Button-Card im Frontend.

Mit einem Klick auf „Show Code Editor“ kรถnnen wir in Zeile 6 die Counter-Entity festlegen, nรคmlich counter.coffee_counter:
type: button
hold_action:
action: call-service
service: counter.reset
service_data:
entity_id: counter.coffee_counter
tap_action:
action: more-info
show_icon: true
show_name: true
icon: 'mdi:spray-bottle'
name: Gereinigt
Code-Sprache: YAML (yaml)
Damit man den Zรคhler nicht versehentlich zurรผckstellen kann, habe ich die hold_action als Auslรถser genommen. Damit muss man das Icon lange drรผcken, damit die Aktion ausgefรผhrt wird. Mit einem langen Klick auf die Button-Card wird nun also wieder ein Service ausgefรผhrt, der die HA-Funktion counter.reset auslรถst.
Das Zurรผcksetzen kรถnnte man natรผrlich auch รผber einen physischen Taster machen, der in Home Assistant eingebunden ist. Hier bieten sich z. B. die gรผnstigen Aqara Taster an. Noch komfortabler wรคre es, wenn man Alexa sagen kรถnnte, dass sie den Zรคhler zurรผcksetzen soll. Das kommt in einem weiteren Beitrag.
In diesem Beitrag haben wir nun folgende Home Assistant Techniken verwendet:
- Integrations
- Automation
- Events
- Entity-IDs
- Scripts
- Trigger
- Actions
- Notifier
- Service
- Button-Cards im Frontend (Lovelace)
- Variablen
Hat man den Zusammenhang zwischen den unterschiedlichen Funktionen erst einmal verstanden, kann man viele Automationen auf die gleiche Art und Weise selbst gestalten. Mรถgliche Erweiterungen zu meinem Beispiel wรคre etwa, 5 Minuten bevor die Maschine wieder ausgeschaltet wird per Alexa daran zu erinnern, noch einen Kaffee zu machen. Man kรถnnte den Zeitraum fรผr die automatische Abschaltung auch im Frontend einstellbar mache. Und und und …
Schreibe einen Kommentar zu Stefan Antworten abbrechen