Automation mit Blueprint nur zu bestimmten Zeiten aufrufen

Moin,

Für mehrere Lichtautomationen nutze ich den unten stehenden Blueprint (Quelle steht im Code). Ich möchte mit dem Blueprint das Flurlicht nach Sonnenuntergang bzw. vor Sonnenaufgang auslösen.

Die Automation auf Basis des Blueprints hat folgenden YAML-Code:

alias: Flurlicht 2
description: ""
use_blueprint:
  path: home-assistant/motion_light.yaml
  input:
    motion_entity: binary_sensor.motionsensor_ikea_2_occupancy
    light_target:
      device_id: 3ef4997c5ce83368d7625ba1ffe98822
    no_motion_wait: 60

Ich frage mich wie und an welcher Stelle ich die Bedingung nach Sonnenuntergang und vor Sonnenaufgang ergänzen kann? Funktioniert das irgendwie mit Condtions im Code der Automation oder muss ich dann im Blueprint-Code rummachen?

conditions:
  - condition: sun
    after: sunset
    before: sunrise

VG

Christian

blueprint:
  name: Motion-activated Light
  description: Turn on a light when motion is detected.
  domain: automation
  source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml
  author: Home Assistant
  input:
    motion_entity:
      name: Motion Sensor
      selector:
        entity:
          filter:
            - device_class: occupancy
              domain: binary_sensor
            - device_class: motion
              domain: binary_sensor
    light_target:
      name: Light
      selector:
        target:
          entity:
            domain: light
    no_motion_wait:
      name: Wait time
      description: Time to leave the light on after last motion is detected.
      default: 120
      selector:
        number:
          min: 0
          max: 3600
          unit_of_measurement: seconds

# If motion is detected within the delay,
# we restart the script.
mode: restart
max_exceeded: silent

triggers:
  trigger: state
  entity_id: !input motion_entity
  from: "off"
  to: "on"

actions:
  - alias: "Turn on the light"
    action: light.turn_on
    target: !input light_target
  - alias: "Wait until there is no motion from device"
    wait_for_trigger:
      trigger: state
      entity_id: !input motion_entity
      from: "on"
      to: "off"
  - alias: "Wait the number of seconds that has been set"
    delay: !input no_motion_wait
  - alias: "Turn off the light"
    action: light.turn_off
    target: !input light_target

Eine Blueprint für solch eine einfache Automation brauchst du nicht. Der Nachteil, du kannst nichts anpassen.

Lösch die Blueprint und mach deine eigene Automation, hier steht, wie es geht

2 „Gefällt mir“

Selbstverständlich kann man diesen nach seinen wünschen anpassen, nur muss man wissen was man tut. :wink:
Wenn man schon bei der Erstellung von Automationen seine Schwierigkeiten hat, dann ist es natürlich auch nicht einfacher einen Blueprint zu erstellen oder anzupassen.

Ein Blueprint ist nichts anders als eine Automation, wo der Ablauf bereits vor definiert ist und man nur doch die Entitäten einsetzen muss. Für wiederkehrende Aufgaben, hat ein Blueprint also den Vorteil, das man die Logik nur einmal erstellen muss und in beliebig vielen Automationen nutzen kann. Ändert man den Blueprint, ist die Änderung auf alle bereits erstellten Automation mit diesem Blueprint wirksam. Was einen weiterer Vorteil hat, dass man nur das Blueprint und nicht die einzelnen Automationen anpassen muss, falls man die Logik / Ablauf ändert.

Gruß Osorkon

Das ist mir schon klar.
Aber dann muss man die Blueprint-File ändern und nicht nur in der Automation eine Condition hinzufügen wollen.

Es gibt auch die Möglichkeit aus dem Blueprint eine Automation zu machen mit dem Menüpunkt kontrolle übernehmen. Dann lässt sich die Bedingung ganz leicht einfügen. Allerdings muss einem dann bewusst sein das sich Änderungen am Blueprint nicht mehr auf diese Automation auswirken.

1 „Gefällt mir“

Ja richtig, aber dann kann man direkt selber eine kleine Automation anlegen ohne Blueprint.

1 „Gefällt mir“

Hallo Maxe,

Ich probiere Deine Anleitung heute aus, zunächst scheint alles zu funktionieren. Ich gebe Feedback, wenn ich ausgiebig getestet habe.

Charmant an dem Blueprint fand ich, dass das Skript erneut gestartet wird, sobald wieder Bewegung erkannt wird. Andere Lösungen wären die mit einem Timer, welcher jeweils von vorne beginnt, nachdem erneute Bewegung gemeldet wird.

VG

Christian

In der Blueprint wird nur mit einem delay gearbeitet.

In meinem Bsp. geht das über