plex-configs/home_assistant/blueprints/scripts/inovelli_vzm31-sn_notificat...

250 lines
6.9 KiB
YAML

# This blueprint will allow you to make one generic script, and pass in all variables, including target switch, effect, colors, etc. on each call.
# Users do NOT need to set up a per-device copy of this script.
blueprint:
name: Inovelli VZM31-SN or VZM35-SN Notification LED (ZHA)
description: >-
A script that sets the notification LED bar of an Inovelli light switch.
source_url: https://raw.githubusercontent.com/nwithan8/configs/main/home_assistant/blueprints/scripts/inovelli_vzm31-sn_notification_led_zha.yaml
domain: script
fields:
switch:
name: Inovelli VZM31-SN or VZM35-SN
description: Which light switch to program
required: true
selector:
device:
integration: zha
manufacturer: Inovelli
led:
name: LED
description: Which LED to program (LED 1 is the bottom-most LED)
required: false
selector:
select:
options:
- "All"
- "LED 1"
- "LED 2"
- "LED 3"
- "LED 4"
- "LED 5"
- "LED 6"
- "LED 7"
default: "All"
effect:
name: Effect
description: >
Effect to use. Some effects cannot be used on a single LED; if an invalid match is provided, the effect will be overriden to "Solid"
required: true
selector:
select:
# 'Chase' is legacy, but still supported (equates to 'Medium Chase')
options:
- "Off"
- "Clear"
- "Solid"
- "Slow Blink"
- "Medium Blink"
- "Fast Blink"
- "Pulse"
- "Aurora"
- "Slow Falling"
- "Medium Falling"
- "Fast Falling"
- "Slow Rising"
- "Medium Rising"
- "Fast Rising"
- "Slow Siren"
- "Fast Siren"
- "Chase"
- "Slow Chase"
- "Medium Chase"
- "Fast Chase"
- "Open-Close"
- "Small-Big"
default: "Solid"
duration:
name: Duration
description: How long the effect should last, in seconds (1-254, 255 for indefinite)
required: true
selector:
number:
min: 1
max: 255
level:
name: Intensity
description: How intense the light should be, percentage (0-100)
required: true
selector:
number:
min: 0
max: 100
color:
name: Color
description: The color the light should be, (0-254, 255 for white)
required: false
selector:
number:
min: 0
max: 255
color_preset:
name: Color Preset
description: Special color preset to use (overrides color setting and LED selection)
required: false
selector:
select:
options:
- "Warm"
- "Cool"
- "Rainbow"
- "Police"
variables:
all_led_mode_value: -1
led_values:
"all": >
{{ all_led_mode_value }}
"led 1": 0
"led 2": 1
"led 3": 2
"led 4": 3
"led 5": 4
"led 6": 5
"led 7": 6
led: '{{ led|default("all") }}'
led_value: >-
{{ led_values[led | lower] | int }}
# Main + legacy effects mapping
effect_values:
"off": 0
"clear": 255
"solid": 1
"slow blink": 3
"medium blink": 15
"fast blink": 2
"pulse": 4
"aurora": 8
"slow falling": 9
"medium falling": 10
"fast falling": 11
"slow rising": 12
"medium rising": 13
"fast rising": 14
"chase": 5
"slow chase": 16
"medium chase": 5
"fast chase": 17
"fast siren": 18
"slow siren": 19
"open-close": 6
"small-big": 7
# Only 0-8 + 255 can be used to set a single LED
single_led_compatible_effect_values:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 255
effect: '{{ effect|default("solid") }}'
effect_value: >
{% set val = effect_values[effect | lower] | int %}
{% if led_value != all_led_mode_value and val not in single_led_compatible_effect_values %}
{% set val = effect_values["solid"] | int %}
{% endif %}
{{ val }}
color: "{{ color|default(255) }}"
special_color_preset: '{{ color_preset|default("none") }}'
use_special_color_preset: >
{{ special_color_preset != "none" }}
# Max 7 colors, starting from the bottom LED
special_colors_orders:
"none": [ ]
"warm": [ 45, 38, 31, 23, 17, 10, 0 ]
"cool": [ 56, 73, 98, 119, 151, 175, 187]
"rainbow": [222, 189, 166, 94, 53, 25, 0]
"police": [165, 165, 255, 255, 255, 0, 0]
special_color_order: >
{{ special_colors_orders[special_color_preset | lower] }}
sequence:
- choose:
# Single color for one or all LEDs
- conditions:
- condition: template
value_template: >
{{ not use_special_color_preset }}
sequence:
- service: zha.issue_zigbee_cluster_command
data:
ieee: >
{{ (device_attr(switch, "identifiers")|list).0.1 }}
endpoint_id: 1
cluster_id: 64561
cluster_type: in
# 1 = all LEDs, 3 = specific LED
command: >
{{ iif(led_value == -1, 1, 3) }}
command_type: server
params: >
{% if led_value == -1 %}
{% set payload_data = {
"led_effect": effect_value,
"led_color": color,
"led_level": level,
"led_duration": duration,
} %}
{% else %}
{% set payload_data = {
"led_number": led_value,
"led_effect": effect_value,
"led_color": color,
"led_level": level,
"led_duration": duration,
} %}
{% endif %}
{{ payload_data }}
manufacturer: 4655
# Special color preset for all LEDs
- conditions:
- condition: template
value_template: >
{{ use_special_color_preset }}
sequence:
- repeat:
count: "{{ special_color_order | count }}"
sequence:
- service: zha.issue_zigbee_cluster_command
data:
ieee: >
{{ (device_attr(switch, "identifiers")|list).0.1 }}
endpoint_id: 1
cluster_id: 64561
cluster_type: in
# 1 = all LEDs, 3 = specific LED
command: 3
command_type: server
# Index starts at 1 like an idiot
params:
"led_number": "{{ repeat.index - 1}}"
"led_effect": "{{ effect_value }}"
"led_color": "{{ special_color_order[repeat.index - 1] | int }}"
"led_level": "{{ level }}"
"led_duration": "{{ duration }}"
manufacturer: 4655
mode: single
max_exceeded: silent