Hallo,
hier meine selbstgebaute Lösung. ich habe mir mir ChatGPT eine Blueprint aufgebaut schrittweise und durchgetestet.
Funktionsbeschreibung.
der Ausgang wird bei Bewegung Geschaltet und geht nach den eingestellten sek. wieder aus nachdem die Bewegung weg ist.
dann habe ich mit noch einen Helfer gebastelt der bei mir auf einen Eingang (Taster) reagiert. damit wird das licht eingeschaltet und deaktiviert die Funktion der Bewegungsmelder so lange bis der Sperreingang nicht mehr aktiv ist. dann spring er in die zeitschleife wir durch Aktivierung durch Bewegung Melder und geht nach der eingestellten zeit aus.
Optional ist die Berücksichtigung der Helligikeitssensoren.
ich habe noch als Backup Funktion eingebaut das wenn der Sperreingang aktiviert ist und nach einstellbarer zeit keine Bewegung erkannt wurde, falls man mal vergisst den Taster zu drücken, das licht trotzdem ausgeht und der Helfer auch deaktiviert wird
Musseingabe:
Bewegungsmelder auf Motion oder occupancy
Sperreingang
um die Blueprint zu erstellen habe ich im Fileeditor unter Blueprint einen eigenen Ordner erstellt und eine Datei angelegt mit name.yaml und dann den Code reinkopiert. dann ist es als Blueprint verfügbar
hier der Code
blueprint:
name: Bewegungsmelder mit Sperre, Dauerlicht und optionalem Luxwert
description: >
Schaltet Licht bei Bewegung sofort ein, wenn Sperr-Eingang aus ist.
Wenn der Sperr-Eingang aktiv ist, bleibt das Licht dauerhaft an und
Bewegungsmelder sind deaktiviert. Beim Deaktivieren der Sperre bleibt
das Licht an, bis keine Bewegung mehr erkannt wird und die Nachlaufzeit
abgelaufen ist. Optional kann die Helligkeit berücksichtigt werden.
domain: automation
input:
motion_sensors:
name: Bewegungs- oder Belegungssensoren
selector:
entity:
domain: binary_sensor
device_class:
- motion
- occupancy
multiple: true
target_light:
name: Licht / Ausgang
selector:
target:
entity:
domain: [light, switch]
block_input:
name: Sperr-Eingang (z. B. Schalter oder Input Boolean)
selector:
entity:
domain: [input_boolean, binary_sensor, switch]
off_delay:
name: Ausschaltverzögerung (Sekunden)
default: 120
selector:
number:
min: 5
max: 1800
unit_of_measurement: seconds
mode: box
lux_sensors:
name: Helligkeitssensor(en) (optional)
description: Optionale Lux- oder Helligkeitssensoren. Wenn keiner angegeben ist, wird die Helligkeit ignoriert.
default: []
selector:
entity:
domain: sensor
device_class: illuminance
multiple: true
lux_threshold:
name: Helligkeitsschwelle (Lux)
description: Nur wenn die Helligkeit unter diesem Wert liegt, wird das Licht eingeschaltet.
default: 50
selector:
number:
min: 0
max: 1000
step: 1
unit_of_measurement: lx
mode: box
block_auto_off_delay:
name: Zeit bis automatische Sperr-Deaktivierung (Sekunden)
description: Wenn der Sperr-Eingang aktiv ist und keine Bewegung erkannt wird, wird nach dieser Zeit die Sperre automatisch aufgehoben und das Licht ausgeschaltet.
default: 600
selector:
number:
min: 60
max: 7200
unit_of_measurement: seconds
mode: box
block_helper:
name: Helfer zur Sperr-Steuerung (optional)
description: Optionaler Input Boolean, der zur Sperrung benutzt wird und automatisch wieder ausgeschaltet wird.
default: []
selector:
entity:
domain: [input_boolean, switch]
trigger:
- platform: state
entity_id: !input motion_sensors
to: "on"
id: motion_on
- platform: state
entity_id: !input motion_sensors
to: "off"
id: motion_off
- platform: state
entity_id: !input block_input
to: "on"
id: block_on
- platform: state
entity_id: !input block_input
to: "off"
id: block_off
variables:
lux_entities: !input lux_sensors
lux_limit: !input lux_threshold
condition: []
action:
- choose:
# --- Sperre AUS: keine Bewegung -> Nachlaufzeit ---
- conditions:
- condition: trigger
id: motion_off
- condition: state
entity_id: !input block_input
state: "off"
sequence:
- delay:
seconds: !input off_delay
- condition: state
entity_id: !input block_input
state: "off"
- service: switch.turn_off
target: !input target_light
# --- Bewegung erkannt (nur wenn Sperre aus und ggf. zu dunkel): Licht sofort an ---
- conditions:
- condition: trigger
id: motion_on
- condition: state
entity_id: !input block_input
state: "off"
sequence:
- condition: template
value_template: >
{% set ent = expand(lux_entities) %}
{% if ent | count > 0 %}
{{ ent | map(attribute='state') | map('float', 9999) | min < lux_limit }}
{% else %}
true
{% endif %}
- service: switch.turn_on
target: !input target_light
# --- Sperre AUS, aber keine Bewegung vorhanden -> Nachlaufzeit, dann aus ---
- conditions:
- condition: trigger
id: block_off
sequence:
- choose:
- conditions:
- condition: state
entity_id: !input motion_sensors
state: "off"
sequence:
- delay:
seconds: !input off_delay
- condition: state
entity_id: !input block_input
state: "off"
- condition: state
entity_id: !input motion_sensors
state: "off"
- service: switch.turn_off
target: !input target_light
# --- Sperre aktiv, aber keine Bewegung für längere Zeit -> Sperre und Licht aus ---
- conditions:
- condition: state
entity_id: !input block_input
state: "on"
sequence:
- service: switch.turn_on
target: !input target_light
- variables:
motion_entities: !input motion_sensors
helper_entity: !input block_helper
- delay:
seconds: !input block_auto_off_delay
- condition: template
value_template: >
{% set sensors = expand(motion_entities) %}
{{ sensors | selectattr('state','eq','off') | list | count == sensors | count }}
- condition: state
entity_id: !input block_input
state: "on"
- service: switch.turn_off
target: !input target_light
- choose:
- conditions:
- condition: template
value_template: >
{{ helper_entity | length > 0 }}
sequence:
- service: homeassistant.turn_off
target:
entity_id: "{{ helper_entity }}"
mode: restart