Advertisement
Guest User

Untitled

a guest
Mar 20th, 2025
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 6.53 KB | None | 0 0
  1. alias: Update Light Adaptively
  2. description: >-
  3.   Dynamically adjusts a single light based on presence, ambient light, sleep
  4.   mode, bright mode, and predefined conditions.
  5. icon: mdi:lightbulb-auto
  6. fields:
  7.   light:
  8.     name: Light
  9.     required: true
  10.     selector:
  11.       entity:
  12.         domain: light
  13.   light_sensor:
  14.     name: Light Sensor (Optional)
  15.     selector:
  16.       entity:
  17.         domain: sensor
  18.         device_class: illuminance
  19.   presence_sensor:
  20.     name: Presence Sensor (Optional)
  21.     selector:
  22.       entity:
  23.         domain: binary_sensor
  24.         device_class: occupancy
  25.     required: false
  26.   always_on:
  27.     name: Always On
  28.     description: If true, this light will always stay on, regardless of lux values.
  29.     selector:
  30.       boolean: {}
  31.     required: true
  32.   always_on_in_sleep_mode:
  33.     name: Always On in Sleep Mode
  34.     description: >-
  35.       If true, the light stays on in sleep mode even if no presence is detected.
  36.       **This will be treated as true if "Sleep Mode Color" is defined
  37.     selector:
  38.       boolean: {}
  39.     required: true
  40.   bright_mode:
  41.     name: Bright Mode
  42.     description: >-
  43.       Specify a toggle entity (e.g., input_boolean.cooking_mode) that, when ON,
  44.       forces full brightness and a 2-minute delay before turning off.
  45.     selector:
  46.       entity:
  47.         domain: input_boolean
  48.     required: true
  49.   no_presence_color:
  50.     name: Color when No Presence
  51.     selector:
  52.       color_rgb: {}
  53.   sleep_mode_color:
  54.     name: Sleep Mode Color (Optional)
  55.     description: >-
  56.       If defined, this color is used in sleep mode instead of the default
  57.       behavior. **If this field is set, the light will stay on in sleep mode
  58.       even if "Always On in Sleep Mode" is disabled.**
  59.     selector:
  60.       color_rgb: {}
  61.     required: false
  62.   skip_delay:
  63.     name: Skip Delay
  64.     description: If true, the light updates immediately without waiting for the delay.
  65.     selector:
  66.       boolean: {}
  67.     required: true
  68. sequence:
  69.   - variables:
  70.       always_on_in_sleep_mode: "{{ always_on_in_sleep_mode or sleep_mode_color is defined }}"
  71.       lux_value: "{{ states(light_sensor) | float(0) if light_sensor else 0 }}"
  72.       is_low_light: "{{ lux_value < 60 }}"
  73.       has_presence: "{{ presence_sensor is defined and is_state(presence_sensor, 'on') }}"
  74.       is_bright_mode: "{{ bright_mode and is_state(bright_mode, 'on') }}"
  75.       is_sleep_mode: "{{ is_state('input_boolean.sleep_mode', 'on') }}"
  76.       turn_on: >-
  77.         {{ always_on or (is_low_light and not is_sleep_mode) or (is_low_light
  78.         and has_presence) or (is_sleep_mode and always_on_in_sleep_mode) }}
  79.       presence_brightness: "{{ (35 - (lux_value / 20)) | int }}"
  80.       no_presence_brightness: "{{ (presence_brightness / 2) | int }}"
  81.       no_sensor_brightness: "{{ ((presence_brightness + no_presence_brightness) / 2) | int }}"
  82.       brightness: |-
  83.         {{
  84.           100 if has_presence and is_bright_mode else
  85.           presence_brightness if has_presence else
  86.           no_presence_brightness if light_sensor else
  87.           no_sensor_brightness
  88.         }}
  89.       kelvin: >-
  90.         {{ (3800 - (lux_value / 8)) | int if is_bright_mode else (2800 -
  91.         (lux_value / 8)) | int if light_sensor else 2200 }}
  92.       use_sleep_mode_color: "{{ sleep_mode_color is defined and is_sleep_mode }}"
  93.       selected_color: "{{ sleep_mode_color if use_sleep_mode_color else no_presence_color }}"
  94.       effective_delay: >-
  95.         {{ 0 if skip_delay else (180 if is_sleep_mode or is_bright_mode else 30)
  96.         }}
  97.   - if:
  98.       - condition: template
  99.         value_template: "{{ presence_sensor is defined and not has_presence }}"
  100.     then:
  101.       - delay:
  102.           seconds: "{{ effective_delay }}"
  103.   - choose:
  104.       - conditions:
  105.           - condition: template
  106.             value_template: "{{ turn_on and has_presence }}"
  107.         sequence:
  108.           - target:
  109.               entity_id: "{{ light }}"
  110.             data:
  111.               brightness_pct: "{{ brightness }}"
  112.               kelvin: "{{ kelvin | string }}"
  113.               transition: 2
  114.             action: light.turn_on
  115.           - data:
  116.               message: >-
  117.                 "Light {{ light }} turned ON with kelvin {{ kelvin }} and
  118.                brightness {{ brightness }}  because presence_sensor: {{
  119.                presence_sensor if presence_sensor is defined else 'Not Set' }}
  120.                ({{ 'ON' if has_presence else 'OFF' }}),  light_sensor: {{
  121.                light_sensor if light_sensor is defined else 'Not Set' }} ({{
  122.                lux_value }} lx),  bright_mode: {{ 'ON' if is_bright_mode else
  123.                'OFF' }},  always_on: {{ always_on }}."
  124.             action: system_log.write
  125.       - conditions:
  126.           - condition: template
  127.             value_template: "{{ turn_on }}"
  128.         sequence:
  129.           - target:
  130.               entity_id: "{{ light }}"
  131.             data:
  132.               brightness_pct: "{{ brightness }}"
  133.               rgb_color: "{{ selected_color }}"
  134.               transition: 2
  135.             action: light.turn_on
  136.           - data:
  137.               message: >-
  138.                 "Light {{ light }} turned ON with color {{ selected_color }} and
  139.                brightness {{ brightness }}  because presence_sensor: {{
  140.                presence_sensor if presence_sensor is defined else 'Not Set' }}
  141.                (OFF),  light_sensor: {{ light_sensor if light_sensor is defined
  142.                else 'Not Set' }} ({{ lux_value }} lx),  sleep_mode: {{ 'ON' if
  143.                is_sleep_mode else 'OFF' }},  always_on_in_sleep_mode: {{
  144.                always_on_in_sleep_mode }}."
  145.             action: system_log.write
  146.       - conditions:
  147.           - condition: template
  148.             value_template: "{{ not turn_on }}"
  149.         sequence:
  150.           - target:
  151.               entity_id: "{{ light }}"
  152.             data:
  153.               transition: 2
  154.             action: light.turn_off
  155.           - data:
  156.               message: >-
  157.                 "Light {{ light }} turned OFF after {{ effective_delay }}s
  158.                delay  because presence_sensor: {{ presence_sensor if
  159.                presence_sensor is defined else 'Not Set' }} ({{ 'ON' if
  160.                has_presence else 'OFF' }}),  light_sensor: {{ light_sensor if
  161.                light_sensor is defined else 'Not Set' }} ({{ lux_value }} lx),
  162.                sleep_mode: {{ 'ON' if is_sleep_mode else 'OFF' }},
  163.                bright_mode: {{ 'ON' if is_bright_mode else 'OFF' }},
  164.                always_on: {{ always_on }}."
  165.             action: system_log.write
  166. mode: parallel
  167. max: 20
  168.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement