I created a Blueprint to easily map the various button actions (or “scenes” as Inovelli calls them) for both the Inovelli Red On/Off Switch (LZW30-SN) and Inovelli Red Dimmer Switch (LZW31-SN).
I couldn’t find an existing blueprint for these switches when using the stable zwave integration (not the OZW beta).
This supports all the actions the switches support: On/Off press, hold, release, x2, x3, x4, x5, and config button.
The Blueprint
Non-gist version:
blueprint:
name: Inovelli Red On/Off or Dimmer Switch Scenes
description:
Perform actions on various scenes supported by the Inovelli Red On/Off or Dimmer Switches.
Note that the x2, x3, x4, x5 variants DO NOT work if you have put your switch in 'Instant On' mode.
domain: automation
input:
inovelli_switch:
name: Inovelli Red On/Off Switch
description: The Inovelli Red On/Off or Dimmer Switch to do actions on
selector:
entity:
domain: zwave
up_action:
name: Press Up Once Action
description: Action to perform when pressing up once
default: []
selector:
action:
down_action:
name: Press Down Once Action
description: Action to perform when pressing down once
default: []
selector:
action:
up_hold_action:
name: Hold Up Action
description: Action to perform when holding the up button
default: []
selector:
action:
up_release_action:
name: Release Up Action
description: Action to perform when releasing the up button
default: []
selector:
action:
down_hold_action:
name: Hold Down Action
description: Action to perform when holding the down button
default: []
selector:
action:
down_release_action:
name: Release Down Action
description: Action to perform when releasing the down button
default: []
selector:
action:
config_action:
name: Config Button Action
description: The action to perform when the config button is pressed once
default: []
selector:
action:
up_x2_action:
name: Press Up Twice Action
description: Action to perform when pressing up twice
default: []
selector:
action:
down_x2_action:
name: Press Down Twice Action
description: Action to perform when pressing down twice
default: []
selector:
action:
up_x3_action:
name: Press Up 3 Times Action
description: Action to perform on when pressing up 3 times
default: []
selector:
action:
down_x3_action:
name: Press Down 3 Times Action
description: Action to perform when pressing down 3 times
default: []
selector:
action:
up_x4_action:
name: Press Up 4 Times Action
description: Action to perform when pressing up 4 times
default: []
selector:
action:
down_x4_action:
name: Press Down 4 Times Action
description: Action to perform when pressing down 4 times
default: []
selector:
action:
up_x5_action:
name: Press Up 5 Times Action
description: Action to perform when pressing up 5 times
default: []
selector:
action:
down_x5_action:
name: Press Down 5 Times Action
description: Action to perform when pressing down 5 times
default: []
selector:
action:
mode: parallel
max_exceeded: silent
variables:
# Mappings from https://support.inovelli.com/portal/en/kb/articles/how-to-setting-up-scenes-in-home-assistant
# Buttons (scene_id)
down_button: 1
up_button: 2
config_button: 3
# Action types (scene_data)
press_x1: 7680
press_x2: 7860
press_x3: 7920
press_x4: 7980
press_x5: 8040
hold: 7800
release: 7740
# Shorthand to access the trigger data
button: "{{ trigger.event.data.scene_id }}"
action_type: "{{ trigger.event.data.scene_data }}"
trigger:
- platform: event
event_type: zwave.scene_activated
event_data:
entity_id: !input inovelli_switch
action:
choose:
- conditions: "{{ button == up_button }}"
sequence:
- choose:
- conditions: "{{ action_type == press_x1 }}"
sequence: !input up_action
- conditions: "{{ action_type == press_x2 }}"
sequence: !input up_x2_action
- conditions: "{{ action_type == press_x3 }}"
sequence: !input up_x3_action
- conditions: "{{ action_type == press_x4 }}"
sequence: !input up_x4_action
- conditions: "{{ action_type == press_x5 }}"
sequence: !input up_x5_action
- conditions: "{{ action_type == hold }}"
sequence: !input up_hold_action
- conditions: "{{ action_type == release }}"
sequence: !input up_release_action
- conditions: "{{ button == down_button }}"
sequence:
- choose:
- conditions: "{{ action_type == press_x1 }}"
sequence: !input down_action
- conditions: "{{ action_type == press_x2 }}"
sequence: !input down_x2_action
- conditions: "{{ action_type == press_x3 }}"
sequence: !input down_x3_action
- conditions: "{{ action_type == press_x4 }}"
sequence: !input down_x4_action
- conditions: "{{ action_type == press_x5 }}"
sequence: !input down_x5_action
- conditions: "{{ action_type == hold }}"
sequence: !input down_hold_action
- conditions: "{{ action_type == release }}"
sequence: !input down_release_action
- conditions: "{{ button == config_button and action_type == press_x1 }}"
sequence: !input config_action
I’m happy to take any feedback or suggestions on this blueprint.
Usage
Inputs
The Switch
inovelli_switch (Note, this is the zwave domain entity for your switch, not the switch entity)
For some reason I’m not able to import this from the URL of this post.
I included backtick x3 yaml and the formatting looks good, but it won’t import and I get this error:
while scanning a simple key in "<unicode string>", line 182, column 1: </code></pre> ^ could not find expected ':' in "<unicode string>", line 183, column 1: <h1>Usage</h1> ^
Forgive me as I am still new to Home Assistant and learning the language.
I was using Hubitat before and had different scenes setup for different taps on the switch.
I have followed this blueprint, but not able to get it to execute.
Here is a copy of my YAML File - Any suggestions on what I can change to get this to work ?
Looks promising - but my LZW30-SNs don’t show up in the Entity drop-down (no entities found). I’m on HassOS running the ‘native’ ZWaveJS integration/add-on. I tried hopping over to the ZWaveJS2MQTT add-on but still no luck (didn’t uninstall/reinstall the integration - might have been an issue). Are there any add-on etc. dependencies required to get this to discover the switches?
This was originally meant for the original built in zwave integration (that’s now “deprecated”). It’s also compatible with the OpenZWave addon (that’s now abandoned I guess?) with a small tweak.
I haven’t had a chance to play around with the new ZWaveJS integration yet, it didn’t support all of my devices when it was first announced so I was going to wait for it to be more stable before moving over. The “deprecated” Z-Wave integration is the only one that’s been totally solid for me, so I’ve had no reason to change it.
That said, I’d really like to modify this blueprint to support all of the 3 official ways to run z-wave on HA. If anyone who is running ZWaveJS would like to contribute I’d be more than happy, otherwise I can take a look when I have some time myself.
Nice, @Khalos, appreciate the (duh) clarification. I’m a recent "Smart"Things convert (2ish months) - started on OZW but quickly moved to ZWaveJS before I got in too deep. Imo, JS is ‘ready’ - super fast, stable, and now covers my bases (simple environment = mostly switches, a few outlets, and a Linear garage door). Main gap for me is the lack of config UI - pending (this team is moving crazy-fast), and the JS2MQTT add-on solves that gap in the interim if you’re so inclined.
I’m betting @kylerw’s OZW->JS blueprint provides a nice head start - seems the primary difference is mapping text identifiers (e.g. “KeyPressed”) instead of scene_data identifiers (e.g. 7680). Add the long-press identifier and you’re there. That and aligning the switch-name ZwaveJS identifier. These blueprints are still ‘foreign territory’ for me, but as with all things HASS I’m sure it just takes a few cycles to get familiar / proficient. Will see if I can burn a weekend cycle or two in the near future.
I think you have to create a scene that translations the brightness to your desired value (0 or 255) over a set amount of time. Then activate the scene whenever the button is held down.
If anyone has any more direction on how to accomplish this let me know! Otherwise Ill start messing with it in the coming week.