Müllkalender

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)

 

Download
markdown.txt
HTML Dokument 1.8 KB

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') }}"
Kommentare: 17
  • #17

    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

  • #16

    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

  • #15

    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!

  • #14

    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

  • #13

    Ingo (Sonntag, 19 November 2023)

    Tobias, zu 99 % ist die ics fehlerhaft.
    Such dir mal einen online ics syntax checker

  • #12

    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"

  • #11

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

  • #10

    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

  • #9

    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" ? ;)

  • #8

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

  • #7

    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

  • #6

    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 ?

  • #5

    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

  • #4

    Tom (Montag, 06 Juni 2022 20:23)

    Hi Ingo,

    vielen dank für den äußerst brauchbaren Content, funktioniert super.

    Mach weiter so ;)

  • #3

    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.

  • #2

    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.

  • #1

    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