From a11bcda8b3a4950554601fae23f2f0e7c8bae2bd Mon Sep 17 00:00:00 2001 From: nwithan8 Date: Wed, 16 Aug 2023 00:17:43 -0600 Subject: [PATCH] - New blueprint to display temperature on Inovelli LED bar --- .../automations/inovelli_led_temperature.yaml | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 home_assistant/blueprints/automations/inovelli_led_temperature.yaml diff --git a/home_assistant/blueprints/automations/inovelli_led_temperature.yaml b/home_assistant/blueprints/automations/inovelli_led_temperature.yaml new file mode 100644 index 0000000..6dff567 --- /dev/null +++ b/home_assistant/blueprints/automations/inovelli_led_temperature.yaml @@ -0,0 +1,123 @@ +blueprint: + name: Inovelli LED Temperature Display + description: Display the temperature on the LED strip of an Inovelli VZM31-SN light switch + source_url: https://raw.githubusercontent.com/nwithan8/configs/main/home_assistant/blueprints/automations/inovelli_led_temperature.yaml + domain: automation + input: + temp_sensor: + name: Temperature Sensor + description: The temperature sensor to monitor + selector: + entity: + domain: sensor + device_class: temperature + min_temp: + name: Minimum Temperature + description: The minimum temperature. Anything below this will be displayed as the minimum temperature (no LEDs) + default: 0 + selector: + number: + # You're literally dead at either of these temperatures + min: -200 + max: 199 + unit_of_measurement: degrees + mode: box + max_temp: + name: Maximum Temperature + description: The maximum temperature. Anything above this will be displayed as the maximum temperature (all LEDs) + default: 100 + selector: + number: + min: -199 + max: 200 + unit_of_measurement: degrees + mode: box + switch: + name: Inovelli VZM31-SN + description: Which light switch to program + selector: + device: + integration: zha + manufacturer: Inovelli + model: VZM31-SN + duration: + name: Duration + description: How long the effect should last, in seconds (1-254, 255 for indefinite) + selector: + number: + min: 1 + max: 255 + default: 255 + level: + name: Intensity + description: How intense the light should be, percentage (0-100) + selector: + number: + min: 0 + max: 100 + default: 50 + color: + name: Color + description: The color the light should be, (0-254, 255 for white) + selector: + number: + min: 0 + max: 255 + mode: box + default: 0 + +mode: single +max_exceeded: silent + +variables: + temp_sensor: !input temp_sensor + temperature: "{{ states(temp_sensor) | float(0) | round(1) }}" + solid_led_effect_code: 1 + off_led_effect_code: 0 + led_command: 3 # Set individual LED + max_temp: !input max_temp + min_temp: !input min_temp + level: !input level + duration: !input duration + switch: !input switch + color: !input color + off_color: 255 # White + temperature_range: "{{ max_temp - min_temp }}" + led_range: 7 + leds_to_turn_on: "{{ (temperature - min_temp) / temperature_range * led_range | round(0) | int }}" + +trigger: + platform: state + entity_id: !input temp_sensor + +action: + - repeat: + count: "{{ led_range }}" + 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: "{{ led_command }}" + command_type: server + # Index starts at 1 like an idiot + params: + "led_number": "{{ repeat.index - 1 }}" + "led_effect": > + {%- if repeat.index - 1 <= leds_to_turn_on -%} + {{ solid_led_effect_code }} + {%- else -%} + {{ off_led_effect_code }} + {%- endif -%} + "led_color": > + {%- if repeat.index - 1 <= leds_to_turn_on -%} + {{ color }} + {%- else -%} + {{ off_color }} + {%- endif -%} + "led_level": "{{ level }}" + "led_duration": "{{ duration }}" + manufacturer: 4655