# 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 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 description: Which light switch to program required: true selector: device: integration: zha manufacturer: Inovelli model: VZM31-SN 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