Seite 1 von 1

Binary Sensor mit Value Template

Verfasst: Di 18. Jan 2022, 16:45
von Friedi
Ich habe das Problem bei einem binary_sensor, dass dieser auf einen Kalendereintrag einen Tag in der Zukunft aufbaut. Dazu habe ich mal folgendes gebaut:

Code: Alles auswählen

    urlaub_marco_tomorrow:
      friendly_name: "Urlaub Marco (morgen)"
      value_template: >-
        {% if now().timestamp() >= as_timestamp(state_attr('calendar.gemeinsam_urlaub_marco', 'start_time')) - 3600*24 and 
          now().timestamp() <= as_timestamp(state_attr('calendar.gemeinsam_urlaub_marco', 'end_time')) - 3600*24 %}
          on
        {% else %}
          off
        {% endif %}
        
Solange am nächsten Tag tatsächlich ein Termin in calendar.gemeinsam_urlaub_marco vorhanden ist, ist das alles kein Problem. Wenn aber nun kein Termin da ist, wird der Sensor unverfügbar.
Eigentlich hoffte ich, dass ich das eben mit der else-Bedingung abfangen kann. Dem ist aber wohl nicht so.

Hat irgendwer ne Idee, wie man so was abfängt? Oder wie man anders auf einen CalDAV-Termin in der Zukunft aufbauen kann (auch wenn dann ggf. kein Termin vorhanden ist)?

Re: Binary Sensor mit Value Template

Verfasst: Mi 19. Jan 2022, 12:37
von Friedi
Falls das noch jemand mal benötigen sollte, hier meine Lösung. Ich weiß nicht, ob es bessere Lösungen gibt, aber die hier funktioniert:

Code: Alles auswählen

    urlaub_marco_tomorrow:
      friendly_name: "Urlaub Marco (morgen)"
      value_template: >-
        {{ now().timestamp() >= as_timestamp(state_attr('calendar.gemeinsam_urlaub_marco', 'start_time'), now().timestamp() + 3600*24) - 3600*24 and
          now().timestamp() <= as_timestamp(state_attr('calendar.gemeinsam_urlaub_marco', 'end_time'), now().timestamp() + 3600*24) - 3600*24 }}