Files
N22/include/automations/lys_stue.yaml
T

132 lines
4.6 KiB
YAML

- id: stue_motion_lys
alias: Stue lys via bevaegelse
mode: restart
trigger:
- platform: state
entity_id: binary_sensor.stue_bevaegelse
to: "on"
id: motion_on
- platform: state
entity_id: binary_sensor.stue_bevaegelse
to: "off"
id: motion_off
- platform: state
entity_id: media_player.samsung_s95ca_55_3
to: "off"
id: tv_off
variables:
lux_limit: "{{ states('input_number.stue_lux_threshold') | int }}"
dagperiode: >
{% set t = now().strftime('%H%M') | int %}
{% if 600 <= t < 1600 %}morgen
{% elif 1600 <= t < 1900 %}eftermiddag
{% elif 1900 <= t < 2100 %}aften_lys
{% elif 2100 <= t %}aften
{% else %}nat{% endif %}
timeout_min: >
{% set t = now().strftime('%H%M') | int %}
{% if 600 <= t < 1600 %}
{{ states('input_number.stue_timeout_morgen') | int }}
{% elif 1600 <= t < 1900 %}
{{ states('input_number.stue_timeout_eftermiddag') | int }}
{% elif 1900 <= t < 2100 %}
{{ states('input_number.stue_timeout_aften') | int }}
{% elif 2100 <= t %}
{{ states('input_number.stue_timeout_aften') | int }}
{% else %}
{{ states('input_number.stue_timeout_nat') | int }}
{% endif %}
action:
- choose:
# Motion on: taend lys hvis lux lavt
- conditions:
- condition: trigger
id: motion_on
- condition: template
value_template: >
{{ states('sensor.stue_belysningsstyrke') | int < lux_limit }}
sequence:
- choose:
# Gæster: altid Annes favorit uanset tidspunkt
- conditions:
- condition: state
entity_id: input_boolean.gaester
state: "on"
sequence:
- service: scene.turn_on
target:
entity_id: scene.stue_annes_favorit
- conditions:
- condition: template
value_template: "{{ dagperiode == 'morgen' }}"
sequence:
- service: scene.turn_on
target:
entity_id: scene.stue_bright
- conditions:
- condition: template
value_template: "{{ dagperiode == 'eftermiddag' }}"
sequence:
- service: scene.turn_on
target:
entity_id: scene.stue_annes_favorit
- conditions:
- condition: template
value_template: "{{ dagperiode == 'aften_lys' }}"
sequence:
- service: scene.turn_on
target:
entity_id: scene.stue_annes_favorit
default:
- service: scene.turn_on
target:
entity_id: scene.stue_relax_minus_syd
# Motion off: vent timeout, sluk hvis stadig ingen bevaegelse
# Aften: springer over hvis TV er taendt (TV-off trigger haandterer det)
- conditions:
- condition: trigger
id: motion_off
- condition: template
value_template: >
{{ dagperiode not in ('aften','aften_lys') or
is_state('media_player.samsung_s95ca_55_3', 'off') }}
sequence:
- delay:
minutes: "{{ timeout_min }}"
- condition: state
entity_id: binary_sensor.stue_bevaegelse
state: "off"
- condition: template
value_template: >
{{ dagperiode not in ('aften','aften_lys') or
is_state('media_player.samsung_s95ca_55_3', 'off') }}
- service: light.turn_off
target:
entity_id: light.livingroom
# TV slukket om aftenen: vent 10 min, sluk hvis ingen bevaegelse
- conditions:
- condition: trigger
id: tv_off
- condition: template
value_template: "{{ dagperiode in ('aften','aften_lys') }}"
sequence:
- delay:
minutes: "{{ timeout_min }}"
- condition: state
entity_id: binary_sensor.stue_bevaegelse
state: "off"
- condition: state
entity_id: media_player.samsung_s95ca_55_3
state: "off"
- service: light.turn_off
target:
entity_id: light.livingroom