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!
Inhaltsverzeichnis
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
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:
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:
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: - action: 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.
Produktempfehlungen
Top, beim Test sah es richtig aus. Mal schauen, was am Donnerstag um 17.30 kommt, wenn die Benachrichtigung erscheinen soll.
Daanke.👍
@el_honi Lass‘ es uns hier gerne wissen! 🙂
@olli Danke. Die Benachrichtigung hat jetzt mit beiden Müllsorten super funktioniert!
@el_honi Ja mega, freut mich! Danke für die Info!
Okay, versuch mal folgendes:
Du erstellt eine Automatisierung, die als Auslöser bspw. 18:00 Uhr hat. Als Bedingung setzt du folgende Prüfung ein:
Und in deiner Aktion mit der Notify-Action dann folgenden Code für den Nachrichten-Text:
Das ist jetzt ohne die Daten im Attribut der Entität gelöst, aber vermutlich der einfachste Weg, da der Zustand ja alle benötigten Informationen beinhaltet.
Auf dem Dashboard bekomme ich es richtig angezeigt
Hallo, doch, ich nutze Waste Collection Shedule und dort Stadt Osnabrück
OK,hier der Screenshot
@el_honi Uff, das sieht natürlich deutlich anders aus, als bei mir mit Waste-Collection… Kannst du mir sagen, wo die Daten herkommen? Also Waste-Collection ist es ja vermutlich nicht? Ich überlege mal, wie/ob man das mit dem gegebenen Daten hinbekommen kann!
@el_honi Sorry, ich meinte unter Entwicklerwerkzeuge -> Zustände und dort mal sensor.mullabfuhr als Filterbegriff eingeben und dann die Reihe „Attribute“.
hilft es so weiter?
Hallo,
Dein Beitrag hat mir super geholfen. Allerdings bekomme ich als Benachrichtigung nur eine Müllart genannt, obwohl immer 2 an einem Tag abgeholt werden.
Der Sensor zeigt beide Müllarten an:
Was muss ich tun. In der Benachrichtigung auf dem Smartphone steht nur:Morgen wird folgender Müll abgeholt:Atlpapier!Gruß.
@el_honi Hi! Kannst du bitte einen Screenshot von der Entität posten, also wie die Attribute da aussehen, wenn 2 Müllarten abgeholt werden?
Hallo Olli,ich habe da mal eine Frage, die mit der eigentliche Müllbenachrichtigung nicht wirklich was zu tun hat. Durch dein Video „Attribute von Entitäten auslesen und nutzen mit Home Assistant“ ab Minute 04:11 kam mir die Idee, ob man damit nicht die Farbe der Icons der Kachel ändern kann.Ich betreibe mein Dashboard in der Ansichtart „Sektionen (experimentell)“, dort benutze ich deinen Müllsensor, um mir die nächste Abholung anzuzeigen. Innerhalb dieser Kachel kann ich die Farbe manuell auswählen.
Wenn ich mir dann den Yaml-Code ansehen, dann gibt es dabei den Punkt color:, dem dann eine Frage zugewiesen werden kann.
Jetzt habe ich versucht, die Farbe durch das Auslesen der Attribute auszulesen. Ich bekomme Altpapier (blue), Bioabfall (green), Restabfall (dark-grey) und Wertstoff (yellow) angezeigt, bin aber, bedingt durch meine sehr kurze Zugehörigkeit in HA, nicht in der Lage unter color: diese Farbe einzutragen und dann das Icon einzufärben. Unter Umständen ist das ja bei diesen Kacheln ja auch gar nicht vorgesehen diesen Wert in Abhängigkeit zu ändern. Ein zusätzliche Integration aus dem HACS möchte ich dafür nicht verwenden.Siehst du da irgendeine Möglichkeit und kannst mir dabei auf die Sprünge helfen?
LG
@smarthobbyt Ohne was zusätzliches von HACS o. ä. sehe ich da keine Chance. Ich nutze für etwas ggf. vergleichbares folgendes: https://smarterkram.de/2704/
@olli Danke dir, ich hab es mir fast gedacht. Da es ja auch noch experimentell ist kommt das vllt. irgendwann.Dann muss ich wohl doch auf den HACS zurückgreifen und mich daran austoben.LG
– service: notify.mobile_app_pixel_5n
heist jetzt:
– action: notify.mobile_app_pixel_5n
weil mit Update 2024.8 services umbenannt wurden 😉
Vollkommen richtig! Ich habe das Code-Beispiel im Beitrag entsprechend angepasst! Vielen Dank für die Hinweis! 😀
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
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?
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.
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?
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 %}
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! 🙂
Sehr schön! Danke für dein Feedback!