Auf mehrere Ereignisse prüfen

Hallo zusammen,
ich möchte gerne über mehrere Ereignisse hinweg eine Automation bauen, allerdings fehlt mir dazu gerade die zündende Idee.
Folgendes möchte ich machen:

  • Wenn Ferien sind
  • oder es ein Feiertag ist
  • oder es ein Wochenende ist,
    würde ich gerne darauf Aktionen durchführen.
    Ich möchte das aber nicht jedes Mal in jeder Automation wieder neu bauen müssen.
    Dazu habe ich mir überlegt, eine Automation zu bauen, wenn ein Event anfängt und wenn ein Event endet, denn dann soll ja wieder der Normalzustand greifen, die dann eine Variable setzt, je nach Zustand, doch natürlich kann es sein, dass Ferien und Wochenende bzw. Feiertag auf einen oder mehrere Tage fallen, dass sollte natürlich berücksichtigt werden.
    Aber irgendwie bekomme ich das einfach nicht so einfach abgebildet. Vielleicht denke ich aber auch einfach ein wenig zu kompliziert.
    Ich wollte das über einen binary Sensor realisieren.

Hier meine Automation, aber wie gesagt, irgendwie ist das noch nicht richtig und mir fehlt da noch die Logic, wenn die Events zu Ende sind.
Und ehe ich mir weiter den Kopf zerbreche, dachte ich so bei mir, ich frage mal Euch.

alias: Keine Benachrichtigung Helper
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.ferien_schleswig_holstein
    id: Ferien Start
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.deutschland_sh
    id: Feiertag Start
  - platform: calendar
    event: end
    offset: "23:59:59"
    entity_id: calendar.ferien_schleswig_holstein
    id: Ferien Ende
  - platform: calendar
    event: end
    offset: "23:59:59"
    entity_id: calendar.deutschland_sh
    id: Feiertag Ende
  - platform: state
    entity_id:
      - binary_sensor.workday_sensor
    from: "on"
    to: "off"
    id: Wochenende start
  - platform: state
    entity_id:
      - binary_sensor.workday_sensor
    from: "off"
    to: "on"
    id: Wochenende Ende
condition:
  - condition: and
    conditions:
      - condition: trigger
        id:
          - Ferien Start
          - Feiertag Start
          - Wochenende start
      - condition: state
        entity_id: calendar.ferien_schleswig_holstein
        state: "on"
      - condition: state
        entity_id: calendar.deutschland_sh
        state: "on"
      - condition: state
        entity_id: binary_sensor.workday_sensor
        state: "off"
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Ferien Start
              - Feiertag Start
              - Wochenende start
        sequence:
          - service: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.keine_benachrichtigung
mode: single

Vielen Dank,
Sören

PS: Frohe Ostern Euch allen!

Moin,
willkommen in der Community.
Zur info Trigger/Auslöser sind oder.
Conditons/Bedingungen sind und heißt du musst die Bedingungen nicht extra in ein und stecken
Ich würde die normalen Bedingungen Ignorieren, da schaffst du es schlecht Bedingungen zu finden die beim Start und Ende Zutreffen.
Für den Start würde ich keine Bedingungen nehmen damit er an geht und nur beim Ende damit es erst aus geht wenn alles zu ende ist.

alias: Keine Benachrichtigung Helper
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.ferien_schleswig_holstein
    id: Ferien Start
  - platform: calendar
    event: start
    offset: "0:0:0"
    entity_id: calendar.deutschland_sh
    id: Feiertag Start
  - platform: calendar
    event: end
    offset: "23:59:59"
    entity_id: calendar.ferien_schleswig_holstein
    id: Ferien Ende
  - platform: calendar
    event: end
    offset: "23:59:59"
    entity_id: calendar.deutschland_sh
    id: Feiertag Ende
  - platform: state
    entity_id:
      - binary_sensor.workday_sensor
    from: "on"
    to: "off"
    id: Wochenende start
  - platform: state
    entity_id:
      - binary_sensor.workday_sensor
    from: "off"
    to: "on"
    id: Wochenende Ende
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Ferien Start
              - Feiertag Start
              - Wochenende start
        sequence:
          - service: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.keine_benachrichtigung
        alias: Start
      - conditions:
          - condition: trigger
            id:
              - Ferien Ende
              - Feiertag Ende
              - Wochenende Ende
          - condition: state
            entity_id: calendar.deutschland_sh
            state: "off"
          - condition: state
            entity_id: binary_sensor.workday_sensor
            state: "off"
          - condition: state
            entity_id: calendar.ferien_schleswig_holstein
            state: "off"
        sequence:
          - service: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.keine_benachrichtigung
        alias: Ende
mode: single

Fürs Ende musst du noch die Kalender Bedingung finden, arbeite zu selten bis gar nicht mit dem Kalender deswegen weiß ich nicht ob es so richtig ist (und habe den Kalender nicht).

Edit:
Wichtig die Trigger lösen nur bei Wert Änderung aus, also lösen sie immer erst zum Tageswechel aus.
Und manuell auslösen bringt auch nichts da da keine Trigger_id mitgegeben wird.
Müsstest sonnst vielleicht ein input_boolean.test in die Auslöser zum Testen mit einbauen

LG aus SH
Tobi

Ich würde an der Stelle auch keine Automatisierung sondern ein Template Sensor verwenden. Zum einem, sparst Du Dir den Helfer Input Boolean. Und kannst diesen auch nicht aus versehen manuell umschalten.
Die Feiertage kannst Du auch im Workday Sensor berücksichtigen.

Das wäre dann das Template:

{{ is_state('binary_sensor.workday_sensor', 'off') or is_state('calendar.ferien_schleswig_holstein', 'on') or is_state('calendar.deutschland_sh', 'on') }}

Der Binary Sensor nimmt den Zustand “on”, wenn entweder Workday = “off” oder einer der beiden Kalender den Zustand “on” hat.

Ist der Zustand von Workday = “on” und in den beiden Kalender steht kein Termin an, also der Zustand des Kalenders ist jeweils “off” dann hat der Binary Sensor den Zustand “off”

Gruß
Osorkon

Danke,
das mit dem Template scheint mir einfacher, allerdings habe ich das noch nicht gemacht und muss es mir mal genauer ansehen.
Danke und Gruß
Sören

Einfach das Template von oben verwenden.
Einstellungen → Geräte & Dienste → Helfer → +HELFER ERSTELLEN → Template → Template für einen binär Sensor erstellen.

Gruß
Osorkon

1 „Gefällt mir“

Vielen Dank Osorkon, das ist die Lösung und ich habe wieder was dazu gelertn!

1 „Gefällt mir“