Automation mit Abfallkalender

Klar geht es anders. :wink:
Du hast einen eigenen Kalender mit den Abfuhrterminen, richtig.
Wie sind diese organisiert? Als Ganztages Termin?
Und was genau möchtest Du erreichen?

Gruß
Osorkon

1 „Gefällt mir“

Hallo zusammen,

ich habe die Abholtermine manuell im lokale Kalender eingetragen und lasse mir die nächst Abholung auf dem Dashboard anzeigen:
müll-card

Der yaml-code dazu sieht so aus:

type: custom:vertical-stack-in-card
cards:
  - type: custom:mushroom-template-card
    primary: '{{state_attr("sensor.abfuhr", "Art")}}'
    secondary: |-
      {% set tage = states("sensor.abfuhr") %} {% if tage| int == 0 %}
        Heute
      {% elif tage| int == 1 %}
        Morgen
      {% else %}
        In {{tage}} Tagen
      {% endif %}
    icon: mdi:trash-can
    icon_color: >-
      {% set art = state_attr("sensor.abfuhr", "Art") %} {% if art == "Biomüll"
      %}
        green
      {% elif art == "Restmüll" %}
        dark-grey
      {% elif art == "Gelber Sack" %}
        yellow
      {% endif %}
    tap_action:
      action: none
    hold_action:
      action: none
    double_tap_action:
      action: none

In der configuration.yaml habe ich den “sensor.abfuhr” wie folgt angelegt:

    - name: "Abfuhr"
      state: >-
        {{((state_attr("calendar.abfuhrkalender", "start_time")| as_timestamp - today_at('00:00')| as_timestamp) / 86400) | int}}
      attributes:
        Art: >-
          {{state_attr("calendar.abfuhrkalender", "message")}}

Um alle Müllarten anzeigen zu lassen, müsste man glaube ich mit calendar.get_events arbeiten, allerdings weiß ich noch nicht so recht, ob/wie man hier die einzelnen Ereignisse rausfiltern bzw. als eigenen Sensor anlegen kann.

Mit calendar.get_events würde ich für die nächsten 21 Tage folgendes Ergebnis erhalten:

calendar.abfuhrkalender:
  events:
    - start: "2024-04-06"
      end: "2024-04-07"
      summary: Restmüll
      description: ""
    - start: "2024-04-12"
      end: "2024-04-13"
      summary: Biomüll
      description: ""
    - start: "2024-04-15"
      end: "2024-04-16"
      summary: Gelber Sack
      description: ""
    - start: "2024-04-19"
      end: "2024-04-20"
      summary: Restmüll
      description: ""

Der Befehl/Dienst würde wie folgt aussehen:

service: calendar.get_events
target:
  entity_id: calendar.abfuhrkalender
data:
  duration:
    days: 21
1 „Gefällt mir“

ja genau, ich habe einen eigenen Google Kalender mit den Abfallterminen.
und die stehen als Ganztages Termin im Kalender

ich hätte gerne einen Helfer, der ab 6 Std. vor 0 Uhr des Abholtages auf “Ein” geht und evtl. (muß aber nicht) auch noch die Müll-Art ausgibt.

dieser Helfer soll dann eine bedingte Bild-Anzeige steuern so wie zB hier beim Briefkasten

Ich habe bei mir mal testweise für morgen eine Müllabholung in meinem Kalender eingetragen:

Als nächstes habe ich einen Sensor in der configuration.yaml angelegt:

    - name: "Test Müll Sensor"
      state: >
        {% if ((state_attr("calendar.abfuhrkalender", "start_time")| as_timestamp - now()| as_timestamp) / 3600)| round(2) <= 6 %}
          true
        {% else %}
          false
        {% endif %}
      attributes:
        Art: '{{state_attr("calendar.abfuhrkalender", "message")}}'

Das Ergebnis bzw. der Sensor würde dann so aussehen:

Ich denke, das dürfte in die Richtung gehen was du dir vorstellst, allerdings würden dir mit diesem Sensor alle bevorstehenden Ereignisse, die in deinem Kalender eingetragen sind, angezeigt werden. D.h. man müsste diesen noch so filtern, dass nur noch die Müll-Einträge angezeigt werden.

1 „Gefällt mir“

Oder einfach nur ein Sensor, der zwischen 18:00 und 23:59 den Typ anzeigt der morgen abgeholt werden soll. Sonst wird ein Leerer String angezeigt.

{% set termin = as_timestamp(state_attr('calendar.abfuhrkalender_2024', 'start_time')) | timestamp_custom("%d.%m.%Y") %}
{% set morgen = as_timestamp(now() + timedelta(days=1)) | timestamp_custom("%d.%m.%Y") %}
{% set typ = state_attr('calendar.abfuhrkalender_2024', 'message') %}
{{ iif(termin == morgen and 18 <= now().hour <= 23, typ, "") }}

Kannst Du mit der Bedingungen Karte kombinieren.
Wenn Zustand nicht gleich ‘’
Dann Karte sichtbar machen

type: conditional
conditions:
  - condition: state
    entity: sensor.morgen_wird_abgeholt
    state_not: ''
card:
  type: entity
  entity: sensor.morgen_wird_abgeholt

So wie Du siehst gibt es mehrere Möglichkeiten, einzig und alleine Deine Fantasie setzt die Grenzen. :grinning:

Gruß
Osorkon

3 „Gefällt mir“

Ein kurzes Update von meiner Seite:
Habe es inzwischen tatsächlich mit etwas Recherche geschafft, dass die Abholtermine aus dem lokalen Kalender ausgelesen werden, so dass ich nun alle Abfuhrtermine auf dem Dashboard anzeigen kann:

Wie in einem meiner vorherigen Posts geschrieben, muss man hierzu das Ergebnis von calendar.get_events weiterverarbeiten und dann für die einzelnen Müllarten jeweils einen Sensor anlegen

1 „Gefällt mir“

Kurze Frage stellt ihr auch aktuell Probleme mit Abfallkalender fest - seit gestern bekomme ich keine Daten mehr