Hallo zusammen ![]()
ich habe mir gerade eine Lösung für meine Mülltonnen-Erinnerung erstellt und verabschiede mich jetzt (wie auch @olli) von der Integration "Waste Collection Schedule) ![]()
Meine Lösung ist anders als die vom @olli und zeigt mir die Daten genau wie vorher mit „Waste Collection Schedule“ an… nur noch etwas besser, da die „nächste Abholung“ jetzt auch noch die entsprechende Tonne anzeigt ![]()
Ansicht auf dem Dashboard:
Unter der Karte „Nächste Abholung“ sind die Karten für jede Tonne angelegt und diese wird nur angezeigt, wenn die Tage > -1 und < 2 ist.
Die Umsetzung:
Vorbereitung:
-
es muss ein lokaler Kalender wie von @olli hier beschrieben mit dem Namen „Abfuhrkalender“ erstellt werden
- mit den Daten aus einem ICS-Kalender
- mit einem leeren Kalender, in dem die Tonnen entsprechend händisch eingetragen werden
-
es müssen für die einzelnen Tonnen jeweils ein Template-Sensor angelegt werden.
Die Template-Sensoren sind bei mir in einer eigenen erstellten Datei mit dem Namen „templates.yaml“ definiert. Diese Datei muss dafür noch in der „configuration.yaml“ wie folgt eingebunden werden:
template: !include templates.yaml
Der folgende Block wird in dieser Datei „templates.yaml“ hinzugefügt
###############################
### Müllabfuhrtermine - Anfang
###############################
###############################
### nächste Abholung
###############################
- trigger:
- platform: time_pattern
# hours: "0"
# minutes: "0"
minutes: "/1"
action:
- service: calendar.get_events
target:
entity_id: calendar.abfuhrkalender
data:
duration:
days: 31
response_variable: kalender
sensor:
- name: "Müllabfuhr: Tage bis nächste Abholung"
unique_id: mullabfuhr_tage_bis_naechste_abholung
unit_of_measurement: "Tag(e) - "
state: >
{% set events = kalender['calendar.abfuhrkalender'].events %}
{% if events | count > 0 %}
{{ ((as_datetime(events[0].start).date() - now().date()).days) }}
{% else %}
unknown
{% endif %}
attributes:
typ: >
{% set events = kalender['calendar.abfuhrkalender'].events %}
{% if events | count > 0 %}
{{ events[0].summary }}
{% else %}
unbekannt
{% endif %}
datum: >
{% set events = kalender['calendar.abfuhrkalender'].events %}
{% if events | count > 0 %}
{{ events[0].start }}
{% else %}
unknown
{% endif %}
###############################
### gelbe Tonne
###############################
- trigger:
- platform: time_pattern
# hours: "0"
# minutes: "0"
minutes: "/1"
action:
- service: calendar.get_events
target:
entity_id: calendar.abfuhrkalender
data:
duration:
days: 31
response_variable: abfuhrtermine
sensor:
- name: "Müllabfuhr: Tage bis gelbe Tonne"
unique_id: mullabfuhr_tage_bis_gelbe_tonne
unit_of_measurement: ""
state: >
{% set termin = abfuhrtermine['calendar.abfuhrkalender'].events
| selectattr('summary', 'eq', 'Wertstoff')
| list
| first %}
{% if termin %}
{{ ((as_datetime(termin.start) | as_local).date() - now().date()).days }}
{% else %}
unknown
{% endif %}
###############################
### Papier
###############################
- trigger:
- platform: time_pattern
# hours: "0"
# minutes: "0"
minutes: "/1"
action:
- service: calendar.get_events
target:
entity_id: calendar.abfuhrkalender
data:
duration:
days: 31
response_variable: abfuhrtermine
sensor:
- name: "Müllabfuhr: Tage bis Papiertonne"
unique_id: mullabfuhr_tage_bis_papiertonne
unit_of_measurement: ""
state: >
{% set termin = abfuhrtermine['calendar.abfuhrkalender'].events
| selectattr('summary', 'eq', 'Papier')
| list
| first %}
{% if termin %}
{{ ((as_datetime(termin.start) | as_local).date() - now().date()).days }}
{% else %}
unknown
{% endif %}
###############################
### Biotonne
###############################
- trigger:
- platform: time_pattern
# hours: "0"
# minutes: "0"
minutes: "/1"
action:
- service: calendar.get_events
target:
entity_id: calendar.abfuhrkalender
data:
duration:
days: 31
response_variable: abfuhrtermine
sensor:
- name: "Müllabfuhr: Tage bis Biotonne"
unique_id: mullabfuhr_tage_bis_biotonne
unit_of_measurement: ""
state: >
{% set termin = abfuhrtermine['calendar.abfuhrkalender'].events
| selectattr('summary', 'eq', 'Bioabfall')
| list
| first %}
{% if termin %}
{{ ((as_datetime(termin.start) | as_local).date() - now().date()).days }}
{% else %}
unknown
{% endif %}
###############################
### Restmüll
###############################
- trigger:
- platform: time_pattern
# hours: "0"
# minutes: "0"
minutes: "/1"
action:
- service: calendar.get_events
target:
entity_id: calendar.abfuhrkalender
data:
duration:
days: 31
response_variable: abfuhrtermine
sensor:
- name: "Müllabfuhr: Tage bis Restmüll"
unique_id: mullabfuhr_tage_bis_restmull
unit_of_measurement: ""
state: >
{% set termin = abfuhrtermine['calendar.abfuhrkalender'].events
| selectattr('summary', 'eq', 'Restabfall 4-wöchentlich')
| list
| first %}
{% if termin %}
{{ ((as_datetime(termin.start) | as_local).date() - now().date()).days }}
{% else %}
unknown
{% endif %}
###############################
### Problemstoffsammlung
###############################
- trigger:
- platform: time_pattern
# hours: "0"
# minutes: "0"
minutes: "/1"
action:
- service: calendar.get_events
target:
entity_id: calendar.abfuhrkalender
data:
duration:
days: 365
response_variable: abfuhrtermine
sensor:
- name: "Müllabfuhr: Tage bis Problemstoffsammlung"
unique_id: mullabfuhr_tage_bis_problemstoffsammlung
unit_of_measurement: ""
state: >
{% set termin = abfuhrtermine['calendar.abfuhrkalender'].events
| selectattr('summary', 'eq', 'Problemstoffsammlung')
| list
| first %}
{% if termin %}
{{ ((as_datetime(termin.start) | as_local).date() - now().date()).days }}
{% else %}
unknown
{% endif %}
###############################
### Müllabfuhrtermine - Ende
###############################
Sollten die Tonnen in Eurem Kalender anders angegeben sein, als bei mir, dann müsst Ihr in dem Block noch die Werte für die „Tonnen“ anpassen:
selectattr('summary', 'eq', 'Wertstoff')
(hier z.B. den für „Wertstoff“)
Update:
jetzt können die Template-Sensoren erstellt und befüllt werden:
→ Einstellungen → Entwicklerwerkzeuge → YAML → „Konfiguration prüfen“
wenn alles in Ordnung ist, dann können die Template-Entitäten neu geladen werden (geht schneller als Home Assistant neu zu starten):
→ Einstellungen → Entwicklerwerkzeuge → „YAML-Konfiguration neu laden“ und darunter „Template-Entitäten“
Die neuen Entitäten sollten jetzt unter → Einstellungen → Geräte & Dienste → „Entitäten“ sichtbar sein.
Direkt am Anfang sind die Werte der einzelnen Tonnen und der „Nächsten Abholung“ noch unbekannt, da diese Information noch nicht aus dem Kalender geholt worden sind!
In dem großen Block ist für jeden Template-Sensor folgendes angegeben:
# hours: "0"
# minutes: "0"
minutes: "/1"
Dadurch werden die Template-Sensoren jede Minute aktualisiert und somit solltest Du nach ca. 1 Minute die entsprechenden Daten in den Template-Sensoren sehen ![]()
sollte alles funktionieren, dann ersetze die Bereiche wie folgt:
hours: "0"
minutes: "0"
# minutes: "/1"
damit die Template-Sensoren jeden Tag um 00:00 Uhr aktualisiert werden.
Update: Jetzt nochmal wie oben "Konfiguration prüfen und Template-Entitäten neu laden
Ich hoffe diese 1. Variante ist nachvollziehbar und ich habe nichts vergessen zu beschreiben und würde mich sehr über Eure Rückmeldungen freuen ![]()
Bitte entschuldigt im Voraus, wenn ich diesen Beitrag ggf. öfter anpasse, da ich es hier auf einem Tablet beschreibe und da ist es nicht so übersichtlich und ggf. müssen auch noch Anpassungen gemacht werden…
VG Micha
PS: die Integration „Waste Collection Schedule“ habe ich bereits entfernt und bin wieder eine Integration mit Internet-Anbindung los ![]()


