Home Assistant Grundlagen mit Kaffeemaschine und Alexa

Ich weiß, ich wiederhole mich, aber eine Smarthome hat seinen Namen nur dann verdient, wenn es wirklich smart ist und Arbeit abnimmt. So habe ich meiner Lelit Siebträgermaschine mit Home Assistant (HA) ein paar Upgrades verpasst. Mit diesem Beitrag versuche ich auch, grundlegende Konzepte von Home Assistant näherzubringen. Legen wir los!
Bitte beachte: Dieser Beitrag ist mehr als 3 Jahre alt. Manche Links, Preise, Produkte und Aussagen sind vielleicht nicht mehr aktuell!

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.

Unser Chrom-Bomber von Lelit

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?

Home Assistant und Alexa erinnern an die Reinigung der Kaffeemaschine
Home Assistant und Alexa erinnern an die Reinigung der Kaffeemaschine

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!

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.

TP-Link Integration
TP-Link Kasa Integration

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.

Entity-Card im Lovelace-Frontend von Home Assistant
Entity-Card im Lovelace-Frontend von Home Assistant

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.

home-assistant-automation1-nachbelichtet


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.

home-assistant-automation2-nachbelichtet

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.

Eine Auswahl an Services in Home Assistant
Eine Auswahl an Services in Home Assistant

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:coffeeCode-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.

Home Assistant Conditions

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.

Button-Card zum Rücksetzen des Counters

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 …

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.

7 Kommentare

  1. Nachteil des Delay von 30 Minuten für die Kaffeemaschine in der Automation ist, dass beispielsweise bei einem Neustart des Home Assistant der Timer nicht mehr läuft, weil da alle laufenden Automatisierungen gestoppt werden. Besser wäre es, ein Event zu werfen, das einen Neustart des Home Assistant überlebt. Eine Automation sollte nach Möglichkeit nicht länger als wenige Sekunden laufen.

    Bei der Kaffeemaschine ist das nicht so kritisch, aber bei anderen Aktionen könnte es mehr Nachteile haben, wenn etwas nach der vorgegebenen Zeit nicht passiert.

  2. Hi, danke für den Artikel. Eine Idee für den counter: Nimm eine KP115 statt der HS. Über das Zählen der Stromspitzen könnte man ggf herausfinden, wie viele Tassen wirklich gezogen wurden. Weiterhin alles Gute

    • Ist mir klar, ich habe auch diverse Sonoff Pow etc. Das ist aber an dieser Stelle wirklich nicht kritisch. Zudem ist es beim Siebträger nicht ganz so einfach, echte „Bezüge“ zu ermitteln, da ja der Boiler ständig beheizt wird und das die markanten Spitzen wären. Die Pumpe beim Extrahieren fällt da nicht ins Gewicht.

  3. Hi,

    welches sind die Voraussetzungen für den Dienst „notify.alexa_media_wohnen“ ?

    Muss das HACS Addon Alexa Media Player installiert werden ?

    Danke und Grüße

  4. Hallo,

    ich bin gerade dabei auch Home Assistant einzurichten.

    Ich würde das ganze gerne auf einem Raspberry Pi4 und Docker aufsetzten.

    Leider schaffe ich keine Installation welche den Supervisor beinhaltet.

    Läuft das System bei dir auch in einem Docker Container?

    Grüße
    Matthias

Schreibe einen Kommentar zu nachbelichtetAntworten abbrechen

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