Upload files to "Blueprints"
This commit is contained in:
320
Blueprints/PTM_21xZ_ZE.yaml
Normal file
320
Blueprints/PTM_21xZ_ZE.yaml
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
blueprint:
|
||||||
|
homeassistant:
|
||||||
|
min_version: 2024.10.0
|
||||||
|
name: EnOcean PTM 21xZ/ZE (MQTT trigger)
|
||||||
|
description: "Controller automation for executing **press/hold/release** actions
|
||||||
|
triggered by EnOcean PTM 21xZ/ZE switch.\n\n**PTM216Z**\nMake sure to manually
|
||||||
|
create a separate **Text Helper** and define its entity in the automation. It
|
||||||
|
is used to store the last controller event to filter and handle `button hold`
|
||||||
|
actions.\n\n**SETTINGS**\nIn this tab, there is the possibility to change different
|
||||||
|
parameters.\n - **Base topic**\n - **Hold delay**\n - **PTM216Z - Specific
|
||||||
|
settings**\n\nℹ️ Version 2025.12.13\n"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
controller:
|
||||||
|
name: Controller Name
|
||||||
|
description: The name of the controller as defined in Z2M (e.g. Livingroom_Switch)
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
type: text
|
||||||
|
multiple: true
|
||||||
|
multiline: false
|
||||||
|
settings_section:
|
||||||
|
name: Settings
|
||||||
|
icon: mdi:cog-outline
|
||||||
|
collapsed: true
|
||||||
|
input:
|
||||||
|
base_topic:
|
||||||
|
name: Base topic (MQTT)
|
||||||
|
description: The base topic as configured in z2m
|
||||||
|
default: zigbee2mqtt
|
||||||
|
hold_delay:
|
||||||
|
name: Hold delay
|
||||||
|
description: If the button has been held more than the configured Hold delay,
|
||||||
|
the corresponding held action is triggered.
|
||||||
|
default: 500
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 100.0
|
||||||
|
max: 1000.0
|
||||||
|
unit_of_measurement: milliseconds
|
||||||
|
mode: box
|
||||||
|
step: 10.0
|
||||||
|
ptm216z_selector:
|
||||||
|
name: PTM216Z
|
||||||
|
description: Turn **On** only if using a PTM216Z
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean: {}
|
||||||
|
helper_last_controller_event:
|
||||||
|
name: PTM216Z - Last Controller Event
|
||||||
|
description: 'Input Text used to store the last event fired by the controller.
|
||||||
|
|
||||||
|
You will need to manually create a text input Helper entity for this.
|
||||||
|
|
||||||
|
'
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain:
|
||||||
|
- input_text
|
||||||
|
multiple: false
|
||||||
|
reorder: false
|
||||||
|
ptm21xz_ze_actions:
|
||||||
|
name: PTM21xZ/ZE - Actions
|
||||||
|
icon: mdi:gesture-tap
|
||||||
|
collapsed: true
|
||||||
|
input:
|
||||||
|
button_1_pressed:
|
||||||
|
name: Button 1 Pressed
|
||||||
|
description: Action to run when button 1 is pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_held:
|
||||||
|
name: Button 1 Held
|
||||||
|
description: Action to run when the button 1 is held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_released:
|
||||||
|
name: Button 1 Released
|
||||||
|
description: Action to run when the button 1 is released after long press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_pressed:
|
||||||
|
name: Button 2 Pressed
|
||||||
|
description: Action to run when the button 2 pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_held:
|
||||||
|
name: Button 2 Held
|
||||||
|
description: Action to run when the button 2 is held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_released:
|
||||||
|
name: Button 2 Released
|
||||||
|
description: Action to run when the button 2 is released after long press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_3_pressed:
|
||||||
|
name: Button 3 Pressed
|
||||||
|
description: Action to run when the button 3 is pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_3_held:
|
||||||
|
name: Button 3 Held
|
||||||
|
description: Action to run when the button 3 is held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_3_released:
|
||||||
|
name: Button 3 Released
|
||||||
|
description: Action to run when the button 3 is released after long press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_4_pressed:
|
||||||
|
name: Button 4 Pressed
|
||||||
|
description: Action to run when the button 4 is pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_4_held:
|
||||||
|
name: Button 4 Held
|
||||||
|
description: Action to run when the button 4 is held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_4_released:
|
||||||
|
name: Button 4 Released
|
||||||
|
description: Action to run when the button 4 is released after long press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_and_3_pressed:
|
||||||
|
name: Buttons 1 and 3 Pressed
|
||||||
|
description: Action to run when buttons 1 and 3 are pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_and_3_held:
|
||||||
|
name: Buttons 1 and 3 Held
|
||||||
|
description: Action to run when buttons 1 and 3 are held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_and_3_released:
|
||||||
|
name: Buttons 1 and 3 Released
|
||||||
|
description: Action to run when buttons 1 and 3 are released after long
|
||||||
|
press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_and_4_pressed:
|
||||||
|
name: Buttons 2 and 4 Pressed
|
||||||
|
description: Action to run when buttons 2 and 4 are pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_and_4_held:
|
||||||
|
name: Buttons 2 and 4 Held
|
||||||
|
description: Action to run when buttons 2 and 4 are held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_and_4_released:
|
||||||
|
name: Buttons 2 and 4 Released
|
||||||
|
description: Action to run when buttons 2 and 4 are released after long
|
||||||
|
press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
ptm21xz_ze_two_fingers_actions:
|
||||||
|
name: PTM215ZE / PTM216Z - Two fingers actions
|
||||||
|
icon: mdi:gesture-two-tap
|
||||||
|
collapsed: true
|
||||||
|
input:
|
||||||
|
button_1_and_4_pressed:
|
||||||
|
name: Buttons 1 and 4 Pressed
|
||||||
|
description: Action to run when buttons 1 and 4 are pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_and_4_held:
|
||||||
|
name: Buttons 1 and 4 Held
|
||||||
|
description: Action to run when buttons 1 and 4 are held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_1_and_4_released:
|
||||||
|
name: Button 1 and 4 Released
|
||||||
|
description: Action to run when buttons 1 and 4 are released after long
|
||||||
|
press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_and_3_pressed:
|
||||||
|
name: Buttons 2 and 3 Pressed
|
||||||
|
description: Action to run when buttons 2 and 3 are pressed.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_and_3_held:
|
||||||
|
name: Buttons 2 and 3 Held
|
||||||
|
description: Action to run when buttons 2 and 3 are held.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
button_2_and_3_released:
|
||||||
|
name: Buttons 2 and 3 Released
|
||||||
|
description: Action to run when buttons 2 and 3 are released after long
|
||||||
|
press.
|
||||||
|
default: []
|
||||||
|
selector:
|
||||||
|
action: {}
|
||||||
|
source_url: https://github.com/chris-1243/HA---Blueprint/blob/main/PTM_21xZ_ZE.yaml
|
||||||
|
mode: single
|
||||||
|
max_exceeded: silent
|
||||||
|
trigger_variables:
|
||||||
|
base_topic: !input base_topic
|
||||||
|
triggers:
|
||||||
|
- trigger: mqtt
|
||||||
|
topic: '{{ base_topic ~ "/+" ~ "/action" }}'
|
||||||
|
variables:
|
||||||
|
command: '{{ trigger.payload }}'
|
||||||
|
controller: !input controller
|
||||||
|
mqtt_topic: '{{ trigger.topic }}'
|
||||||
|
conditions:
|
||||||
|
and:
|
||||||
|
- '{{ mqtt_topic.split("/")[1] in controller }}'
|
||||||
|
- '{{ command.split("_", 1)[0] in ("press", "release") }}'
|
||||||
|
actions:
|
||||||
|
- variables:
|
||||||
|
helper_last_controller_event: !input helper_last_controller_event
|
||||||
|
ptm216z: !input ptm216z_selector
|
||||||
|
prev_command: '{% if ptm216z %} {{ states(helper_last_controller_event) }} {%
|
||||||
|
else %} none {% endif %}'
|
||||||
|
- sequence:
|
||||||
|
- if: '{{ ptm216z }}'
|
||||||
|
then:
|
||||||
|
- action: input_text.set_value
|
||||||
|
data:
|
||||||
|
entity_id: '{{ helper_last_controller_event }}'
|
||||||
|
value: '{{ command }}'
|
||||||
|
- choose:
|
||||||
|
- conditions: '{{ "release" in command }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
- conditions: '{{ command == "release_1" or prev_command == "press_1" }}'
|
||||||
|
sequence: !input button_1_released
|
||||||
|
- conditions: '{{ command == "release_2" or prev_command == "press_2" }}'
|
||||||
|
sequence: !input button_2_released
|
||||||
|
- conditions: '{{ command == "release_3" or prev_command == "press_3" }}'
|
||||||
|
sequence: !input button_3_released
|
||||||
|
- conditions: '{{ command == "release_4" or prev_command == "press_4" }}'
|
||||||
|
sequence: !input button_4_released
|
||||||
|
- conditions: '{{ command == "release_1_and_3" or prev_command == "press_1_and_3"
|
||||||
|
}}'
|
||||||
|
sequence: !input button_1_and_3_released
|
||||||
|
- conditions: '{{ command == "release_2_and_4" or prev_command == "press_2_and_4"
|
||||||
|
}}'
|
||||||
|
sequence: !input button_2_and_4_released
|
||||||
|
- conditions: '{{ command == "release_1_and_4" or prev_command == "press_1_and_4"
|
||||||
|
}}'
|
||||||
|
sequence: !input button_1_and_4_released
|
||||||
|
- conditions: '{{ command == "release_2_and_3" or prev_command == "press_2_and_3"
|
||||||
|
}}'
|
||||||
|
sequence: !input button_2_and_3_released
|
||||||
|
- conditions: '{{ "press" in command }}'
|
||||||
|
sequence:
|
||||||
|
- wait_for_trigger:
|
||||||
|
- trigger: mqtt
|
||||||
|
topic: '{{ mqtt_topic }}'
|
||||||
|
payload: release
|
||||||
|
value_template: '{{ value.split("_", 1)[0] }}'
|
||||||
|
timeout:
|
||||||
|
milliseconds: !input hold_delay
|
||||||
|
- if: '{{ wait.trigger != None }}'
|
||||||
|
then:
|
||||||
|
- choose:
|
||||||
|
- conditions: '{{ command == "press_1" }}'
|
||||||
|
sequence: !input button_1_pressed
|
||||||
|
- conditions: '{{ command == "press_2" }}'
|
||||||
|
sequence: !input button_2_pressed
|
||||||
|
- conditions: '{{ command == "press_3" }}'
|
||||||
|
sequence: !input button_3_pressed
|
||||||
|
- conditions: '{{ command == "press_4" }}'
|
||||||
|
sequence: !input button_4_pressed
|
||||||
|
- conditions: '{{ command == "press_1_and_3" }}'
|
||||||
|
sequence: !input button_1_and_3_pressed
|
||||||
|
- conditions: '{{ command == "press_2_and_4" }}'
|
||||||
|
sequence: !input button_2_and_4_pressed
|
||||||
|
- conditions: '{{ command == "press_1_and_4" }}'
|
||||||
|
sequence: !input button_1_and_4_pressed
|
||||||
|
- conditions: '{{ command == "press_2_and_3" }}'
|
||||||
|
sequence: !input button_2_and_3_pressed
|
||||||
|
else:
|
||||||
|
- choose:
|
||||||
|
- conditions: '{{ command == "press_1" }}'
|
||||||
|
sequence: !input button_1_held
|
||||||
|
- conditions: '{{ command == "press_2" }}'
|
||||||
|
sequence: !input button_2_held
|
||||||
|
- conditions: '{{ command == "press_3" }}'
|
||||||
|
sequence: !input button_3_held
|
||||||
|
- conditions: '{{ command == "press_4" }}'
|
||||||
|
sequence: !input button_4_held
|
||||||
|
- conditions: '{{ command == "press_1_and_3" }}'
|
||||||
|
sequence: !input button_1_and_3_held
|
||||||
|
- conditions: '{{ command == "press_2_and_4" }}'
|
||||||
|
sequence: !input button_2_and_4_held
|
||||||
|
- conditions: '{{ command == "press_1_and_4" }}'
|
||||||
|
sequence: !input button_1_and_4_held
|
||||||
|
- conditions: '{{ command == "press_2_and_3" }}'
|
||||||
|
sequence: !input button_2_and_3_held
|
||||||
167
Blueprints/moes_presence_light.yaml
Normal file
167
Blueprints/moes_presence_light.yaml
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
blueprint:
|
||||||
|
name: MOES Presence Light (Lux + Delay)
|
||||||
|
description: >
|
||||||
|
Tænder lys ved registreret occupancy hvis lux er under den valgte grænse.
|
||||||
|
Slukker igen efter valgt forsinkelse når occupancy er væk.
|
||||||
|
|
||||||
|
domain: automation
|
||||||
|
|
||||||
|
input:
|
||||||
|
|
||||||
|
presence_sensor:
|
||||||
|
name: Presence sensor
|
||||||
|
description: MOES ZSS-QY-HP occupancy sensor
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: binary_sensor
|
||||||
|
device_class: occupancy
|
||||||
|
|
||||||
|
illuminance_sensor:
|
||||||
|
name: Illuminance sensor
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: sensor
|
||||||
|
|
||||||
|
lights:
|
||||||
|
name: Lys
|
||||||
|
selector:
|
||||||
|
target:
|
||||||
|
entity:
|
||||||
|
domain: light
|
||||||
|
|
||||||
|
lux_limit:
|
||||||
|
name: Maksimum lux
|
||||||
|
description: Lyset tænder kun under denne værdi.
|
||||||
|
default: 500
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 5000
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: lx
|
||||||
|
mode: box
|
||||||
|
|
||||||
|
brightness:
|
||||||
|
name: Lysstyrke
|
||||||
|
default: 50
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 100
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
mode: slider
|
||||||
|
|
||||||
|
transition:
|
||||||
|
name: Transition
|
||||||
|
default: 0
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 30
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: s
|
||||||
|
mode: slider
|
||||||
|
|
||||||
|
off_delay:
|
||||||
|
name: Vent før sluk
|
||||||
|
description: Hvor længe occupancy skal være væk før lyset slukker.
|
||||||
|
default: 30
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 600
|
||||||
|
step: 1
|
||||||
|
unit_of_measurement: s
|
||||||
|
mode: slider
|
||||||
|
|
||||||
|
enable_time:
|
||||||
|
name: Begræns til tidspunkt?
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
|
||||||
|
start_time:
|
||||||
|
name: Starttid
|
||||||
|
default: "00:00:00"
|
||||||
|
selector:
|
||||||
|
time:
|
||||||
|
|
||||||
|
end_time:
|
||||||
|
name: Sluttid
|
||||||
|
default: "23:59:59"
|
||||||
|
selector:
|
||||||
|
time:
|
||||||
|
|
||||||
|
mode: restart
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input presence_sensor
|
||||||
|
to: "on"
|
||||||
|
id: detected
|
||||||
|
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input presence_sensor
|
||||||
|
to: "off"
|
||||||
|
for:
|
||||||
|
seconds: !input off_delay
|
||||||
|
id: cleared
|
||||||
|
|
||||||
|
variables:
|
||||||
|
|
||||||
|
enable_time: !input enable_time
|
||||||
|
|
||||||
|
condition: []
|
||||||
|
|
||||||
|
action:
|
||||||
|
|
||||||
|
- choose:
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
## Presence detected
|
||||||
|
##############################################################
|
||||||
|
|
||||||
|
- conditions:
|
||||||
|
|
||||||
|
- condition: trigger
|
||||||
|
id: detected
|
||||||
|
|
||||||
|
- condition: numeric_state
|
||||||
|
entity_id: !input illuminance_sensor
|
||||||
|
below: !input lux_limit
|
||||||
|
|
||||||
|
- condition: or
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ not enable_time }}"
|
||||||
|
|
||||||
|
- condition: time
|
||||||
|
after: !input start_time
|
||||||
|
before: !input end_time
|
||||||
|
|
||||||
|
sequence:
|
||||||
|
|
||||||
|
- service: light.turn_on
|
||||||
|
target: !input lights
|
||||||
|
data:
|
||||||
|
brightness_pct: !input brightness
|
||||||
|
transition: !input transition
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
## Presence cleared
|
||||||
|
##############################################################
|
||||||
|
|
||||||
|
- conditions:
|
||||||
|
|
||||||
|
- condition: trigger
|
||||||
|
id: cleared
|
||||||
|
|
||||||
|
sequence:
|
||||||
|
|
||||||
|
- service: light.turn_off
|
||||||
|
target: !input lights
|
||||||
|
data:
|
||||||
|
transition: !input transition
|
||||||
106
Blueprints/nad.yaml
Normal file
106
Blueprints/nad.yaml
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
blueprint:
|
||||||
|
name: NAD M12 - Smart Power Follow
|
||||||
|
description: >
|
||||||
|
Tænder NAD-forstærkeren når én eller flere media_players bliver aktive,
|
||||||
|
og slukker først når alle er slukkede.
|
||||||
|
|
||||||
|
domain: automation
|
||||||
|
|
||||||
|
input:
|
||||||
|
media_players:
|
||||||
|
name: Media Players
|
||||||
|
description: >
|
||||||
|
Vælg alle de media_players som skal kunne tænde NAD.
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: media_player
|
||||||
|
multiple: true
|
||||||
|
|
||||||
|
amplifier:
|
||||||
|
name: NAD M12
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: media_player
|
||||||
|
|
||||||
|
power_on_delay:
|
||||||
|
name: Forsinkelse før tænd
|
||||||
|
default: 0
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 60
|
||||||
|
unit_of_measurement: sek
|
||||||
|
mode: box
|
||||||
|
|
||||||
|
power_off_delay:
|
||||||
|
name: Forsinkelse før sluk
|
||||||
|
default: 30
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 600
|
||||||
|
unit_of_measurement: sek
|
||||||
|
mode: box
|
||||||
|
|
||||||
|
mode: restart
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input media_players
|
||||||
|
|
||||||
|
variables:
|
||||||
|
players: !input media_players
|
||||||
|
|
||||||
|
action:
|
||||||
|
|
||||||
|
- variables:
|
||||||
|
active_players: >
|
||||||
|
{{
|
||||||
|
expand(players)
|
||||||
|
| rejectattr('state','in',
|
||||||
|
['off','unknown','unavailable'])
|
||||||
|
| list
|
||||||
|
}}
|
||||||
|
|
||||||
|
- choose:
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
## Min. én enhed er aktiv -> Tænd NAD
|
||||||
|
###################################################
|
||||||
|
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ active_players | count > 0 }}"
|
||||||
|
sequence:
|
||||||
|
|
||||||
|
- delay:
|
||||||
|
seconds: !input power_on_delay
|
||||||
|
|
||||||
|
- service: media_player.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: !input amplifier
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
## Alle enheder er OFF -> Sluk NAD
|
||||||
|
###################################################
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
- delay:
|
||||||
|
seconds: !input power_off_delay
|
||||||
|
|
||||||
|
- variables:
|
||||||
|
active_players: >
|
||||||
|
{{
|
||||||
|
expand(players)
|
||||||
|
| rejectattr('state','in',
|
||||||
|
['off','unknown','unavailable'])
|
||||||
|
| list
|
||||||
|
}}
|
||||||
|
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ active_players | count == 0 }}"
|
||||||
|
|
||||||
|
- service: media_player.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: !input amplifier
|
||||||
171
Blueprints/outdoor_light.yaml
Normal file
171
Blueprints/outdoor_light.yaml
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
blueprint:
|
||||||
|
name: Outdoor Light - Sunset, Night Off, Morning On
|
||||||
|
description: >
|
||||||
|
Turns outdoor lights on when it gets dark, 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: "°"
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
mode: single
|
||||||
|
|
||||||
|
variables:
|
||||||
|
enable_entity: !input enable_entity
|
||||||
|
night_off_enabled: !input night_off_enabled
|
||||||
|
morning_on_enabled: !input morning_on_enabled
|
||||||
|
|
||||||
|
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: 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
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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
|
||||||
Reference in New Issue
Block a user