From dbf029e6b083a21365b170aab8bf688654944f62 Mon Sep 17 00:00:00 2001 From: nwithan8 Date: Thu, 10 Aug 2023 18:06:54 -0600 Subject: [PATCH] - Add single/all LED control, special color presets to Inovelli LED script --- ...novelli_vzm31-sn_notification_led_zha.yaml | 150 +++++++++++++++--- 1 file changed, 130 insertions(+), 20 deletions(-) diff --git a/home_assistant/blueprints/scripts/inovelli_vzm31-sn_notification_led_zha.yaml b/home_assistant/blueprints/scripts/inovelli_vzm31-sn_notification_led_zha.yaml index 820de83..9b004aa 100644 --- a/home_assistant/blueprints/scripts/inovelli_vzm31-sn_notification_led_zha.yaml +++ b/home_assistant/blueprints/scripts/inovelli_vzm31-sn_notification_led_zha.yaml @@ -17,9 +17,26 @@ fields: 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 + 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: @@ -47,6 +64,7 @@ fields: - "Fast Chase" - "Open-Close" - "Small-Big" + default: "Solid" duration: name: Duration @@ -67,13 +85,35 @@ fields: color: name: Color description: The color the light should be, (0-254, 255 for white) - required: true + 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: + - "Rainbow" + variables: + led_values: + "all": -1 + "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 @@ -98,26 +138,96 @@ variables: "slow siren": 19 "open-close": 6 "small-big": 7 - effect: '{{ effect|default("clear") }}' - effect_value: >- - {{ effect_values[effect | lower] | int }} + # Only 0-8 can be used to set a single LED + max_single_led_effect: 8 + effect: '{{ effect|default("solid") }}' + effect_value: > + {% set val = effect_values[effect | lower] | int %} + {% if val > max_single_led_effect %} + {% set val = 1 %} + {% endif %} + {{ val }} + + color: "{{ color|default(255) }}" + + special_color_preset: '{{ color_preset|default("none") }}' + use_special_color_preset: > + {{ special_color_preset != "none" }} + + normal_payload: > + {% 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 }} + + special_colors_orders: + "none": [] + "rainbow": [222, 189, 166, 94, 53, 25, 0] + + special_color_order: > + {{ special_colors_orders[special_color_preset | lower] }} 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 - command: 1 - command_type: server - args: - - "{{ effect_value }}" - - "{{ color }}" - - "{{ level }}" - - "{{ duration }}" - manufacturer: 4655 + - 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: "{{ normal_payload }}" + 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