diff --git a/Blueprints/outdoor_light_v2 b/Blueprints/outdoor_light_v2 new file mode 100644 index 0000000..c7c49b5 --- /dev/null +++ b/Blueprints/outdoor_light_v2 @@ -0,0 +1,227 @@ +blueprint: + name: Outdoor Light - Sunset, Dim, Night Off, Morning On + description: > + Turns outdoor lights on when it gets dark, optionally dims them at a + configured time, turns them off at a configured night time, optionally + turns them back on in the morning if it is still dark, and finally + turns them off again when daylight returns. + + domain: automation + + input: + + light_target: + name: Light(s) + selector: + target: + entity: + domain: light + + enable_entity: + name: Enable Entity (optional) + description: > + Automation only runs while this entity is ON. + default: + selector: + entity: + + evening_elevation: + name: Evening elevation + description: Turn lights on below this sun elevation. + default: -4 + selector: + number: + min: -12 + max: 5 + step: 0.5 + mode: slider + unit_of_measurement: "°" + + morning_elevation: + name: Morning elevation + description: Turn lights off above this sun elevation. + default: -4 + selector: + number: + min: -12 + max: 5 + step: 0.5 + mode: slider + unit_of_measurement: "°" + + dim_enabled: + name: Enable Dimming + description: > + Dim the lights to a configured brightness at a configured time. + default: false + selector: + boolean: + + dim_time: + name: Dim Time + description: Time when the lights should be dimmed. + default: "22:00:00" + selector: + time: + + dim_brightness: + name: Dim Brightness + description: Brightness percentage to use at the dim time. + default: 20 + selector: + number: + min: 1 + max: 100 + step: 1 + mode: slider + unit_of_measurement: "%" + + night_off_enabled: + name: Enable Night Off + default: true + selector: + boolean: + + night_off_time: + name: Night Off Time + default: "23:00:00" + selector: + time: + + morning_on_enabled: + name: Enable Morning On + default: true + selector: + boolean: + + morning_on_time: + name: Morning On Time + default: "05:30:00" + selector: + time: + +variables: + enable_entity: !input enable_entity + night_off_enabled: !input night_off_enabled + morning_on_enabled: !input morning_on_enabled + dim_enabled: !input dim_enabled + dim_brightness: !input dim_brightness + +trigger: + + - id: evening + platform: numeric_state + entity_id: sun.sun + attribute: elevation + below: !input evening_elevation + + - id: morning + platform: numeric_state + entity_id: sun.sun + attribute: elevation + above: !input morning_elevation + + - id: dim + platform: time + at: !input dim_time + + - id: night_off + platform: time + at: !input night_off_time + + - id: morning_on + platform: time + at: !input morning_on_time + +condition: + - condition: template + value_template: > + {% if enable_entity is none %} + true + {% elif enable_entity == '' %} + true + {% else %} + {{ is_state(enable_entity, 'on') }} + {% endif %} + +action: + - choose: + + # + # Evening + # + - conditions: + - condition: trigger + id: evening + + sequence: + - service: light.turn_on + target: !input light_target + data: + brightness_pct: 100 + + # + # Dim + # + - conditions: + - condition: trigger + id: dim + + - condition: template + value_template: "{{ dim_enabled }}" + + - condition: state + entity_id: !input light_target + state: "on" + + sequence: + - service: light.turn_on + target: !input light_target + data: + brightness_pct: "{{ dim_brightness }}" + + # + # Morning + # + - conditions: + - condition: trigger + id: morning + + sequence: + - service: light.turn_off + target: !input light_target + + # + # Night Off + # + - conditions: + - condition: trigger + id: night_off + + - condition: template + value_template: "{{ night_off_enabled }}" + + sequence: + - service: light.turn_off + target: !input light_target + + # + # Morning On + # + - conditions: + - condition: trigger + id: morning_on + + - condition: template + value_template: "{{ morning_on_enabled }}" + + - condition: numeric_state + entity_id: sun.sun + attribute: elevation + below: !input morning_elevation + + sequence: + - service: light.turn_on + target: !input light_target + data: + brightness_pct: 100 \ No newline at end of file