Waste Collection Abfallkalender in Home Assistant

  • Beitrags-Kommentare:21 Kommentare

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

Waste Collection Schedule HACS Integration

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.

Angebot
Aeotec Range Extender Zi | Zigbee Repeater | Reichweitenerhöhung | Zigbee | kompatibel mit Homey,...
127 Bewertungen
Aeotec Range Extender Zi | Zigbee Repeater | Reichweitenerhöhung | Zigbee | kompatibel mit Homey,...
  • 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.

Home Assistant Dashboard Anzeige Waste Collection Scheduler Abfallkalender

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

Angebot
Aeotec Range Extender Zi | Zigbee Repeater | Reichweitenerhöhung | Zigbee | kompatibel mit Homey,...
127 Bewertungen
Aeotec Range Extender Zi | Zigbee Repeater | Reichweitenerhöhung | Zigbee | kompatibel mit Homey,...
  • 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!

Dieser Beitrag hat 21 Kommentare

  1. TDCroPower

    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.

    1. Udo Berndt

      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

      1. TDCroPower

        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 😉

        1. Udo Berndt

          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.

  2. coasting24

    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“)}}

    1. Udo Berndt

      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?

      1. coasting24

        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.

        1. Udo Berndt

          Vielen Dank für das Beispiel! Das hilft und freut sicherlich alle, die hier mitlesen.

      2. Michael T.

        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.

        1. Udo Berndt

          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

          1. Michael T.

            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

          2. Udo Berndt

            Hi Michael, das geht mit dem gleichen Attribut „color“ im jeweiligen Abschnitt zu den Tagen.

  3. stoony

    Genau darin liegt mein Problem ich bekomme nur den Sensor „next_collection“ via API eingebunden.

    1. Udo Berndt

      Liefert dein Kalender denn mehr als den „next_collection“ Sensor?

        1. Udo Berndt

          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.

          1. stoony

            Leider nicht ein Sensor wo anzeigt welche Art in wv tagen geholt wird.

  4. Paul

    Wo gibts den die Bilder der Tonnen?

    1. Udo Berndt

      Da findest über die Suche im Netz einiges.

Schreibe einen Kommentar