CalDav-Kalender und Termin Morgen

Hallo zusammen,
ich habe folgendes Problem.
Ich habe für unseren Fahrdienst auf meinen NAS (SYNOLGY) einen CalDav-Kalender eingerichtet.

Diesen habe ich auch ohne Probleme im HA unter Kalender eingerichtet bekommen.

Nun war meine Idee, dass jeden Tag um 18:00 Uhr kontrolliert werden soll ob Morgen ein oder mehrere Termine (keine Ganztagstermie) anstehen.

Wenn ja, soll so was wie nee Agenda erstellt werden und eine Nachricht versendet werden (Signal, WhatApp, SMS oder Mail) ich weiss es noch nicht wodrüber.

Mein Problem ist nun, das mein Sensor keine Termine findet.
calendar.list_events funktioniert auch nicht.

Auf einen Lokalen Kalender bekomme ich wenigstens den nächsten Termin ausgelesen.

{% set start = state_attr('calendar.michael', 'start_time') %}
          {% if start %}
            {{ as_datetime(start).date() }}
          {% else %}
            Kein Termin
          {% endif %}

Kann einer von euch mir helfen?

LG und VD
Michael

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Den Service gibt es nicht mehr, heißt jetzt calendar.get_events.

Ich tippe mal darauf, dass der Kalender nicht richtig eingebunden ist. Schau mal unter Entwicklerwerkzeuge —> Zustände nach, welche Attribute der Kalender hat.

Das ist ja das Problem. Er liefert mir für Morgen keine Daten obwohl der termin im HA-Kalender zu sehen ist.

das steht bei den Atritbutten in der Entwicklung.

offset_reached: false
friendly_name: Michael Radermacher

Wie hast du die CalDav-Integration eingebunden?


# Kalender-Integrationen
calendar:
  - platform: caldav
    username: Michael
    password: !secret caldav_password
    url: http://192.168.178.118:2112/caldav

Also ich kenne es nur mit


    url: https://caldav.icloud.com

bzw. mit den Konfigurationsbeispielen hier,

habe den Kalender aber letztlich problemlos über das UI integriert.

Habe eben den Eintrag aus der configuration.yaml gelöscht und habe es über die CalDav-Integration installiert.

Kalender sind auch wieder vorhanden.

Wie muss denn nun der Code für die automation aussehen um zu schauen ob morgen ein termin ansteht.

Dann geh mal in Entwicklerwerkzeuge —> Aktionen und rufe den o. g. Dienst auf. nach Aufrufen des Dienstes siehst du weiter unten eine Antwort.

Hallo, habe es hinbekommen. Danke für die Hilfe.

Wäre cool, wenn Du uns deine Lösung präsentierst :sunglasses:

Hier wie gewünscht meine Lösung.
Zuerst habe ich ein Script erstellt.

alias: Fahrdienst – Termine für morgen erfassen
sequence:
  - target:
      entity_id: calendar.xyz
    data:
      duration:
        hours: 30
        minutes: 0
        seconds: 0
    response_variable: termine_roh
    action: calendar.get_events
  - variables:
      termine: >-
        {{ termine_roh['calendar.xyz'].events if termine_roh
        and termine_roh['calendar.xyz'] else [] }}
      alle_termine_text: |-
        {% if termine | length == 0 %}
          Keine Termine für morgen.
        {% else %}
          {%- for termin in termine %}
            {%- set datum = termin.start[:10].split('-') %}
            {%- set zeit = termin.start[11:16] %}
            • 🕘 {{ datum[2] }}.{{ datum[1] }}.{{ datum[0] }} – {{ zeit }} Uhr: {{ termin.summary }}
            {%- if not loop.last %} 
            
            {%- endif %}
          {%- endfor %}
        {% endif %}
      alle_termine_whatsapp: |-
        {% if termine | length == 0 %}
          Keine Termine für morgen.
        {% else %}
          🚗  *Fahrdienst-Termine für morgen:*
          {%- for termin in termine %}
            {%- set datum = termin.start[:10].split('-') %}
            {%- set zeit = termin.start[11:16] %}
            • 🕘 {{ datum[2] }}.{{ datum[1] }}.{{ datum[0] }} – {{ zeit }} Uhr: {{ termin.summary }}
            {%- if not loop.last %} 
            
            {%- endif %}
          {%- endfor %}
        {% endif %}
  - target:
      entity_id: input_text.fahrdienst_morgen
    data:
      value: "{{ alle_termine_text }}"
    action: input_text.set_value
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ termine | length > 0 }}"
        sequence:
          - data:
              message: "{{ alle_termine_whatsapp }}"
            action: notify.whatsapp
          - action: notify.signal
            metadata: {}
            data:
              message: "{{ alle_termine_whatsapp }}
mode: single

Dann noch ein input-helfer und eine automation die um zeitpunkt x das script startet.

Jetzt fehlt mir nur noch eine Lösung wie ich das Ergebnis nicht nur an mich via WhatsApp sondern auch an andere Senden kann.

Das mit WhatsApp habe ich nun auch hinbekommen!

Im Add-Store gibt es ein AddOn mit Namen WhatsApp.
Das habe ich mal aus Spaß installiert und siehe da es funktioniert.