Template - Ermittlung der Kalenderwoche - Gerade / ungerade Woche

Vielleicht brauch mal einer die Kalenderwoche oder als Bedingung eine gerade oder ungerade Woche.
Dann hilft das kleine Template bestimmt weiter. :grinning:

W = Wochenbeginn Montag

{{ now().strftime('%W') }}

U = Wochenbeginn Sonntag

{{ now().strftime('%U') }}

Mit diesem template kann man ermitteln, ob es sich um eine gerade Woche handelt.

{{ not now().strftime('%W') | int %2}}

%2 bedeutet: Teile durch 2 und gebe den Rest aus. Das Bedeutet, dass das Ergebnis bei einer ungeraden Zahl immer 1 ist und bei einer geraden Zahl immer 0

In jinja bedeutet 1 = wahr und 0 = falsch

Nicht 0 ergibt also somit 1=wahr

Man kann natürlich zur Ermittlung der geraden Wochen auch dieses Template verwenden:

{{ now().strftime('%W') | int % 2 == 0}}

Wenn Ihr dagegen eine ungerade Woche als Bedingung verwenden wollt, lautet das template:

{{ now().strftime('%W') | int % 2 == 1}}

Die liste der unterstützten Zeit Optionen findet ihr hier:
Python time formatting options

Eine Bsp. Automatisierung könnte dann so aussehen:
Jeden Mittwoch in einer ungeraden Woche um 18 Uhr, erinnere mich daran die Schwiegermutter anzurufen. :rofl:

triggers:
  - trigger: time
    at: "18:00:00"
conditions:
  - condition: template
    value_template: "{{ now().strftime('%W') | int % 2 == 1}}"
  - condition: time
    weekday:
      - wed
actions:
  - action: notify.telegram_sly
    metadata: {}
    data:
      message: Es ist wieder soweit! Nimm den Hörer in die Hand.
mode: single

Eine Mushroom Template Karte die neben dem Datum auch die Kalenderwoche ausgibt, könnte dann so ausschauen:

Bildschirmfoto 2024-10-14 um 21.20.17

type: custom:mushroom-template-card
primary: KW {{ now().strftime('%W') }}
secondary: >-
  {% set wochentag = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag",
  "Samstag", "Sonntag"] %}
  {% set monat = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli",
  "August", "September", "Oktober", "November", "Dezember"] %}
  {% set wochentag = wochentag[now().weekday()] %}
  {% set monat = monat[now().month - 1] %}
  {{ wochentag }}, der {{ now().day }} {{ monat }} {{now().year}}
icon: mdi:calendar
icon_color: blue
layout_options:
  grid_columns: 3
  grid_rows: 1

Wie das nochmal mit der Formatierung des Zeitstempels war, könnt Ihr hier nachschlagen:

Gruß
Osorkon

1 „Gefällt mir“