Müllbenachrichtigung mit Home Assistant in 3 Schritten

Ich nutze schon lange eine Müllbenachrichtigung mit Home Assistant, wenn am Folgetag eine der Mülltonnen geleert wird. Hierzu habe ich bislang ziemlich individuellen und auf meinen Bedarf zugeschnittenen Code benutzt: Per PHP lese ich die vom lokalen Müllentsorger bereitgestellte iCal aus, generiere mir hieraus eine XML und scrape diese dann mittels Home Assistant. Das alles geht jedoch deutlich einfacher, wenn man die HACS Integration Waste Collection Schedule nutzt.

Wie genau du dir hiermit auch eine Müllbenachrichtigung mit Home Assistant für dein zu Hause erstellen kannst, beschreibe ich in diesem Beitrag!

Waste Collection Schedule in HACS installieren

Wie bereits im Eingang des Beitrags erwähnt, nutze ich neuerdings die Custom Integration Waste Collection Schedule von Steffen Zimmermann (mampfes). Hiermit kannst du für unzählige Müllentsorger aus den Ländern Deutschland, Australien, Österreich, Belgien, Kanada, Litauen, Luxemburg, Holland, Neuseeland, Norwegen, Polen, Slowenien, Schweden, Schweiz, England und den USA die bevorstehenden Abholtermine für Müll in Home Assistant nutzen.

Du musst dich nirgends anmelden oder registrieren, sondern einzig diese Custom Integration über HACS (bspw.) installieren. Wie genau das geht, möchte ich an dieser Stelle nicht erklären, da den meisten die notwendigen Schritte bekannt sein dürften.

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 402 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Sensoren für Waste Collection Schedule einrichten

Wenn du Waste Collection Schedule installiert hast, müssen wir noch manuell mindestens zwei Einträge mittels YAML anlegen, die wir für die Müllbenachrichtigung mit Home Assistant benötigen:

Zuerst müssen wir bspw. in der configuration.yaml folgenden Eintrag, auf deinen Wohnort angepasst ergänzen:

waste_collection_schedule:
  sources:
  - name: c_trace_de
    args:
      ort: DEINORT
      #ortsteil: DEINORTSTEIL (optional)
      strasse: DEINESTRASSE
      hausnummer: DEINEHAUSNUMMER
      service: DEINSERVICE

In Abhängigkeit von deinem Wohnort können sich die benötigten Angaben für die source unterscheiden. Wenn du unter https://github.com/mampfes/hacs_waste_collection_schedule auf dein Land (vermutlich Germany) und dann deine Stadt klickst, gelangst du zu er Erklärung, welche Angabe für source für deinen Wohnort benötigt werden!

Bei c_trade_de, wie in meinem Fall, ist der Ortsteil ist optional und bei mir selbst gar nicht nötig. Alle anderen Angaben sind notwendig, damit die Integration für deine Anschrift den Müllkalender ermitteln kann.

Auf dieser Unterseite ist auch aufgelistet, was bei service einzutragen ist.

Zusätzlich müssen wir nun noch den eigentlichen Sensor, welche die Informationen über den für dich gültigen Müllkalender beinhalten wird, anlegen:

sensor:
- platform: waste_collection_schedule
  name: muell
  types:
  - "Biomüll"
  - "Restmüll"
  - "Papier"
  - "Gelbe Tonne"

Für mich sind die types Biomüll, Restmüll, Papier und Gelbe Tonne relevant.

Um herauszufinden welche types es überhaupt gibt, habe ich diese Auflistung zunächst komplett weggelassen und mir dann angeschaut, welche Mülltonnen mir ohne diese Einschränkung angeboten werden. Zuerst sah mein sensor also wie folgt aus:

sensor:
- platform: waste_collection_schedule
  name: muell

Wenn du beide Einträge angelegt hast, ist ein Neustart von Home Assistant notwendig. Sobald Home Assistant dann wieder hochgefahren ist, solltest du deinen neuen Sensor sensor.muell in den Entwicklerwerkzeugen angezeigt bekommen. Das kann dann wie folgt aussehen:

Neuer Sensor für die Müllbenachrichtigung mit Home Assistant

Mehrere Informationen werden uns nun geboten: Unter Zustand sehen wir als Text welcher Müll in wie vielen Tagen abgeholt wird. Und unter Attribute gibt es eine sehr lange Auflistung über die in der Zukunft liegenden Abholtermine samt jeweiliger Mülltonne.

Wie wir auf Attribute eines Sensors zugreifen und diese Daten nutzen können, hatte ich in dem Beitrag Attribute eines Sensors in Home Assistant nutzen bereits erklärt. Wie du damit konkret eine Automatisierung erstellst, erkläre ich noch im hier folgenden Schritt:

Automatisierung für die Müllbenachrichtigung mit Home Assistant erstellen

Bevor wir zu dem eigentliche Code der Automatisierung für die Müllbenachrichtigung mit Home Assistant kommen, noch ein klein wenig Theorie:

Unter Attribute beinhaltet unser neuer Sensor ja eine Auflistung der zukünftigen Abholtermine. Wir wollen uns zukünftig immer einen Tag vorher von Home Assistant benachrichtigen lassen, wenn am Folgetag Müll abgeholt wird. Der für uns interessante/relevante Eintrag wird also immer der erste in der Attribute-Liste sein.

Diese Aufzählung (also Datum: Mülltonne) können wir wie folgt auslesen

{{ (states.sensor.muell.attributes|list)[0] }}
{{ (states.sensor.muell.attributes.values()|list)[0] }}

Das kann dann wie folgt als Ergebnis aussehen:

Müllbenachrichtigung mit Home Assistant in 3 Schritten

Nun müssen wir nur noch täglich um 18 Uhr prüfen, ob das Datum hinter {{ (states.sensor.muell.attributes|list)[0] }} der morgige Tag ist. Wenn dem so ist, wird {{ (states.sensor.muell.attributes.values()|list)[0] }} morgen abgeholt!

Mittels folgendem Code können wir prüfen, ob das morgige Datum dem Eintrag aus states.sensor.muell.attributes|list)[0] entspricht:

{{ (now().date() + timedelta(days=1))| string == (states.sensor.muell.attributes|list)[0] }}

Der langen Rede kurzer Sinn: Hier der Code für unsere Automatisierung, die uns am Vortag um 18 Uhr eine Müllbenachrichtigung mit Home Assistant auf unser Handy schickt:

alias: Muellbenachrichtigung
description: ""
trigger:
  - platform: time
    at: "18:00:00"
condition:
  - condition: template
    value_template: >-
      {{ (now().date() + timedelta(days=1))| string ==
      (states.sensor.muell.attributes|list)[0] }}
action:
  - service: notify.mobile_app_pixel_5n
    data_template:
      title: Müllbenachrichtigung
      message: >-
        Morgen wird folgender Müll abgeholt: {{
        (states.sensor.muell.attributes.values()|list)[0] }}!
mode: single

Sofern dein Sensor ebenfalls sensor.muell heißt, solltest du den oben gezeigten YAML-Code 1:1 für deine Müllbenachrichtigung mit Home Assistant nutzen können, sofern du noch den Namen notify.mobile_app_pixel_5n (Zeile 12) für dich entsprechend anpasst!

Jeden Tag um 18 Uhr wird mit dieser Automatisierung geprüft, ob am Folgetag eine Mülltonne abgeholt wird. Ist dies der Fall, erhältst du eine Benachrichtigung „in“ die Home Assistant App. Diese kannst du dann auch noch um eine actionable Notification erweitern, also bspw. die Notification auf dem Handy deines Partners automatisch verschwinden lassen, wenn bestätigt hast, dass du die Mülltonne rausgestellt hast.

Dieser Beitrag ist Teil einer Beitrags-Serie rund um Home Assistant.

7 Gedanken zu „Müllbenachrichtigung mit Home Assistant in 3 Schritten“

  1. Das funktioniert nur, wenn nicht an zwei aufeinanderfolgenden Tagen der Müll abgeholt wird.
    Ansonsten ist der erste Wert im Array immer die Abholung am ersten Tag

    Antworten
    • Ne, das klappt dann auch – also bei mir zumindest! 😉 In dem Beitrag siehst du den Screenshot von den Entwicklerwerkzeugen. Da kannst du sehen, dass bei uns der Müll in der Regel auch an zwei aufeinander folgenden Tagen abgeholt wird. Und man sieht auch, dass die Einträge nicht doppelt vorhanden sind, so dass
      {{ (states.sensor.muell.attributes.values()|list)[0] }}
      den ersten Eintrag liefert und
      {{ (states.sensor.muell.attributes.values()|list)[0] }}
      den zweiten.
      Sind denn bei der Ansicht der Entität in den Entwicklerwerkzeuge die Abholtermine auch nur einzeln aufgeführt bei dir?

      Antworten
  2. Sehr schön erläutert, leider fehlt, wie man Straßennamen korrekt darstellt, bei mir mit ‚ß‘ und ‚-‚ usw.
    Dadurch habe ich auch nach unzähligen Versuchen keine Ergebnisse erzielen können und das Projekt Müllkalender verworfen.

    Antworten
  3. Klasse Artikel. Leider gibt mein Müll-Dienstleister nur Kürzel aus wie „B“ = Biomüll oder „R2“ = Restmüll.
    Wie kann ich denn das auflösen, so dass in der Benachrichtigung dann auch der volle Name kommt?

    Antworten
    • Ich würde das bei der Message über ein Template lösen:

      Morgen wird folgende Müll abgeholt:
      {% set muell= (states.sensor.muell.attributes.values()|list)[0] %}
      {% if muell == "B" %} Biomüll
      {% elif muell == "R2" %} Restmüll
      {% endif %}

      Antworten
  4. Mega danke, hatte mir dazu schon mal was angeschaut, was mir gefehlt hat war die Automatisierung zum Schluss, damit kam ich nicht klar, dank dir läuft das jetzt auch endlich! 🙂

    Antworten

Schreibe einen Kommentar