Ich bin schon seit einiger Zeit dran, die Mülltermine in Home Assistant zu bekommen. Doch irgendwie hat das nie geklappt. Nun habe ich mich doch nochmal mit dem Thema beschäftigt.
Grundlage ist das im HACS zu bekommene hacs_waste_collection_schedule
Grundsätzlich ein schönes Teil, doch irgendwie kompliziert einzurichten.
Prinzipiell kann er nämlich verscheidene Online Dienste abfragen. In meinem Fall wäre das MyMüll gewesen.
Also brav mit:
https://mymuell.jumomind.com/mmapp/loxone/lox.php?r=cities
die Stadt herausgesucht und mit :
https://mymuell.jumomind.com/mmapp/api.php?r=streets&city_id=50669 dann die Straße.
Am Ende kann man sich die Daten in Rohform anschauen :
https://mymuell.jumomind.com/mmapp/api.php?r=dates&city_id=50669&area_id=902
[{"id":"103977888","title":"Restm\u00fcll 4-w\u00f6chentl","trash_name":"RAT_REST4W","day":"2021-10-22","description":"","color":"2F4F4F"},{"id":"103977869","title":"Restm\u00fcll 14-t\u00e4gig","trash_name":"RAT_REST14","day":"2021-10-22","description":"","color":"2F4F4F"},{"id":"103977893","title":"Restm\u00fcllcontainer 14-t\u00e4gl.","trash_name":"RAT_R_CONT14","day":"2021-10-22","description":"","color":"2F4F4F"},{"id":"103977793","title":"Biotonne","trash_name":"RAT_BIO","day":"2021-10-22","description":"","color":"cc9933"},{"id":"103977932","title":"Restm\u00fcllcontainer w\u00f6chentl.","trash_name":"RAT_R_CONT_W","day":"2021-10-22","description":"","color":"2F4F4F"},{"id":"103977829","title":"Gelbe Tonne \/ S\u00e4cke","trash_name":"RAT_GELB","day":"2021-10-28","description":"","color":"f0f500"},{"id":"103977931","title":"Restm\u00fcllcontainer w\u00f6chentl.","trash_name":"RAT_R_CONT_W","day":"2021-10-29","description":"","color":"2F4F4F"},{"id":"103977817","title":"Blaue Tonne","trash_name":"RAT_BLAU","day":"2021-11-04","description":"","color":"079dfd"},{"id":"103977964","title":"Restm\u00fcllcontainer w\u00f6chentl.","trash_name":"RAT_R_CONT_W","day":"2021-11-06","description":"","color":"2F4F4F"},{"id":"103977894","title":"Restm\u00fcllcontainer 14-t\u00e4gl.","trash_name":"RAT_R_CONT14","day":"2021-11-06","description":"","color":"2F4F4F"},{"id":"103977868","title":"Restm\u00fcll 14-
Der Eintrag in der configuration.yaml hätte dann so ausgesehen:
waste_collection_schedule:
sources:
- name: jumomind_de
args:
service_id: mymuell
city_id: 50669
area_id: 902
Klappt aber nicht!
Nach stundenlanger Recherche bin ich dann auf das Video von Daniel von smarthomeyourself gestoßen, der die Einbindung mittels ICS Datei erklärt.
Eigentlich stellt nämlich jede Kommune die Abfall Termine im ICalender (ICS) Format bereit. Klar muss man die am Jahresanfang importieren, aber dann hat man auch Ruhe.
Hier also das Video, aber wie immer stellt das Video wieder einige Fragen auf, und ich bleibe meiner Linie treu, nicht das gleiche zu erklären, sondern zu präsentieren, wie ich es gemacht habe.
Unter dem Video gehts also weiter mit meinen persönlichen Erfahrungen.
Einrichtung:
Basierend des Videos also die ICS Datei bei meiner Stadt geholt und im /config/www Verzeichnis in HA geladen.
Hier also mein Eintrag in der configuration.yaml:
waste_collection_schedule:
sources:
- name: ics
args:
file: "www/Abfallkalender.ics"
customize:
- type: Biotonne
alias: BioTonne
icon: mdi:flower-outline
- type: Gelber Sack
alias: GelberSack
icon: mdi:recycle
- type: Restmüll 14-täg.
alias: Restmuell
icon: mdi:trash-can
- type: Blaue Tonne
alias: PapierTonne
icon: mdi:trash-can-outline
- type: Restmüll 4-wöchtl.
show: false
Restmüll 4-wöchtl. habe ich in meiner Config ausgeblendet, denn meine Restmülltonne wird alle 2 Wochen geleert.
Weiterhin hab ich mir ein paar eigene Icons ausgesucht. Zur Erinnerung, die gibts HIER
Weiter geht es wie beschrieben mit den Sensoren. Auch hier habe ich einen anderen Weg gewählt. Hintergrund sind die Value Templates.
Value Templates benutzt man, wenn man den Wert des Sensors in einem anderen Format haben möchte, als er geliefert wird. Nähere Infos, für den, dem es interessiert gibt es HIER. Es gibt bestimmt einen schickeren Weg, aber ich habe einfach mehrere Sensoren der gleichen Quelle gebaut, dann aber mit verschiedenen Templates. Hier also meine sensors.yaml
# Müll Temrine
- platform: waste_collection_schedule
name: AbfallRestmuell
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- Restmuell
- platform: waste_collection_schedule
name: AbfallPapierTonne
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- PapierTonne
- platform: waste_collection_schedule
name: AbfallGelberSack
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- GelberSack
- platform: waste_collection_schedule
name: AbfallBiotonne
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- BioTonne
- platform: waste_collection_schedule
name: AbfallRestmuellnext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- Restmuell
- platform: waste_collection_schedule
name: AbfallPapierTonnenext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- PapierTonne
- platform: waste_collection_schedule
name: AbfallGelberSacknext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- GelberSack
- platform: waste_collection_schedule
name: AbfallBiotonnenext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- BioTonne
- platform: waste_collection_schedule
name: AbfallNaechster
details_format: "upcoming"
value_template: ' {{ value.daysTo }} '
Anzeige:
Nun muss der Kram natürlich angezeigt werden. Im Video gibts da ja auch verschiedene Ansätze. Er benutzt die GUI zur Erstellung, aber ich als alter Programmierer bevorzuge die YAML Methode, daher hier die Umsetzung aus dem Video im Lovelance YAML Mode:
ui-lovelance.yaml
- type: entities
title: nächste Müll Abholung
entities:
- entity: sensor.abfallrestmuell
name: Restmüll
- entity: sensor.abfallbiotonne
name: Biotonne
- entity: sensor.abfallgelbersack
name: Gelber Sack
- entity: sensor.abfallpapiertonne
name: Blaue Tonne
Wie oben beschrieben habe ich einfach einen zweiten Sensor gebaut um via Value Template an das Datum zu kommen.
ui-lovelance.yaml
- type: entities
title: Abfallkalender
entities:
- entity: sensor.abfallbiotonnenext
name: Biotonne
- entity: sensor.abfallgelbersacknext
name: Gelber Sack
- entity: sensor.abfallrestmuellnext
name: Restmüll
- entity: sensor.abfallpapiertonnenext
name: Blaue Tonne
Die Markdown Card kannte ich persönlich noch garnicht. Ist aber ne coole Sache html Inhalte anzuzeigen. Ich hab das Beispiel aus dem Video auch einwenig ausprobiert. Hier das Resultat.
Da es sich nunmal um html Code handelt wird er hier auf der Webseite auch interpetiert.
Daher der Code als Bild und weiter unten als Download (Text Datei)
Was im Video jetzt nicht so rüber kam, ist dass die Termine auch im Kalender angezeigt werden:
Zum Schluss fehlen jetzt natürlich noch die Benachrichtigungen. wir wollen ja wissen, wann wir den Müll raus stellen wollen. Um wieder an den "Raw" Wert des Sensors zu kommen hat mein "abfallnaechster" Sensor kein value Template.
Da meine Frau und ich beide die HA App auf dem Handy haben nutzen wir natürlich auch das leicht zu konfigurierende Benachrichtigungssystem der App.
Hier halte ich mich ans Video und prüfe um 17.00 Uhr ob morgen Müll rausgestellt werden muss.
Das Thema wurde zwar im Video erklärt, wie aber der komplette Code ausschaut bekommt ihr bei mir :-)
Weiterhin ist der Vorteil des YAML Modes gegenüber der GUI Variante im Video, dass man hier sehr wohl value Templates benutzen kann um den Text umzuformatieren.
automations.yaml
- alias: Müll Rausstellen
trigger:
platform: time
at: '17:00:00'
condition:
- condition: numeric_state
entity_id: sensor.abfallnaechster
below: 2
action:
- service: notify.mobile_app_ingo_s21
data:
message: "Müll rausstellen {{ states.sensor.abfallnaechster.attributes.values() | first | replace('papiertonne', 'Papiermüll') | replace('gelbersack', 'Gelber Sack') | replace('restmuell', 'Restmüll') }}"
- service: notify.mobile_app_heike_s21
data:
message: "Müll rausstellen {{ states.sensor.abfallnaechster.attributes.values() | first | replace('papiertonne', 'Papiermüll') | replace('gelbersack', 'Gelber Sack') | replace('restmuell', 'Restmüll') }}"
Björn (Mittwoch, 13 März 2024 10:00)
Hallo zusammen,
erstmal vielen Dank für diese ausführliche beschreibung.
Bei uns gibt es für den Grünschnitt im Jahr mehrere Sammelstellen, ind der ICS stehen diese bei "description".
Wie kann ich mir zusätzlich zum abholdatum noch den Ort anzeigen lassen?
besten Dank schonmal
Ingo (Mittwoch, 06 März 2024 11:26)
Hallo Ben,
dann gibt es noch einen Syntax Fehler in der ICS Datei
Das kannst Du hier prüfen
https://icalendar.org/validator.html
Ben (Dienstag, 05 März 2024 16:40)
Hallo,
vielen Dank erstmal für die ausführliche Beschreibung...
Ich habe alles so eingefügt wie oben beschrieben, die Sensoren werden auch angelegt, allerdings alle mit "Unbekannt" - Status...
Ich habe den Kalender als .ics - Datei aus GoogleKalender in den www - Ordner eingefügt, sollte also auch passen.
Muss ich irgendwie die "Original -Wörter" (.zB. "Bioabfall") in die configuration.yaml oder die sensor.yaml einfügen, dass das Modul es erkennt und zuordnen kann?
Oder wo könnte noch der Fehler liegen?
Vielen Dank schonmal im Voraus!
Mirko (Freitag, 12 Januar 2024 22:42)
Vielen, vielen Dank für deinen tollen Beitrag. Ich teile noch meine Quellendefinition, vielleicht hilft sie einigen weiter, die ebenfalls einen privaten Google Calendar als Quelle nutzen wollen (und nicht die .ics lokal speichern & importieren). Ansonsten habe ich deine Sensoren mehr oder weniger übernommen und die Automatisierungen & Darstellung an mein Setup angepasst.
Ausgangssituation: Ich lade am Jahersanfang manuell die .ics von zwei lokalen Müllbetrieben (Stadtwerke für Papier/Bio/Restmüll & Privatunternehmen für Recycling) herunter und importiere sie gemeinsam in einen separaten Google Kalender. Diesen importiere ich dann in hacs_waste_collection_schedule für die geeignete Darstellung & vor allem Benachrichtigungen durch home assistant:
Den für euch einzufügenden Link gibts in den Einstellungen des Google Kalenders unter dem Eintrag 'Privatadresse im iCal Format'
waste_collection_schedule:
sources:
- name: ics
args:
url: https://calendar.google.com/calendar/ical/[...]/private-[...]/basic.ics
customize:
- type: Restabfall
icon: mdi:trash-can-outline
- type: Gelbe Tonne
icon: mdi:recycle
- type: Papier
icon: mdi:newspaper
- type: Biomüll
icon: mdi:flower-outline
Ingo (Sonntag, 19 November 2023)
Tobias, zu 99 % ist die ics fehlerhaft.
Such dir mal einen online ics syntax checker
Tobias (Sonntag, 19 November 2023 18:14)
Hallo,
bei mir werden in Entwickerwerkzeuge die Sensoren nicht angezeigt. Hab eigentlich alles so gemacht wie im Video beschrieben, ausser das ich alles in der configuration.yaml schreiben. Wo liegt mein Fehler?
template:
- sensor:
# Müll Temrine
- platform: waste_collection_schedule
name: AbfallRestmuell
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- Restmuell
- platform: waste_collection_schedule
name: AbfallPapierTonne
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- PapierTonne
- platform: waste_collection_schedule
name: AbfallGelberSack
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- GelberSack
- platform: waste_collection_schedule
name: AbfallBiotonne
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- BioTonne
- platform: waste_collection_schedule
name: AbfallRestmuellnext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- Restmuell
- platform: waste_collection_schedule
name: AbfallPapierTonnenext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- PapierTonne
- platform: waste_collection_schedule
name: AbfallGelberSacknext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- GelberSack
- platform: waste_collection_schedule
name: AbfallBiotonnenext
details_format: "upcoming"
value_template: 'am: {{value.date.strftime("%d.%m.%Y")}}'
types:
- BioTonne
- platform: waste_collection_schedule
name: AbfallNaechster
details_format: "upcoming"
value_template: ' {{ value.daysTo }} '
waste_collection_schedule:
sources:
- name: ics
args:
file: "www/Abfall2023.ics"
customize:
- type: Bioabfall 2-Rad Behaelter 02-woechentl.
alias: BioTonne
icon: mdi:flower-outline
- type: Gelbe Saecke
alias: GelberSack
icon: mdi:recycle
- type: Restabfall 2-Rad Behaelter 02-woechentl.
alias: Restmuell
icon: mdi:trash-can
- type: Papierabfuhr 2-Rad Behaelter 04-woechentl.
alias: PapierTonne
icon: mdi:trash-can-outline
fetch_time: "04:00"
day_switch_time: "10:00"
Mzone (Freitag, 09 Juni 2023 15:18)
Gibt es eine Möglichkeit die Termine nach Datum zu sortieren? Möchte den aktuellsten Sensor immer oben haben ...
mannebk (Sonntag, 05 Februar 2023 20:31)
thanks for the nice work
danke für die ausführliche anleitung, die yaml beispiele find ich total geil, weil copy paste ins notepad ++ alles mit suchen/ersetzten individualisieren und feuer frei auf die configuration.yaml
was cool wäre wäre noch ein beispiel für 2 abfragen und sensoren.... das is nämlich a bissele tricky.
das sieht dann als sensor so aus:
```
- platform: waste_collection_schedule
source_index: 1
name: AbfallPapierTonne
details_format: "upcoming"
value_template: '{% if value.daysTo == 0 %}Heute{% elif value.daysTo == 1 %}Morgen{% else %}in {{value.daysTo}} Tagen{% endif %}'
types:
- Papier
```
und die Danten-Abfrage über den Dienst sieht so aus:
```
waste_collection_schedule:
sources:
- name: awido_de
args:
customer: rmk
city: xx
street: xxstraße
housenumber: xx
customize:
- type: Biotonne
alias: Bio 1
icon: mdi:flower-outline
show: true
- type: Gelbe Tonne / Container
alias: Gelbe Tonne 1
icon: mdi:recycle
show: true
- type: Restmülltonne 2-wöchentliche Leerung
alias: Müll 1
icon: mdi:trash-can
show: true
- type: Papiertonne / Container
alias: Papier 1
icon: mdi:trash-can-outline
show: true
- type: Restmülltonne 4-wöchentliche Leerung
show: false
- type: Umweltmobil
show: false
- type: Grüngut
alias: Grüngut 1
icon: mdi:TreeOutline
show: true
calendar_title: Muell 1
- name: awido_de
args:
customer: rmk
city: Ort
street: XXstraße
housenumber: xx
customize:
- type: Biotonne
alias: Bio 2
icon: mdi:flower-outline
show: false
- type: Gelbe Tonne / Container
alias: Gelbe Tonne 2
icon: mdi:recycle
show: true
- type: Restmülltonne 2-wöchentliche Leerung
alias: Müll 2
icon: mdi:trash-can
show: true
- type: Papiertonne / Container
alias: Papier 2
icon: mdi:trash-can-outline
show: true
- type: Restmülltonne 4-wöchentliche Leerung
alias: Restmuell 2
icon: mdi:trash-can
show: false
- type: Umweltmobil
show: false
- type: Grüngut
alias: Grüngut2
icon: mdi:TreeOutline
show: false
calendar_title: Muell 2
```
der schlüssel ist der
source_index:
0 ist die erste datenquelle egal obs der gleiche oder nen anderer dienst oder ne ics datei is
1 die zweite.
cheers mannebk
Normy (Donnerstag, 05 Januar 2023 22:54)
Im Prinzip funktioniert es, aber in der Markdown-Card lässt sich kein HTML einbinden - obiges funktioniert nicht (mehr?) - Markdown ist kein HTML. Eine sinnvolle Alternative habe ich noch nicht gefunden.
Was sind "Mülltemrine" ? ;)
Michael (Freitag, 30 Dezember 2022 15:44)
Hi Ingo,
da ich (gleiche city_id wie du) alleine wegen der Unsicherheit, ob gelbe Tonne / gelber Sack in "unserem" Abfallkalender enthalten sein würden, mich auch für 2023 neu an den Müllkalender setzen musste, kann ich dir bestätigen, dass der Kommentar #5 (Andreas) zutrifft. MyMüll funktioniert nun direkt über die Integration. Lediglich die Customize-Alias-Ecke müsste angepasst werden um die anders beschriebenen Mülltypen wieder mit den Sensoren zu verknüpfen.
configuration.yaml:
waste_collection_schedule:
sources:
- name: jumomind_de
args:
service_id: mymuell
city_id: 50669
area_id: xxxx
customize:
- type: Biotonne
show: false
- type: Gelbe Tonne / Säcke
alias: GelberSack
icon: mdi:recycle
- type: Restmüll 14-tägig
alias: SchwarzeTonne
icon: mdi:trash-can
etc...
Roberto Cravallo (Freitag, 23 Dezember 2022 11:42)
Hi,
danke für die Erklärung und den Code. Hat bis gestern auch klasse funktioniert.
Kenne mich leider nicht gut genug aus, vermute aber, wenn in der ICS für einen Termin kein Datum mehr vorgesehen ist, steigt HA aus. Ich bekomme jedenfalls seit gestern nur noch eine graue Box ohne jeglichen Inhalt präsentiert.
ICS von 2023 importiert, HA neu gestartet und läuft wieder.....
Wie kann der Code optimiert werden, dass er bis zum 31.12. durchläuft?
LG aus MA
Jörg (Dienstag, 01 November 2022 14:49)
Da ich meine Sensoren nicht auslagern kann, würde ich den Code gerne in confic.yaml einfügen. bekomme aber immer eine Fehlermeldung.
Invalid config for [waste_collection_schedule]: [sensors] is an invalid option for [waste_collection_schedule]. Check: waste_collection_schedule->waste_collection_schedule->sources->0->sensors. (See /config/configuration.yaml, line 332).
Waste ist aber installiert - wo kann der Fehler sein ?
Andreas (Freitag, 23 September 2022 20:12)
Weil du oben geschrieben hast, dass es bei dir über MyMüell.de nicht funktioniert hat, ich habe es bei mir gerader erfolgreich hinbekommen, deine gezeigte Konfigurationsdatei passt, hab es genauso gemacht, nur halt die ID meiner Stadt eingetragen, und da bei uns der Termin nicht nach Straßen unterschieden wird, ist bei mir die city_id gleich der area_id, Beispiel:
waste_collection_schedule:
sources:
- name: jumomind_de
args:
service_id: mymuell
city_id: 1656
area_id: 1656
Tom (Montag, 06 Juni 2022 20:23)
Hi Ingo,
vielen dank für den äußerst brauchbaren Content, funktioniert super.
Mach weiter so ;)
DMI (Freitag, 01 April 2022 16:31)
Wie bekomme ich es hin, dass sich die Einträge unterhalb von "Weitere Termine" automatisch nach Datum sortieren. Also die Reihenfolge aktualisiert, dass die als nächstes abzuholende Müllart als oberster Listeneintrag über den in nächster Datumsreihenfolge steht? Weder die von SmartHome yourself-Variante noch sonstige im Internet nachzulesenden Varianten ändern dies in meiner Umgebung.
KsNero (Sonntag, 06 März 2022 08:15)
Ok hat sich erledigt.
Habe oben nicht gelesen, das die Integration "Waste Collection Schedule" installiert werden muss.
KsNero (Sonntag, 06 März 2022 07:59)
Hallo, ich bekomme immer eine Fehlermeldung.
Konfiguration fehlerhaft
Integration error: waste_collection_schedule - Integration 'waste_collection_schedule' not found.
Was mache ich falsch? Hab es so eingefügt wie oben beschrieben.
Gruß KsNero