Mit der HACS Integration Waste Collection Schedule bekommst du einen einfach zu integrierenden Abfallkalender für Home Assistant. Damit verpasst du künftig keine Termine mehr zur Abfuhr deines Mülls. In diesem Beitrag zeige ich dir meinen kompletten Code zur Integration des Müllkalenders in das Dashboard. Im Weiteren bekommst einen Vorschlag für Automation zur Erinnerung des nächsten Abfuhrtermins.
Waste Collection Schedule HACS Integration
Der erste Schritt ist die Integration des Abfallkalenders über HACS. Falls du HACS noch nicht installiert hast zeige ich dir in diesem Einsteiger Video, wie es geht.
Im Bereich HACS > Integrationen > Durchsuchen und herunterladen von Repositories suchst du nach Waste Collection Schedule
Nachdem herunterladen der Integration muss Home Assistant einmal neugestartet werden.
Waste Collection Schedule configuration.yaml
Je nach lokalem Anbieter des Abfuhrkalenders gibt es verschiedene Möglichkeiten, wie der Kalender in Home Assistant integriert wird. Eine Übersicht der vorhandenen Anbieter findest du hier.
Abfallkalender iCAL Integration
Die iCAL Integration setzt voraus, dass die Kalender Datei heruntergeladen und in Home Assistant hochgeladen wird. Die Datei muss in den Order www im Bereich /config. Falls du noch keinen Order www hast lege diesen zuerst an. Als nächstes kann die Datei dort abgelegt werden.
Code zur iCAL Kalender Abfrage:
waste_collection_schedule:
sources:
- name: ics
args:
file: "www/Abfallkalender.ics"
customize:
- type: Restabfall
alias: restabfall
icon: mdi:trash-can
- type: Gelbe Säcke
alias: gelbersack
icon: mdi:recycle
- type: Bioabfall
alias: bioabfall
icon: mdi:trash-can
- type: Altpapier
alias: altpapier
icon: mdi:recycle
calendar_title: Abfallkalender
fetch_time: "04:00"
day_switch_time: "10:00"
Das Attribut Type ist besonders wichtig. Hier müssen die Namen so eingetragen werden, wie Sie in der .ics Datei für die jeweilige Müllart hinterlegt sind!
Code zur webCAL Kalender Abfrage:
waste_collection_schedule:
sources:
- name: ics
args:
url: webcal://roedermark.mein-abfallkalender.online/ical.ics?sid=20350&cd=inline&ft=6&fu=webcal_other&fp=next_30&wids=547,546,639,545&uid=12111&pwid=daf5b44452&cid=83
customize:
- type: Restabfall
alias: restabfall
icon: mdi:trash-can
- type: Gelbe Säcke
alias: gelbersack
icon: mdi:recycle
- type: Bioabfall
alias: bioabfall
icon: mdi:trash-can
- type: Altpapier
alias: altpapier
icon: mdi:recycle
calendar_title: Abfallkalender
fetch_time: "04:00"
day_switch_time: "10:00"
Der Unterschied iCAL zu WebCAL ist das Attribut unterhalb args, welches verwendet wird, wie an den Beispielen zu erkennen ist.
- Zigbee 3.0 Repeater-Funktion
- Wiederholt und verstärkt Zigbee-Signale bis zu...
- Plug and Play, passt in alle Standardsteckdosen...
- Kompatibel u.a. mit Aeotec SmartThings, Homey,...
- Funktioniert aktuell noch NICHT mit Tuya,...
Waste Collection Schedule sensors.yaml
Damit Home Assistant die Termine aus dem Kalender verarbeiten kann werden Sensoren benötigt. In diesem Beispiel sind meine Sensoren in ein extra Datei sensors.yaml ausgelagert. Die Datei sensors.yaml wiederum ist in der configuration.yaml referenziert. Das Konzept dahinter wird hier erklärt.
- platform: waste_collection_schedule
name: Restabfall
details_format: "upcoming"
value_template: '{{ value.daysTo }}'
add_days_to: True
types:
- restabfall
- platform: waste_collection_schedule
name: Gelbersack
details_format: "upcoming"
value_template: '{{ value.daysTo }}'
add_days_to: True
types:
- gelbersack
- platform: waste_collection_schedule
name: Bioabfall
details_format: "upcoming"
value_template: '{{ value.daysTo }}'
add_days_to: True
types:
- bioabfall
- platform: waste_collection_schedule
name: Altpapier
details_format: "upcoming"
value_template: '{{ value.daysTo }}'
add_days_to: True
types:
- altpapier
- platform: waste_collection_schedule
name: Naechster
details_format: "upcoming"
value_template: '{{ value.daysTo }}'
add_days_to: True
Sobald die Sensoren erstellt sind könne die Termine in Home Assistant visualisiert werden. Dies erfolgt im nächsten Schritt.
Abfalltermine im Home Assistant Dashboard
So sieht aktuell meine Darstellung des Waste Collection Kalenders der kommenden Termine im Home Assistant Dashboard aus. Zum einen sehen wir direkt an welchem Tag und Datum, die nächste Leerung ist. Im Weiteren wird prominent in einem roten Badge die Anzahl der verbleibenden Tage bis zur nächsten Abholung angezeigt. Zu guter letzt bietet die Übersicht darunter einen Überblick über alle kommenden Abholungen und die restlichen Tage bis die Leerung erfolgt.
Dazu verwende ich als erstes eine Kachelkarte zur Anzeige der nächsten Leerung. Die grafische Übersicht darunter ist eine Kombination der Bildelemente Karte sowie einer Custom-Button-Karte, die über HACS installiert werden kann. Alle Karten sind in einem virtuellen Stapel zusammengefasst.
type: vertical-stack
cards:
- type: tile
entity: sensor.abfall_termine_template
hide_state: false
vertical: false
show_entity_picture: false
color: primary
icon: mdi:trash-can-outline
- type: picture-elements
image: /local/müll/background.png
elements:
- type: state-badge
entity: sensor.naechster
style:
top: 20%
left: 50%
'--ha-label-badge-size': 75px
'--ha-label-badge-title-font-size': 0em
- type: image
image: /local/müll/gelbersack.webp
style:
pointer-events: none
left: 15%
top: 60%
width: 20%
- type: image
image: /local/müll/altpapier.webp
style:
pointer-events: none
left: 38%
top: 60%
width: 20%
- type: image
image: /local/müll/bioabfall.webp
style:
pointer-events: none
left: 61%
top: 60%
width: 20%
- type: image
image: /local/müll/restabfall.webp
style:
pointer-events: none
left: 84%
top: 60%
width: 20%
- type: custom:button-card
name: Gelber Sack
entity: sensor.gelbersack
show_name: true
show_icon: false
show_state: true
style:
top: 90%
left: 15%
width: 25%
styles:
name:
- font-size: 1em
- font-family: arial
- font-weight: bold
state:
- font-size: 1em
- font-family: arial
card:
- background-color: transparent
- border: none
- type: custom:button-card
entity: sensor.altpapier
name: Altpapier
show_name: true
show_icon: false
show_state: true
style:
top: 90%
left: 38%
width: 25%
styles:
name:
- font-size: 1em
- font-family: arial
- font-weight: bold
state:
- font-size: 1em
- font-family: arial
card:
- background-color: transparent
- border: none
- type: custom:button-card
name: Bioabfall
entity: sensor.bioabfall
show_name: true
show_icon: false
show_state: true
style:
top: 90%
left: 61%
width: 25%
styles:
name:
- font-size: 1em
- font-family: arial
- font-weight: bold
state:
- font-size: 1em
- font-family: arial
card:
- background-color: transparent
- border: none
- type: custom:button-card
name: Restmüll
entity: sensor.restabfall
show_name: true
show_icon: false
show_state: true
style:
top: 90%
left: 84%
width: 25%
styles:
name:
- font-size: 1em
- font-family: arial
- font-weight: bold
state:
- font-size: 1em
- font-family: arial
card:
- background-color: transparent
- border: none
Helfer Template Nächste Leerung
Über dieses Template wird der nächste Termin in der Form: Abfallart + Tag + Datum angezeigt. Er ist im vorherigen Code über eine Kachel Karte (Tile Card) integriert. Der Name der Entität ist im obigen Beispiel: sensor.abfall_termine_template
{%- set days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] %}
{%- set ts = states.sensor.naechster.attributes | first | as_timestamp %}
{%- set weekday = days[ ts | timestamp_custom("%w") | int] %}
{{ states.sensor.naechster.attributes.values() | first |
replace("altpapier", "Papiertonne") | replace("gelbersack", "Gelber Sack") |
replace("restabfall", "Restmüll") | replace("bioabfall", "Biotonne") }}:
{{ ts | timestamp_custom(weekday~", %d.%m.%Y")}}
Sensor Einheit festlegen
Damit die Anzahl der Tage bis zur nächsten Abholung im Dashboard nicht nur als Zahl dargestellt wird sondern als eine Kombination aus Zahl mit Einheit muss zusätzlicher Code in der configuration.yaml eingetragen werden. Dieser definiert die Einheit (unit_of_measurement).
homeassistant:
customize:
sensor.naechster:
unit_of_measurement: Tage
sensor.altpapier:
unit_of_measurement: Tage
sensor.bioabfall:
unit_of_measurement: Tage
sensor.gelbersack:
unit_of_measurement: Tage
sensor.restabfall:
unit_of_measurement: Tage
- Zigbee 3.0 Repeater-Funktion
- Wiederholt und verstärkt Zigbee-Signale bis zu...
- Plug and Play, passt in alle Standardsteckdosen...
- Kompatibel u.a. mit Aeotec SmartThings, Homey,...
- Funktioniert aktuell noch NICHT mit Tuya,...
Waste Collection Automatisierung zur Terminerinnerung
Damit du keine Termine verpasst gibt es zahlreiche Idee, wie du eine Erinnerung erstellen kannst. Es lassen sich am Vortag der Abholung zum Beispiel Leuchtmittel in der Farbe der Tonne einfärben, die dran ist.
Im folgenden Beispiel habe ich eine Kombination aus Durchsage plus Smartphone Benachrichtigung ausgewählt. Dabei die Durchsage morgens um 07:30 als auch Abends um 18:30 abgespielt.
alias: "Benachrichtigung: Abfall"
description: ""
trigger:
- platform: state
entity_id:
- sensor.bioabfall
to: "1"
for:
hours: 7
minutes: 30
seconds: 0
id: bio
- platform: state
entity_id:
- sensor.altpapier
to: "1"
for:
hours: 7
minutes: 30
seconds: 0
id: altpapier
- platform: state
entity_id:
- sensor.gelbersack
to: "1"
for:
hours: 7
minutes: 30
seconds: 0
id: gelbersack
- platform: state
entity_id:
- sensor.restmuell
to: "1"
for:
hours: 7
minutes: 30
seconds: 0
id: rest
- platform: state
entity_id:
- sensor.bioabfall
to: "1"
for:
hours: 18
minutes: 30
seconds: 0
id: bio
- platform: state
entity_id:
- sensor.altpapier
to: "1"
for:
hours: 18
minutes: 30
seconds: 0
id: altpapier
- platform: state
entity_id:
- sensor.gelbersack
to: "1"
for:
hours: 18
minutes: 30
seconds: 0
id: gelbersack
- platform: state
entity_id:
- sensor.restmuell
to: "1"
for:
hours: 18
minutes: 30
seconds: 0
id: rest
condition: []
action:
- alias: Abfall
choose:
- conditions:
- condition: trigger
id: bio
sequence:
- service: tts.cloud_say
data:
cache: false
entity_id: media_player.media_player_all
message: Bitte Bioabfall raus stellen
- service: notify.mobile_app_udos_iphone
data:
message: Bitte Bioabfall raus stellen
title: Bioabfall
- conditions:
- condition: trigger
id: altpapier
sequence:
- service: tts.cloud_say
data:
cache: false
entity_id: media_player.media_player_all
message: Bitte Altpapier raus stellen
- service: notify.mobile_app_udos_iphone
data:
message: Bitte Altpapier raus stellen
title: Altpapier
- conditions:
- condition: trigger
id: gelbersack
sequence:
- service: tts.cloud_say
data:
cache: false
entity_id: media_player.media_player_all
message: Bitte Gelber Sack raus stellen
- service: notify.mobile_app_udos_iphone
data:
message: Bitte Gelber Sack raus stellen
title: Gelber Sack
- conditions:
- condition: trigger
id: rest
sequence:
- service: tts.cloud_say
data:
cache: false
entity_id: media_player.media_player_all
message: Bitte Restabfall raus stellen
- service: notify.mobile_app_udos_iphone
data:
message: Bitte Restabfall raus stellen
title: Restabfall
mode: restart
Fazit
Mit diesen Einstellungen nutze ich die Waste Collection Schedule Integration seit 2 Jahren. Wenn du noch Fragen oder Vorschläge zur Optimierung hast schreibe gerne einen Kommentar.
Ansonsten viel Spaß bei der Umsetzung!
Hinweis: der Abschnitt mit homeassistant -> customize stimmt nicht mit dem gesetzten alias in der waste config überein.
Die Entität sensor.abfallaltpapier heißt nach deinem Beispiel sensor.altpapier und so greift das Beispiel hier im Blog nicht ;).
Noch eine Frage:
Hast du eine Idee wie man es lösen kann, wenn an einem Tag mehrere Tonnen abgeholt werden das man die Nachricht nur einmal sendet und nicht für jede Tonne einzelnd?
Also würde der Text dann „Bitte Gelber Sack und Altpapier raus stellen“ sein.
Danke für den Hinweis! Habe es korrigiert. Bzgl. der Ausgabe zweier Tonnen denke ich spontan an eine IF-Abfrage bezogen auf das Attribut daysTo eines jeden Abfallsensors. Wenn daysto = 1 dann sensor.x und sensor.y so in der Art.
VG Udo
ich habs endlich hinbekommen und das sogar mit nur einem Test Helfer (NaechsteAbholung)… man was eine schwere Geburt, weil man fast ausschließlich mit Templates arbeiten muss ;).
Es sind zwei Zeit Trigger enthalten, für 12 Uhr und um 21 Uhr die Erinnerung am gleichen Tag.
Es werden alle 4 Abfalltypen nach einander abgefragt und ein passender Text Baustein daraus gebaut.
Dieser wird mir dann per Telegram gesendet.
Hier mein YAML Code dazu inklusive sinnvollen Titeln/alias der Abschnitte…
https://pastebin.com/dTmzCKNC
Kannst du gerne in deinem Blog/Video einbauen, wenn du möchtest 😉
Hi,
super! Bin sehr dankbar, wenn sich durch solche Videos der Code als auch die Ideen weiter entwickeln. Werde den Code in den Beitrag übernehmen. Nutzen können wir ihn leider nicht, weil wir keine Tage haben an denen zwei Tonnen raus müssen. Aber wie soft in D macht hier jede Region Ihre eigene Suppe.
Für eine sortierte Ausgabe kann custom:auto-entities genutzt werden.
Für die Wochentage ist folgender Code hilfreich:
{{%- set days = [„Sonntag“, „Montag“, „Dienstag“, „Mittwoch“, „Donnerstag“, „Freitag“, „Samstag“] %}
{%- set ts = states.sensor.naechster.attributes | first | as_timestamp %}
{%- set weekday = days[ ts | timestamp_custom(„%w“) | int] %}
{{ states.sensor.naechster.attributes.values() | first |
replace(„altpapier“, „Papiertonne“) | replace(„gelbersack“, „Gelber Sack“) |
replace(„restabfall“, „Restmüll“) | replace(„bioabfall“, „Biotonne“) }}:
{{ ts | timestamp_custom(weekday~“, %d.%m.%Y“)}}
Vielen Dank für den Tipp und den Code! Habe ihn übernommen und oben im Beitrag ergänzt. Die Sortierung mit auto-entities klappt bis jetzt noch nicht. Sollte das, wie oben im Code zu sehen, in einem Vertical Stack funktionieren?
Mir ist auch noch nicht klar, wie ich das in Kombination mit den Bildelemente Karten für die Tonnen hin bekomme?
Eine relativ einfache Sortierung könnte wie folgt aussehen:
type: custom:auto-entities
card:
type: custom:layout-card
layout_type: custom:horizontal-layout
layout:
max_width: null
max_cols: null
filter:
include:
– entity_id: sensor.restabfall
options: {}
– entity_id: sensor.gelber_sack
options: {}
– entity_id: sensor.altpapier
options: {}
sort:
method: state
ignore_case: true
numeric: true
reverse: false
Über options: kann dann nach Wunsch und Geschmack noch eine Formatierung der Cards erfolgen.
Vielen Dank für das Beispiel! Das hilft und freut sicherlich alle, die hier mitlesen.
Hi, danke für deinen Beitrag, hatte schon mal so was versucht mit Hilfe eines Beitrages aus Österreich, das passte aber nicht so richtig zu meinen System. Deins aber klappe nach etwas hin und her sehr gut.
Kann ich die Schriftfarbe unter denn Tonnen eigentlich ändern ?
Übrigens schöne Bilder dafür gibt es hier : https://github.com/MaxxKra/Abfallerinnerung/tree/main/Bilder vom dem Österreichischem Kollegen.
Hallo Michael,
vielen Dank für dein Feedback, was mich sehr freut. Die Textfarbe kannst Du mit dem Attribut Color ändern, wie zum Beispiel:
styles:
name:
- color: blue
Bitte auf die Einrückungen achten. Immer zwei nach rechts für jedes Attribut unterhalb Styles. Das lässt sich hier im Kommentar nicht richtig abbilden.
Viele Grüße
Udo
Hi Udo,
danke für die Antwort, hat geklappt. Ja das kann manchmal echt knifflig sein mit denn zb. Leerstellen !
Weiß Du ob man die Anzeige wie „3 Tage“ auch farblich anpassen kann ?
MfG Michael
Hi Michael, das geht mit dem gleichen Attribut „color“ im jeweiligen Abschnitt zu den Tagen.
Mich würde mal Interresieren wie ich das nun für die MyMüll geschichte umbaue da man da nur IDS raussuchen kann. Wie z.b hier erklärt ( https://www.mariotti.de/abfallkalender-in-home-assistant-einrichten-mit-mymuell-als-datenquelle/ ) das Funktioniert aber das was du gemacht hast gefällt mir besser und ist schöner nur ich bekomme es mit MyMüll nicht zum laufen.
Naja, die von dir verlinkte URL nutzt die Integration für MyMüll.de, wie sie hier beschreiben ist: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/jumomind_de.md
Ist dann einfach eine andere Quellenart gegenüber einer ICS Datei oder einer URL. Sobald du dann die Sensoren hast unterscheiden sich die Schritte für die Dashboard Integration nicht mehr.
Genau darin liegt mein Problem ich bekomme nur den Sensor „next_collection“ via API eingebunden.
Liefert dein Kalender denn mehr als den „next_collection“ Sensor?
scheinbar leider nicht
Dann ist ein Workarround evt. mit den Attributen des „next_collection“ Sensor zu arbeiten. Werden dir die unterschiedlichen Müllarten als Attribute angezeigt? Das findet über den Sensor in den Entwicklerwerkzeugen heraus.
Leider nicht ein Sensor wo anzeigt welche Art in wv tagen geholt wird.
Wo gibts den die Bilder der Tonnen?
Da findest über die Suche im Netz einiges.
Hab soweit alles hinbekommen, bekomm das nur mit dem Dashboard nicht hin. Kannst du das ggfls. kurz beschreiben. Danke:)
Der Blogpost beinhaltet alle YAML Files, die ich verwende. Du musst lediglich die Entitäten durch deine ersetzen. Kannst du genauer beschreiben, was du nicht hin bekommst?
Hallo , ich bekomme die Mülltonnen als Bilder nicht angezeigt .
In welchem Format muss man die einbinden?
Hallo Burkhard, das Format, welches ich nutze, ist .webp
Viele Grüße,
Udo