Homelab, Linux, JS & ABAP (~˘▾˘)~
 

[Home Assistent] AWSH Müllabfuhrtermine einbinden

HACS Integration: https://github.com/mampfes/hacs_waste_collection_schedule

Die Integration bietet eine custom component für die AWSH. Nach Angabe von Ort und Straße bekommt man hier für alle Abfallbehälterarten die entsprechenden Termine zurück. Man muss daher noch die relevanten für sich heraussuchen. Diese kann man unter customize dann angeben und zusätzlich mit einem alias und einem icon versehen.

# Waste Collection Schedule
waste_collection_schedule:
  sources:
    # Integrated Service Provider for AWSH
    - name: awsh_de
      args:
        city: Ammersbek
        street: Frahmredder
      customize:
        # my waste types I ordered
        - type: Restabfall 40L-240L(2-wöchentlich)
          alias: restabfall
          icon: mdi:trash-can          
        - type: Bioabfall(2-wöchentlich)
          alias: bioabfall
          icon: mdi:leaf-circle
        - type: Wertstoff/LVP(2-wöchentlich)
          alias: wertstoff
          icon: mdi:recycle
        - type: Papiertonne(monatlich)
          alias: papier
          icon: mdi:trash-can

Alternativ bekommt man hier den Link zu einer .ics Kalenderdatei. Man kann vorher die für sich relevanten Abfallbehälter auswählen. Die .ics kann ebenfalls direkt eingebunden werden (siehe hier)

# Waste Collection Schedule
waste_collection_schedule:
  sources:
    # ICS
    - name: ics
      args:
        url: https://www.awsh.de/api_v2/collection_dates/1/ort/XXX/strasse/XXX/hausnummern/0/abfallarten/R02-B02-D02-P04/kalender.ics

Nach einem Reboot kann man nun im Home Assistant Kalender seine Abholtermine einsehen.

Im nächsten Schritt definiert man sich noch seine Sensoren je Abfallart.

sensor:
  - platform: waste_collection_schedule
    name: Restabfall
    value_template: 'in {{value.daysTo}} Tag(en)'
    types:
      - restabfall
  - platform: waste_collection_schedule
    name: Bio
    value_template: 'in {{value.daysTo}} Tag(en)'
    types:
      - bioabfall
  - platform: waste_collection_schedule
    name: Wertstoff
    value_template: 'in {{value.daysTo}} Tag(en)'
    types:
      - wertstoff
  - platform: waste_collection_schedule
    name: Papier
    value_template: 'in {{value.daysTo}} Tag(en)'
    types:
      - papier  

Die Sensoren kann man dann zu seinem Dashboard hinzufügen und bei Bedarf auch noch umbenennen. So sieht es bei mir dann aus:

Button-card

Für eine Button-card habe ich mir noch einen weiteren Sensor angelegt. Diesem Sensor einfach alle Abfallarten zuordnen.

  # Used with custom:button-card
  - platform: waste_collection_schedule
    name: wasteButton
    count: 4
    value_template: '{{value.types|join(", ")}}|{{value.daysTo}}|{{value.date.strftime("%d.%m.%Y")}}|{{value.date.strftime("%a")}}'
    types:
      - Restabfall
      - Bioabfall
      - Wertstoff
      - Papier

Die Button-card dann noch befüllen mit:

type: custom:button-card
entity: sensor.wastebutton
layout: icon_name_state2nd
show_label: true
label: |
  [[[
    var days_to = entity.state.split("|")[1]
    if (days_to == 0)
    { return "War heute" }
    else if (days_to == 1)
    { return "Heute Abend raus" }
    else
    { return "in " + days_to + " Tagen" }
  ]]]
show_name: true
name: |
  [[[
    return entity.state.split("|")[0]
  ]]]
state:
  - color: red
    operator: template
    value: '[[[ return entity.state.split("|")[1] == 0 ]]]'
  - color: orange
    operator: template
    value: '[[[ return entity.state.split("|")[1] == 1 ]]]'
  - value: default

Benachrichtigung

Um immer die Anzahl der Tage bis zum nächsten Abholtermin zu kennen, am besten noch einen weiteren Sensor anlegen und diesem wieder alle Abfallarten zuordnen.

  # Sensor for upcoming waste. Used in my reminder automation
  - platform: waste_collection_schedule
    name: upcomingWaste
    value_template: "{{value.daysTo}}"
    types:
      - Restabfall
      - Bioabfall
      - Wertstoff
      - Papier

Dieser kann dann in einer Erinnerungsautomatisierung verwendet werden, welche z.b. eine Notification am Vortag um 19Uhr verschickt.

alias: Abfall Erinnerung
description: ""
trigger:
  - platform: time
    at: "19:00:00"
condition:
  - condition: state
    state: "1"
    entity_id: sensor.upcomingwaste
action:
  - service: notify.family
    data:
      message: >-
        Müll rausbringen: {{ states.sensor.upcomingwaste.attributes.values() |
        first | 
        replace("restabfall","Restmüll") |
        replace("wertstoff","Wertstoff") |  
        replace("bio","Bio") |
        replace("papier","Papier") }}
      data:
        actions:
          - action: YES_TRASHCAN_IS_OUTSIDE
            title: Ja, ist rausgestellt!
        tag: trashcan_done
mode: single

Die Notification beinhaltet eine Bestätigungsmöglichkeit. Hat jemand die Tonne herausgestellt, kann dieser darüber dies einfach kurz bestätigen und mit einer zweiten Automatisierung kann man die Benachrichtigung dann bei anderen verschwinden lassen. Mehr dazu hier.

alias: Abfall Erinnerung - cleared
description: ""
trigger:
  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: YES_TRASHCAN_IS_OUTSIDE
condition: []
action:
  - service: notify.family
    data:
      message: clear_notification
      data:
        tag: trashcan_done
mode: single

Karte für das Dashboard

Ein tolles Beispiel für eine schöne Dashboard-Karte findet man hier.

Dafür müssen jedoch noch ein paar weitere Sensoren hinzugefügt werden, wie es hier ebenfalls beschrieben ist.

Update 14.08.2025: Mittlerweile nutze ich zusätzlich die Trash-card, die ich mir am Vortag dynamisch anzeigen lasse, wenn der Sensor upcomingwaste kleiner 2 ist.

event_grouping: true
drop_todayevents_from: "10:00:00"
next_days: 34
pattern:
  - type: others
  - pattern: Bioabfall
    icon: mdi:flower
    label: Bio
    color: brown
    type: organic
  - pattern: Wertstoff
    icon: mdi:recycle
    color: amber
    label: Wertstoff
    type: recycle
  - pattern: Restabfall
    label: Restmüll
    icon: mdi:trash-can
    color: disabled
    type: waste
    pattern_exact: true
  - label: Papier
    icon: mdi:tree
    color: blue
    pattern: Papier
    type: paper
    pattern_exact: true
day_style: counter
alignment_style: left
color_mode: icon
items_per_row: 4
refresh_rate: 60
with_label: true
layout: vertical
type: custom:trash-card
use_summary: false
fill_container: false
filter_events: true
full_size: false
entities:
  - calendar.awsh
hide_time_range: false
visibility:
  - condition: numeric_state
    entity: sensor.upcomingwaste
    below: 2

6 Comments

  1. DerHerbert

    Hallo,
    coole Sache mit dem Abfallkalender. Die Dashboardkarte und die Sensoren gefallen sehr gut, daher wollte ich sie nachbauen. Leider sind die Links zu [https://crydteam.gitbook.io/..] tot.
    Schade.

  2. Lars

    Moin,

    leider gibt es seit. gestern wohl Problem… Habe schon alles probiert mehrfach neu installiert.. Aber immer die Fehlermeldung:

    Error while setting up waste_collection_schedule platform for sensor
    Traceback (most recent call last):
    File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 366, in _async_setup_platform
    await asyncio.shield(awaitable)
    File “/config/custom_components/waste_collection_schedule/sensor.py”, line 147, in async_setup_platform
    raise ValueError(
    f”source_index {i} out of range (0-{len(api.shells) – 1}) please check your sensor configuration”
    )
    ValueError: source_index 0 out of range (0–1) please check your sensor configuration

  3. Lars

    bzw…. die erste Fehlermeldung:

    Logger: custom_components.waste_collection_schedule.waste_collection_schedule.source_shell
    Quelle: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:226
    Integration: Waste Collection Schedule (Dokumentation)
    Erstmals aufgetreten: 14:16:24 (1 Vorkommnisse)
    Zuletzt protokolliert: 14:16:24

    error loading source awsh_de: No module named ‘icalendar.windows_to_olson’ Traceback (most recent call last): File “/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py”, line 217, in create source_module: SourceModule = importlib.import_module( ~~~~~~~~~~~~~~~~~~~~~~~^ f”waste_collection_schedule.source.{source_name}” ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File “/usr/src/homeassistant/homeassistant/util/loop.py”, line 200, in protected_loop_func return func(*args, **kwargs) File “/usr/local/lib/python3.13/importlib/__init__.py”, line 88, in import_module return _bootstrap._gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “”, line 1387, in _gcd_import File “”, line 1360, in _find_and_load File “”, line 1331, in _find_and_load_unlocked File “”, line 935, in _load_unlocked File “”, line 1026, in exec_module File “”, line 488, in _call_with_frames_removed File “/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/awsh_de.py”, line 9, in from waste_collection_schedule.service.ICS import ICS File “/config/custom_components/waste_collection_schedule/waste_collection_schedule/service/ICS.py”, line 7, in from icalevents import icalevents File “/usr/local/lib/python3.13/site-packages/icalevents/icalevents.py”, line 3, in from .icalparser import parse_events, Event File “/usr/local/lib/python3.13/site-packages/icalevents/icalparser.py”, line 18, in from icalendar.windows_to_olson import WINDOWS_TO_OLSON ModuleNotFoundError: No module named ‘icalendar.windows_to_olson’

  4. Jürgen

    Tolles Beispiel: solange ich ort und strasse (Ammersbek) übernehme bekomme ich Ergebnisse.
    Mit “Siebenbäumen” und “Dorfstr.” bleibt der Kallender leer. Auch mit 118 für Ort und 80 für Strasse komme ich nicht weiter.

    1. nocin

      Hi Jürgen,

      der Blogbeitrag ist ja schon etwas älter, mittlerweile geht die Konfiguration ja recht bequem via Dialog und nicht mehr per Editor.
      Habe es grade mal getestet und bei mir klappt es für “Siebenbäumen” und “Dorfstr.”. Jedoch, nur wenn ich die Werte über das Dropdown Feld auswähle, also nicht händisch eingebe.

      Getestet mit Waste Collection Schedule in der Version 2.9.0.

      Gruß, Nico

Leave a Reply

Your email address will not be published. Required fields are marked *