Automation mit Wiederholung

Guten Morgen.
Ich bin dabei meine erste Automatisierung mit der Wiederholungsfunktion zu erstellen.
Ich weiß nicht ob das richtig mache bzw verstehe und wollte euch mal fragen ob das vom grundsatz so richtig ist…

Kurz zur Erklärung.
Ich habe eine Insektenlampe auf meiner Überdachten Terrasse und auch einen Präsenzmelder mit Helligkeitssensor.

Wenn ich abends Draußen sitze (länger als 15min) und es auch dunkel ist, soll die Insektenlampe angehen. Wenn ich dann weg bin soll die wieder aus.

Jetzt geht es darum, das wenn es draußen unter 100Lx ist und ich gehe raus und sitzte dann über 15 min dort, dann geht die lampe an. Das ist ja jetzt nicht so schwer.
Was ist aber wenn ich rausgehe, es aber 300 Lx sind und ich sitze 3 Stunden draußen… Dann würde ja wenn 100Lx erreicht sind die lampe nicht angehen da ich als auslöser (Belegt 15min) eingestellt habe und zu der zeit der Belegt status schon 3 stunden ist…
Deswegen die Wiederholungsfunktion.

Kann mir da jemand helfen ob das so ok ist??

alias: Insektenlampe
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.prasenzmelder_uberdachte_terrasse_presence_sensor_1
    to: "on"
    for:
      hours: 0
      minutes: 15
      seconds: 0
  - trigger: state
    entity_id:
      - binary_sensor.prasenzmelder_uberdachte_terrasse_presence_sensor_1
    to: "off"
    for:
      hours: 0
      minutes: 10
      seconds: 0
    id: Frei 10min
    from: "on"
conditions:
  - condition: numeric_state
    entity_id: sensor.prasenzmelder_uberdachte_terrasse_light_sensor_light_level
    below: 100
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.tasmota_insektenlampe
  - repeat:
      sequence:
        - action: switch.turn_on
          metadata: {}
          data: {}
          target:
            entity_id: switch.tasmota_insektenlampe
      while:
        - condition: numeric_state
          entity_id: sensor.prasenzmelder_uberdachte_terrasse_light_sensor_light_level
          below: 100
        - condition: state
          entity_id: binary_sensor.prasenzmelder_uberdachte_terrasse_presence_sensor_1
          state: "on"
  - if:
      - condition: trigger
        id:
          - Frei 10min
    then:
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.tasmota_insektenlampe
mode: single

EDIT: Code formatiert, bitte immer die Codefunktion „</>“ im Editor nutzen.

Das ganze geht viel einfacher, schau mal hier:

Hi,
du kannst auch auf ein Template warten. :wink:

so würde ich es machen!

alias: Test
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.prasenz_wohnen
    to: "on"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: jemand auf der Terasse
  - trigger: state
    entity_id:
      - input_boolean.prasenz_wohnen
    to: "off"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: keiner auf der Terasse
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - jemand auf der Terasse
        sequence:
          - wait_template: >-
              {{ states('sensor.prasenz_wohnzimmer_illuminance') | float < 100
              }}
            timeout: "00:30:00"
            continue_on_timeout: false
          - action: light.turn_on
            metadata: {}
            data: {}
            target:
              device_id: 41dc1fc59a302eadc6f44846f70a5ecd
      - conditions:
          - condition: trigger
            id:
              - keiner auf der Terasse
        sequence:
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              device_id: 41dc1fc59a302eadc6f44846f70a5ecd
mode: single

so wartet deine Automation bis der Wert erreicht ist und schaltet dann das Licht an.

Ahh super das mit dem template…
Damit kenne ich mich noch so gar nicht aus. Noch nie verwendet…
Werde ich mal ausprobieren.

Danke… Ich denke du meinst das als Modi Warteschlange… Aber müsste dafür nicht immer wieder der präsenzmelder auslösen? oder verstehe ich das falsch?

Wenn dann Neustart und nicht Warteschlange. Aber ja, du hast recht, hatte nen Denkfehler.

stimmt, Neustart :wink:
Danke

1 „Gefällt mir“

Du müsstest halt deine Sensoren und Entitäten anpassen im Script.
Aber denke das es so funktionieren sollte

ja, danke… hab ich gemacht… werde das in der Praxis testen … Danke

1 „Gefällt mir“

Ich habe mir mal die Automation angesehen, soweit ich es versteh wird durch die Anwesenheit bzw. Abwesenheit nach 15 Minuten getriggert und dann geprüft ob innerhalb von 30 Minuten ein Wert von 100 Lux unterschritten wird.

Die Vorgehensweise ist grundsätzlich gut, aber hier muss man sagen es wird nur nach der Anwesenheit geprüft. Sollte man wirklich bereits 2-3 Stunden auf der Terasse sitzen und dann gibt es normalerweise keine Wertänderung wird ja nur für 30 Minuten geprüft ob der Wert unter 100 Lux ist. Somit wird, falls man länger dort sitzt weiterhin das Insektenlicht nicht eingeschaltet. Daher hab ich eine Version geschrieben, die beides abdeckt, sowohl die Anwesenheit als auch die Beleuchtungsstärke.

Du kannst diese Version gern ausprobieren, falls du magst.

alias: Test
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.prasenz_wohnen
    to: "on"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: "Anwesenheit: Terasse"
    alias: Löse aus wenn jemand 15 Minuten auf der Terasse ist
  - trigger: state
    entity_id:
      - input_boolean.prasenz_wohnen
    to: "off"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: "Abwesenheit: Terasse"
    alias: Löse aus wenn 15 Minuten niemand auf der Terasse ist
  - trigger: state
    entity_id:
      - sensor.prasenz_wohnzimmer_illuminance
    alias: Löse bei Änderung der Beleuchtungsstärke aus
    id: Beleuchtungsstärke
conditions: []
actions:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: trigger
                    id:
                      - "Anwesenheit: Terasse"
                  - condition: template
                    value_template: >-
                      {{ states('sensor.prasenz_wohnzimmer_illuminance') | float
                      < 100 }}
                    alias: Beleuchtungsstärke ist unter 100 Lux
              - condition: and
                conditions:
                  - condition: trigger
                    id:
                      - Lichtstärke
                  - condition: state
                    entity_id: input_boolean.prasenz_wohnen
                    state: "on"
                    for:
                      hours: 0
                      minutes: 15
                      seconds: 0
                    alias: Jemand ist min. 15 Minuten auf der Terasse
        sequence:
          - action: light.turn_on
            metadata: {}
            data: {}
            target:
              device_id: 41dc1fc59a302eadc6f44846f70a5ecd
            alias: Insektenlampe wird eingeschaltet
        alias: Einschalten
      - conditions:
          - condition: trigger
            id:
              - "Abwesenheit: Terasse"
        sequence:
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              device_id: 41dc1fc59a302eadc6f44846f70a5ecd
            alias: Insektenlampe wird ausgeschaltet
        alias: Ausschalten
mode: restart

1 „Gefällt mir“

wow, danke für deinen Einsatz.
Das stimmt auch wieder, gut bedacht.

Aber heißt das nicht eigentlich jemand ist 15min lang auf der terrasse (dann ist erfüllt)
Was ist denn wenn die Beleuchtungsstärke auslöst und ich bin schon 2 stunden auf der terrasse…
hmmm…
oder man macht einfach als als 2te Bedingung einefach nur belegt.
Oder?

Irgendwie habe ich gefühlt komplizierte Automationen hinbekommen aber bei der Insektenlampe bin ich echt am kämpfen :frowning:
Oder ich stehe total auf dem Schlauch

Die Bedingung bzgl. der Prüfung ob jemand für 15 Minuten auf der Terasse, wird erst als wahr erkannt wenn der Sensor mindestens 15 Minuten diesen Status hat. Sprich bist du bereits 2 und 15 Minuten auf der Terasse, dann ist die Bedingung erfüllt, da du die Mindestzeit erreicht hast.

Hi so nicht ganz richtig :wink:
das Timeout war zwar noch drinnen aber nicht aktiv, also wartet er so lange bis es erfüllt wird und dann geht das licht an.
sollte in der Zwischenzeit die Präsenz wieder veschwinden löst er beim nächsten mal ja wieder aus.
Bei deinem würde er die Automation ja immer auslösen wenn sich die Beleuchtung ändert, die Automation würde also dauernd getriggert werden.

alias: Test
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.prasenz_wohnen
    to: "on"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: jemand auf der Terasse
  - trigger: state
    entity_id:
      - input_boolean.prasenz_wohnen
    to: "off"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: keiner auf der Terasse
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - jemand auf der Terasse
        sequence:
          - wait_template: >-
              {{ states('sensor.prasenz_wohnzimmer_illuminance') | float < 100
              }}
          - action: light.turn_on
            metadata: {}
            data: {}
            target:
              device_id: 41dc1fc59a302eadc6f44846f70a5ecd
      - conditions:
          - condition: trigger
            id:
              - keiner auf der Terasse
        sequence:
          - action: light.turn_off
            metadata: {}
            data: {}
            target:
              device_id: 41dc1fc59a302eadc6f44846f70a5ecd
mode: single

so sollte es denke laufen, habe ein paar Automationen die ähnlich laufen.

Hier kommet es auch drauf an wie wann der Präsenzmelder wieder auf nicht belegt switcht, sollte er immer hin und her switchen weil du vllt gerade nicht erkannt wirst so lösst das ding nie aus. ich habe mir dafür Helfer gebaut.

So sieht in etwa ein Präsenzhelfer bei mir aus.

alias: Helper - Präsenz WZ
description: ""
triggers:
  - trigger: time_pattern
    minutes: /1
conditions: []
actions:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: device
                device_id: 568174b0e78489d5e7ce01d696525734
                domain: media_player
                entity_id: 79f3afc149f05348644611659d279ce5
                type: is_on
              - condition: state
                entity_id: input_boolean.jemand_zu_hause
                state: "on"
              - condition: state
                entity_id: binary_sensor.prasenz_wohnzimmer_presence
                state: "on"
                for:
                  hours: 0
                  minutes: 1
                  seconds: 0
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.prasenz_wohnen
        alias: Fernseher an, jemand da, es ist jemand im Wohnzimmer
      - conditions:
          - alias: jemand zu Hause, jemand im Wohnzimmer
            condition: and
            conditions:
              - condition: state
                entity_id: input_boolean.jemand_zu_hause
                state: "on"
              - condition: state
                entity_id: binary_sensor.prasenz_wohnzimmer_presence
                state: "on"
                for:
                  hours: 0
                  minutes: 0
                  seconds: 30
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.prasenz_wohnen
      - conditions:
          - alias: jemand zu Hause, keiner im Wohnzimmer
            condition: and
            conditions:
              - condition: state
                entity_id: input_boolean.jemand_zu_hause
                state: "on"
              - condition: state
                entity_id: binary_sensor.prasenz_wohnzimmer_presence
                state: "off"
                for:
                  hours: 0
                  minutes: 5
                  seconds: 0
        sequence:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.prasenz_wohnen
      - conditions:
          - type: is_not_present
            condition: device
            device_id: b91675563c552cba447132d20c78e922
            entity_id: ef07a702d46405f2dbb90cc080919e3a
            domain: binary_sensor
            for:
              hours: 0
              minutes: 10
              seconds: 0
        sequence:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.prasenz_wohnen
mode: single

1 „Gefällt mir“

ich hab es jetzt so gebastelt…
Meint ihr das wird funktionieren? Wenn es so passen sollte würde ich es mal paar tage austesten…

alias: Insektenlampe
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.prasenzmelder_uberdachte_terrasse_presence_sensor_1
    to: "on"
    for:
      hours: 0
      minutes: 15
      seconds: 0
    id: Jemand ist auf der Terrasse (15min)
  - trigger: state
    entity_id:
      - binary_sensor.prasenzmelder_uberdachte_terrasse_presence_sensor_1
    to: "off"
    for:
      hours: 0
      minutes: 10
      seconds: 0
    id: Keiner ist auf der Terrasse
    from: "on"
  - trigger: numeric_state
    entity_id:
      - sensor.prasenzmelder_uberdachte_terrasse_light_sensor_light_level
    below: 100
    id: licht unter 100
conditions: []
actions:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: trigger
                id:
                  - Jemand ist auf der Terrasse
              - condition: sun
                before: sunrise
                after: sunset
                after_offset: "-01:00:00"
        sequence:
          - wait_template: >-
              {{
              states('sensor.prasenzmelder_uberdachte_terrasse_light_sensor_light_level')
              | float < 100 }}
            timeout: "00:35:00"
            continue_on_timeout: false
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.tasmota_insektenlampe
      - conditions:
          - condition: and
            conditions:
              - condition: trigger
                id:
                  - Keiner ist auf der Terrasse
              - condition: state
                entity_id: switch.tasmota_insektenlampe
                state: "on"
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.tasmota_insektenlampe
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: trigger
                    id:
                      - Jemand ist auf der Terrasse (15min)
                  - alias: Beleuchtungsstärke ist unter 100 Lux
                    condition: template
                    value_template: >-
                      {{
                      states('sensor.prasenzmelder_uberdachte_terrasse_light_sensor_light_level')
                      | float < 100 }}
              - condition: and
                conditions:
                  - condition: trigger
                    id:
                      - licht unter 100
                  - condition: state
                    entity_id: >-
                      binary_sensor.prasenzmelder_uberdachte_terrasse_presence_sensor_1
                    state: "on"
                    for:
                      hours: 0
                      minutes: 5
                      seconds: 0
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.tasmota_insektenlampe
        alias: Einschalten
      - conditions:
          - condition: trigger
            id:
              - Keiner ist auf der Terrasse
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.tasmota_insektenlampe
        alias: Ausschalten
mode: restart

Grundsätzlich sollte das so passen - Wichtig ist in solchen Fällen hilft am Ende nur das gute alte „Try and Error Prinzip“ - Testen, Fehler finden und optimieren bis alles so funktioniert wie man es sich wünscht. :grin:

Denke mal du hast das einen sehr guten Ansatz, wird vielleicht am Anfang nicht perfekt laufen aber kommt Zeit kommen Bug Fixes. :wink:

1 „Gefällt mir“

Das stimmt. Danke euch für die Hilfe