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: 0