From 9cb7550f7893b560c2f7c9ec727246a7d1874aa7 Mon Sep 17 00:00:00 2001 From: Claus Dethlefsen Date: Sat, 25 Apr 2026 19:17:56 +0200 Subject: [PATCH] Motion-lys: input_number parametre for gang/daniel/kontor, fix badevaerelse timeout, kompakt lys view --- include/automations/lys_badevaerelse.yaml | 18 +- include/automations/lys_daniel.yaml | 144 +++++--------- include/automations/lys_gang.yaml | 227 ++++++---------------- include/automations/lys_kontor.yaml | 13 +- include/input/number/daniel.yaml | 23 +++ include/input/number/gang.yaml | 23 +++ include/input/number/kontor.yaml | 23 +++ 7 files changed, 208 insertions(+), 263 deletions(-) create mode 100644 include/input/number/daniel.yaml create mode 100644 include/input/number/gang.yaml create mode 100644 include/input/number/kontor.yaml diff --git a/include/automations/lys_badevaerelse.yaml b/include/automations/lys_badevaerelse.yaml index cc20b2b..68bf818 100644 --- a/include/automations/lys_badevaerelse.yaml +++ b/include/automations/lys_badevaerelse.yaml @@ -49,10 +49,24 @@ - platform: state entity_id: binary_sensor.badevaerelse_bevaegelse to: "off" - for: - minutes: 3 # Standard nat-timeout, kan ændres til 10 for dag, osv. + + variables: + is_dag: > + {% set t = now().strftime('%H%M') | int %} + {% if is_state('binary_sensor.arbejdsdag', 'on') %} + {{ 600 <= t < 2200 }} + {% else %} + {{ 800 <= t < 2200 }} + {% endif %} action: + - delay: + minutes: > + {{ states('input_number.badevaerelse_timeout_day') | int if is_dag + else states('input_number.badevaerelse_timeout_night') | int }} + - condition: state + entity_id: binary_sensor.badevaerelse_bevaegelse + state: "off" - service: light.turn_off target: area_id: badevaerelse diff --git a/include/automations/lys_daniel.yaml b/include/automations/lys_daniel.yaml index be00cb7..6238d6d 100644 --- a/include/automations/lys_daniel.yaml +++ b/include/automations/lys_daniel.yaml @@ -1,98 +1,60 @@ - # - alias: 'Lys Daniel dag - arbejdsdag - sunrise' - # trigger: - # platform: time - # at: '06:00:00' - # condition: - # - condition: state - # entity_id: binary_sensor.arbejdsdag - # state: 'on' - # action: - # - service: script.sunrise +- id: daniel_motion_lys + alias: Daniel lys via bevaegelse + mode: restart - - - alias: 'Lys Daniel dag - arbejdsdag' - trigger: - platform: state + trigger: + - platform: state entity_id: binary_sensor.hue_motion_sensor_2_motion - to: 'on' - condition: - - condition: numeric_state - entity_id: sensor.hue_motion_sensor_2_illuminance - below: 90 - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'on' - - condition: time - after: '06:30:00' - before: '19:30:00' - - condition: template - value_template: "{{ not is_state('input_select.daniel_status', 'syg') }}" - action: - - service: homeassistant.turn_on - target: - entity_id: light.daniels_vaerelse - data: - brightness_pct: 100 + to: "on" + id: motion_on - - alias: 'Lys Daniel dag - ikke arbejdsdag' - trigger: - platform: state + - platform: state entity_id: binary_sensor.hue_motion_sensor_2_motion - to: 'on' - condition: - - condition: numeric_state - entity_id: sensor.hue_motion_sensor_2_illuminance - below: 90 - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'off' - - condition: time - after: '10:00:00' - before: '19:45:00' - - condition: template - value_template: "{{ not is_state('input_select.daniel_status', 'syg') }}" - action: - - service: homeassistant.turn_on - target: - entity_id: light.daniels_vaerelse - data: - brightness_pct: 100 - - # - alias: 'Lys Daniel aften' - # trigger: - # platform: state - # entity_id: binary_sensor.hue_motion_sensor_2_motion - # to: 'on' - # condition: - # - condition: numeric_state - # entity_id: sensor.hue_motion_sensor_2_illuminance - # below: 90 - # - condition: time - # after: '20:00:01' - # before: '21:00:00' - # action: - # - service: homeassistant.turn_on - # target: - # entity_id: light.daniels_vaerelse - # data: - # brightness_pct: 50 + to: "off" + id: motion_off - + variables: + lux_limit: "{{ states('input_number.daniel_lux_threshold') | int }}" + brightness: "{{ states('input_number.daniel_brightness') | int }}" + timeout: "{{ states('input_number.daniel_timeout') | int }}" - - alias: 'Sluk lys i Daniel' - trigger: - platform: state - entity_id: binary_sensor.hue_motion_sensor_2_motion - to: 'off' - for: - minutes: 10 - condition: - - condition: time - after: '05:00:00' - before: '22:00:00' - action: - - service: homeassistant.turn_off - data: - entity_id: - - light.daniels_vaerelse + action: + - choose: + # Motion on: taend lys hvis lux lavt og indenfor tidsvindue + - conditions: + - condition: trigger + id: motion_on + - condition: template + value_template: > + {{ states('sensor.hue_motion_sensor_2_illuminance') | int < lux_limit }} + - condition: template + value_template: > + {% set t = now().strftime('%H%M') | int %} + {% if is_state('binary_sensor.arbejdsdag', 'on') %} + {{ 630 <= t < 1930 }} + {% else %} + {{ 1000 <= t < 1945 }} + {% endif %} + - condition: template + value_template: "{{ not is_state('input_select.daniel_status', 'syg') }}" + sequence: + - service: light.turn_on + target: + entity_id: light.daniels_vaerelse + data: + brightness_pct: "{{ brightness }}" + + # Motion off: vent timeout, sluk hvis stadig ingen bevaegelse + - conditions: + - condition: trigger + id: motion_off + sequence: + - delay: + minutes: "{{ timeout }}" + - condition: state + entity_id: binary_sensor.hue_motion_sensor_2_motion + state: "off" + - service: light.turn_off + target: + entity_id: light.daniels_vaerelse diff --git a/include/automations/lys_gang.yaml b/include/automations/lys_gang.yaml index 5192187..8eb9129 100644 --- a/include/automations/lys_gang.yaml +++ b/include/automations/lys_gang.yaml @@ -1,171 +1,68 @@ - - alias: 'Lys i gang - arbejdsdag - dag' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'on' - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'on' - - condition: numeric_state - entity_id: sensor.gang_sensor_illuminance - below: '70' - - condition: time - before: '21:30:00' - - condition: time - after: '06:30:00' - action: - - service: scene.turn_on - data: - entity_id: scene.gang_bright -# brightness: 255 -# color_temp: 396 - - - alias: 'Sluk Lys i gang - arbejdsdag - dag' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'off' - for: - minutes: 3 - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'on' - - condition: time - after: '06:30:10' - - condition: time - before: '21:30:00' - action: - service: light.turn_off - data: - entity_id: light.gang +- id: gang_motion_lys + alias: Gang lys via bevægelse + mode: restart - - alias: 'Lys i gang - ikke arbejdsdag - dag' - trigger: - platform: state + trigger: + - platform: state entity_id: binary_sensor.gang_sensor_motion - to: 'on' - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'off' - - condition: numeric_state - entity_id: sensor.gang_sensor_illuminance - below: 70 - - condition: time - after: '08:00:00' - - condition: time - before: '22:00:00' - action: - - service: scene.turn_on - data: - entity_id: scene.gang_bright -# brightness: 255 -# color_temp: 396 - - - alias: 'Sluk Lys i gang - ikke arbejdsdag - dag' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'off' - for: - minutes: 3 - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'off' - - condition: time - after: '08:00:10' - - condition: time - before: '22:00:00' - action: - service: light.turn_off - target: - entity_id: light.gang + to: "on" + id: motion_on -########## NIGHT + - platform: state + entity_id: binary_sensor.gang_sensor_motion + to: "off" + id: motion_off - - alias: 'Lys i gang - arbejdsdag - nat' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'on' - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'on' - - condition: numeric_state - entity_id: sensor.gang_sensor_illuminance - below: '70' - - condition: time - before: '06:30:00' - after: '21:30:00' - action: - - service: scene.turn_on - data: - entity_id: scene.gang_daempet_nat -# brightness_pct: 1 -# color_temp: 396 - - - alias: 'Sluk Lys i gang - arbejdsdag - nat' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'off' - for: - minutes: 1 - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'on' - - condition: time - after: '21:30:10' - before: '06:30:00' - action: - service: light.turn_off - target: - entity_id: light.gang + variables: + lux_limit: "{{ states('input_number.gang_lux_threshold') | int }}" + is_dag: > + {% set t = now().strftime('%H%M') | int %} + {% if is_state('binary_sensor.arbejdsdag', 'on') %} + {{ 630 <= t < 2130 }} + {% else %} + {{ 800 <= t < 2200 }} + {% endif %} - - alias: 'Lys i gang - ikke arbejdsdag - nat' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'on' - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'off' - # - condition: numeric_state - # entity_id: sensor.gang_sensor_light_level - # below: '70' - - condition: time - after: '22:00:00' - before: '08:00:00' - action: - - service: scene.turn_on - data: - entity_id: scene.gang_daempet_nat -# brightness_pct: 1 -# color_temp: 396 - - - - alias: 'Sluk Lys i gang - ikke arbejdsdag - nat' - trigger: - platform: state - entity_id: binary_sensor.gang_sensor_motion - to: 'off' - for: - minutes: 1 - condition: - - condition: state - entity_id: binary_sensor.arbejdsdag - state: 'off' - - condition: time - after: '22:00:10' - before: '08:00:00' - action: - - service: light.turn_off - target: - entity_id: light.gang + action: + - choose: + # Motion on - dag: taend bright scene hvis lux er lavt nok + - conditions: + - condition: trigger + id: motion_on + - condition: template + value_template: "{{ is_dag }}" + - condition: template + value_template: > + {{ states('sensor.gang_sensor_illuminance') | int < lux_limit }} + sequence: + - service: scene.turn_on + target: + entity_id: scene.gang_bright + + # Motion on - nat: taend daempet scene (ingen lux-check) + - conditions: + - condition: trigger + id: motion_on + - condition: template + value_template: "{{ not is_dag }}" + sequence: + - service: scene.turn_on + target: + entity_id: scene.gang_daempet_nat + + # Motion off: vent timeout, sluk hvis stadig ingen bevaegelse + - conditions: + - condition: trigger + id: motion_off + sequence: + - delay: + minutes: > + {{ states('input_number.gang_timeout_day') | int if is_dag + else states('input_number.gang_timeout_night') | int }} + - condition: state + entity_id: binary_sensor.gang_sensor_motion + state: "off" + - service: light.turn_off + target: + entity_id: light.gang diff --git a/include/automations/lys_kontor.yaml b/include/automations/lys_kontor.yaml index 960897e..7cc6719 100644 --- a/include/automations/lys_kontor.yaml +++ b/include/automations/lys_kontor.yaml @@ -8,9 +8,10 @@ to: "on" condition: - - condition: numeric_state - entity_id: sensor.kontor_belysningsstyrke - below: 60 + - condition: template + value_template: > + {{ states('sensor.kontor_belysningsstyrke') | int < + states('input_number.kontor_lux_threshold') | int }} action: - service: scene.turn_on @@ -36,7 +37,8 @@ - platform: state entity_id: binary_sensor.kontor_motion_bevaegelse to: "on" - timeout: "00:10:00" + timeout: + minutes: "{{ states('input_number.kontor_timeout_day') | int }}" continue_on_timeout: true - condition: state entity_id: binary_sensor.kontor_motion_bevaegelse @@ -67,7 +69,8 @@ - platform: state entity_id: binary_sensor.kontor_motion_bevaegelse to: "on" - timeout: "00:05:00" + timeout: + minutes: "{{ states('input_number.kontor_timeout_night') | int }}" continue_on_timeout: true - condition: state entity_id: binary_sensor.kontor_motion_bevaegelse diff --git a/include/input/number/daniel.yaml b/include/input/number/daniel.yaml new file mode 100644 index 0000000..a64050d --- /dev/null +++ b/include/input/number/daniel.yaml @@ -0,0 +1,23 @@ +daniel_lux_threshold: + name: Daniel lux grænse + min: 0 + max: 500 + step: 5 + unit_of_measurement: lux + initial: 90 + +daniel_timeout: + name: Daniel lys timeout + min: 1 + max: 60 + step: 1 + unit_of_measurement: min + initial: 10 + +daniel_brightness: + name: Daniel lysstyrke + min: 1 + max: 100 + step: 1 + unit_of_measurement: "%" + initial: 100 diff --git a/include/input/number/gang.yaml b/include/input/number/gang.yaml new file mode 100644 index 0000000..ce029c9 --- /dev/null +++ b/include/input/number/gang.yaml @@ -0,0 +1,23 @@ +gang_lux_threshold: + name: Gang lux grænse + min: 0 + max: 300 + step: 5 + unit_of_measurement: lux + initial: 70 + +gang_timeout_day: + name: Gang timeout dag + min: 1 + max: 20 + step: 1 + unit_of_measurement: min + initial: 3 + +gang_timeout_night: + name: Gang timeout nat + min: 1 + max: 10 + step: 1 + unit_of_measurement: min + initial: 1 diff --git a/include/input/number/kontor.yaml b/include/input/number/kontor.yaml new file mode 100644 index 0000000..419e1f5 --- /dev/null +++ b/include/input/number/kontor.yaml @@ -0,0 +1,23 @@ +kontor_lux_threshold: + name: Kontor lux grænse + min: 0 + max: 500 + step: 5 + unit_of_measurement: lux + initial: 60 + +kontor_timeout_day: + name: Kontor timeout dag + min: 1 + max: 60 + step: 1 + unit_of_measurement: min + initial: 10 + +kontor_timeout_night: + name: Kontor timeout nat + min: 1 + max: 30 + step: 1 + unit_of_measurement: min + initial: 5