Created
June 8, 2020 17:18
-
-
Save desertblade/5b0c1b84221335b379292eaa01eaacf3 to your computer and use it in GitHub Desktop.
Inovelli Script for Home Assistant
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Calculation References: | |
# https://nathanfiscus.github.io/inovelli-notification-calc/ | |
# https://community.inovelli.com/t/home-assistant-2nd-gen-switch-rgb-working/168/62 | |
# https://docs.google.com/spreadsheets/u/1/d/1SGJrJHCUtz8AzznWL_mLCTJjjr2U0IpltcUkRr7N_6M/edit?usp=sharing | |
# https://brianhanifin.com/posts/inovelli-dimmer-status-led-home-assistant/ | |
inovelli_color: | |
sequence: | |
- service: zwave.set_config_parameter | |
data_template: | |
node_id: "{{ state_attr(entity_id,'node_id') }}" | |
parameter: > | |
{%- set dimmer = dimmer|default('true') %} | |
{{ "13" if dimmer == "true" else "5" }} | |
size: 4 | |
value: > | |
{# Set default values if any needed values are missing. #} | |
{% set color = color|default("Blue") %} | |
{# Let's make things easy by using descriptive text instead of hard to understand numbers. #} | |
{% set colors = { | |
"Red": 1, | |
"Orange": 21, | |
"Green": 85, | |
"Blue": 170, | |
"Pink": 234, | |
"Yellow": 42, | |
"Cyan": 127, | |
"Purple": 195 | |
} %} | |
{# Return the Color #} | |
{{ colors[color|title] }} | |
- service: zwave.set_config_parameter | |
data_template: | |
node_id: "{{ state_attr(entity_id,'node_id') }}" | |
parameter: > | |
{%- set dimmer = dimmer|default('true') %} | |
{{ "14" if dimmer == "true" else "6" }} | |
size: 4 | |
value: > | |
{# Set default values if any needed values are missing. #} | |
{% set intensity = intensity|default("50%") %} | |
{# Return the intensity #} | |
{{ intensity }} | |
- service: zwave.set_config_parameter | |
data_template: | |
node_id: "{{ state_attr(entity_id,'node_id') }}" | |
parameter: > | |
{%- set dimmer = dimmer|default('true') %} | |
{{ "15" if dimmer == "true" else "7" }} | |
size: 4 | |
value: > | |
{# Set default values if any needed values are missing. #} | |
{% set intensity_off = intensity_off|default("10%") %} | |
{# Return the intensity #} | |
{{ intensity_off }} | |
inovelli_effect: | |
sequence: | |
- service: zwave.set_config_parameter | |
data_template: | |
node_id: "{{ state_attr(entity_id,'node_id') }}" | |
parameter: > | |
{%- set dimmer = dimmer|default('true') %} | |
{{ "16" if dimmer == "true" else "8" }} | |
size: 4 | |
value: > | |
{# Skip the calculations for effect = "off". #} | |
{% if effect|title == "Off" %} | |
0 | |
{% else %} | |
{# Set default values if any needed values are missing. #} | |
{% set color = color|default("Yellow") %} | |
{% set level = level|default(4) %}{# 1-10 #} | |
{% set duration = duration|default("Indefinitely") %} | |
{% set effect = effect|default("Pulse") %} | |
{# Let's make things easy by using descriptive text instead of hard to understand numbers. #} | |
{% set colors = { | |
"Red": 1, | |
"Orange": 21, | |
"Green": 85, | |
"Blue": 170, | |
"Pink": 234, | |
"Yellow": 42, | |
"Cyan": 127, | |
"Purple": 195 | |
} %} | |
{% set durations = { | |
"1 Second": 1, | |
"2 Seconds": 2, | |
"3 Seconds": 3, | |
"4 Seconds": 4, | |
"5 Seconds": 5, | |
"6 Seconds": 6, | |
"7 Seconds": 7, | |
"8 Seconds": 8, | |
"9 Seconds": 9, | |
"10 Seconds": 10, | |
"15 Seconds": 15, | |
"20 Seconds": 20, | |
"25 Seconds": 25, | |
"30 Seconds": 30, | |
"35 Seconds": 35, | |
"40 Seconds": 40, | |
"45 Seconds": 45, | |
"50 Seconds": 50, | |
"55 Seconds": 55, | |
"60 Seconds": 60, | |
"2 Minutes": 62, | |
"3 Minutes": 63, | |
"4 Minutes": 64, | |
"15 Minutes": 75, | |
"30 Minutes": 90, | |
"45 Minutes": 105, | |
"1 Hour": 120, | |
"2 Hours": 122, | |
"Indefinitely": 255 | |
} %} | |
{% set effects = { | |
"Off": 0, | |
"Solid": 1, | |
"Chase": 2, | |
"Fast Blink": 3, | |
"Slow Blink": 4, | |
"Blink": 4, | |
"Pulse": 5, | |
"Breath": 5 | |
} %} | |
{# Preform the Inovelli mind bending mathmatics automatically for us! :) #} | |
{{ colors[color|title] + (level * 256) + (durations[duration|title] * 65536) + (effects[effect|title] * 16777216) }} | |
{% endif %} | |
inovelli_led_off: | |
sequence: | |
- service: script.inovelli_led | |
data_template: | |
entity_id: "{{ entity_id }}" | |
effect: "Off" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment