Münchner Müllabfuhrkalender in Home Assistant integrieren

Münchner Müllabfuhrkalender in Home Assistant integrieren

Die Integration des Abfuhrkalenders der AWM München in den Home Assistant gestaltet sich etwas hakelig, ist aber machbar:

Zunächst muss im Home Assistant das Modul hacs_waste_collection_schedule aus dem HACS installiert werden.

Versucht man jetzt, das Modul über die UI einzurichten, zeigt es zwar eine lange Liste verschiedener Quellen für Abfuhrdaten, aber die Münchner AWM sind leider nicht dabei. Eine Integration kann man aber trotzdem über die Anbindung für iCal-Kalender-Dateien (*.ics) erreichen. Dazu sind nur einige Konfigurationseinstellungen nötig:

Zunächst einmal benötigt man den Link zum persönlichen Abfuhrkalender. Dazu füllt man auf der Webseite der AWM die Adresse aus, anschließend findet sich unten auf der Seite ein Link zum Download der Kalenderdatei. Mit einem Rechtsklick und “Link kopieren” kann man den Link ins Clipboard kopieren.

Link

Einrichtung der ICS Quelle für hacs_waste_collection_schedule

In config.yaml, der Hauptkonfigurationsdatei von Home Assistant, fügen wir jetzt unseren Kalender als Quelle hinzu. Unter url fügen wir den Link auf das Kalenderfile ein, den wir oben kopiert haben. Den cHash-Parameter entfernen wir vollständig, den Parameter mit der fixen Jahreszahl (&tx_awmabfuhrkalender_abfuhrkalender%5Byear%5D=2023) ersetzen wir durch den dynamischen Platzhalter {Y}:

waste_collection_schedule:
  sources:
    - name: ics
      args:
        url: "https://www.awm-muenchen.de/entsorgen/abfuhrkalender?tx_awmabfuhrkalender_abfuhrkalender%5Bhausnummer%5D=29&tx_awmabfuhrkalender_abfuhrkalender%5Bleerungszyklus%5D%5BB%5D=1%2F2%3BU&tx_awmabfuhrkalender_abfuhrkalender%5Bleerungszyklus%5D%5BP%5D=1%2F2%3BG&tx_awmabfuhrkalender_abfuhrkalender%5Bleerungszyklus%5D%5BR%5D=001%3BU&tx_awmabfuhrkalender_abfuhrkalender%5Bsection%5D=ics&tx_awmabfuhrkalender_abfuhrkalender%5Bsinglestandplatz%5D=false&tx_awmabfuhrkalender_abfuhrkalender%5Bstandplatzwahl%5D=true&tx_awmabfuhrkalender_abfuhrkalender%5Bstellplatz%5D%5Bbio%5D=70095855&tx_awmabfuhrkalender_abfuhrkalender%5Bstellplatz%5D%5Bpapier%5D=70095855&tx_awmabfuhrkalender_abfuhrkalender%5Bstellplatz%5D%5Brestmuell%5D=70095855&tx_awmabfuhrkalender_abfuhrkalender%5Bstrasse%5D=Georg-Brauchle-Ring&tx_awmabfuhrkalender_abfuhrkalender%5Byear%5D={%Y}"
        version: 1
        split_at: ', '
        regex: '(.*), Georg-Brauchle-Ring. 29'

Mit dem split_at-Attribut, können wir mehrere Einträge, die bei den AWM in einen einzigen Kalendereintrag zusammengefasst werden, in ihre einzelnen Bestandteile zerlegen. Da die AWM (unnötigerweise) bei jedem Eintrag in den Terminkalender die gewählte Adresse anhängt, müssen wir diese noch mit einem regulären Ausdruck (regex) entfernen (Hier für die Beispieladresse Georg-Brauchle-Ring. 29).

Sensoren

Jetzt müssen wir noch die Sensoren für Home Assistant anlegen, die die gewünschten Daten bereitstellen. In meinem Fall interessieren mich die Tage bis zur nächsten Leerung und der eingetragene Wochentag, also zwei Sensoren pro Tonne (Restmüll, Altpapier, Biomüll). Man könnte z.B. genauso gut mit value_template: '{{value.date.strftime("%d.%m.%Y")}}' das konkrete Datum der Leerung bereitstellen. Die redundante Generierung des Wochentags fühlt sich für mich falsch an, bisher habe ich aber noch keinen eleganteren Weg in Home Assistant gefunden.

# WCS Restmüll
- platform: waste_collection_schedule
  name: wcs_restmuell_days
  value_template: '{{value.daysTo}}'
  types:
    - Restmülltonne
- platform: waste_collection_schedule
  name: wcs_restmuell_weekday
  value_template: "{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][value.date.weekday()] }}"
  types:
    - Restmülltonne

# WCS Altpapier
- platform: waste_collection_schedule
  name: wcs_altpapier_days
  value_template: '{{value.daysTo}}'
  types:
    - Papiertonne
- platform: waste_collection_schedule
  name: wcs_altpapier_weekday
  value_template: "{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][value.date.weekday()] }}"
  types:
    - Papiertonne

# WCS Biomüll
- platform: waste_collection_schedule
  name: wcs_biomuell_days
  value_template: '{{value.daysTo}}'
  types:
    - Biotonne
- platform: waste_collection_schedule
  name: wcs_biomuell_weekday
  value_template: "{{ ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][value.date.weekday()] }}"
  types:
    - Biotonne

Darstellung in der Lovelace-UI

In meinem Falle reicht eine ganz einfache Darstellung der nächsten Termine:

Loverlace UI

Die habe ich mir ganz einfach mit dem sehr hilfreichen multiple-entity-row-Widget erstellt, das ich auch sonst schon bei vielen Gelegenheiten benutze:

type: entities
entities:
  - entity: sensor.wcs_restmuell_days
    type: custom:multiple-entity-row
    icon: mdi:delete-empty
    unit: Tage
    name: Restmüll
    entities:
      - entity: sensor.wcs_restmuell_weekday
        name: false
  - entity: sensor.wcs_altpapier_days
    type: custom:multiple-entity-row
    icon: mdi:note-multiple
    name: Altpapier
    unit: Tage
    entities:
      - entity: sensor.wcs_altpapier_weekday
        name: false
  - entity: sensor.wcs_biomuell_days
    type: custom:multiple-entity-row
    icon: mdi:leaf-circle
    name: Biomüll
    unit: Tage
    entities:
      - entity: sensor.wcs_biomuell_weekday
        name: false
© 2024 Tobias Henöckl