Skip to content

Instantly share code, notes, and snippets.

@thomasmaxson
Last active September 7, 2025 16:52
Show Gist options
  • Select an option

  • Save thomasmaxson/2b0189a9942e992d8e7de20705ccbb51 to your computer and use it in GitHub Desktop.

Select an option

Save thomasmaxson/2b0189a9942e992d8e7de20705ccbb51 to your computer and use it in GitHub Desktop.
Home Assistant Blueprint to control your devices with Inovelli Switch (2-in-1, dimmer, etc.) using the MQTT integration.
# This blueprint uses an Inovelli Switch (2-in-1, dimmer, etc.)
#
# | Button Type | Interaction | Action Choices |
# | ----------- | --------------- | ------------------- |
# | On | Single Press | - Run custom action |
# | On | Double Press | - Run custom action |
# | On | Triple Press | - Run custom action |
# | On | Quadruple Press | - Run custom action |
# | On | Quintuple Press | - Run custom action |
# | On | Press and Hold | - Run custom action |
# | On | Release | - Run custom action |
# | ----------- | --------------- | ------------------- |
# | Off | Single Press | - Run custom action |
# | Off | Double Press | - Run custom action |
# | Off | Triple Press | - Run custom action |
# | Off | Quadruple Press | - Run custom action |
# | Off | Quintuple Press | - Run custom action |
# | Off | Press and Hold | - Run custom action |
# | Off | Release | - Run custom action |
# | ----------- | --------------- | ------------------- |
# | Config | Single Press | - Run custom action |
# | Config | Double Press | - Run custom action |
# | Config | Triple Press | - Run custom action |
# | Config | Quadruple Press | - Run custom action |
# | Config | Quintuple Press | - Run custom action |
# | Config | Press and Hold | - Run custom action |
# | Config | Release | - Run custom action |
# | ----------- | --------------- | ------------------- |
blueprint:
name: Inovelli, Dimmer Switch
description: Set different actions for x1, x2, x3, x4, x5 button taps for Inovelli Blue Series switches (2-in-1, dimmer, etc.).
author: Thomas Maxson
source_url: https://gist.github.com/thomasmaxson/2b0189a9942e992d8e7de20705ccbb51
homeassistant:
min_version: 2024.6.0
domain: automation
input:
switch:
name: Switch
description: Select the Inovelli switch to trigger your automations.
selector:
device:
multiple: false
filter:
- integration: mqtt
manufacturer: Inovelli
model: VZM31-SN
- integration: mqtt
manufacturer: Inovelli
model: VZM35-SN
- integration: mqtt
manufacturer: Inovelli
model: 2-in-1 switch + dimmer
- integration: mqtt
manufacturer: Inovelli
model: Fan controller
actions_single_press:
name: Single Press
icon: mdi:gesture-tap
collapsed: false
input:
button_on_single:
name: Tap On Button
description: Action(s) to perform on single tap of the on button
default: []
selector:
action:
button_off_single:
name: Tap Off Button
description: Action(s) to perform on single tap of the off button
default: []
selector:
action:
button_config_single:
name: Tap Config Button
description: Action(s) to perform on single tap of the config button
default: []
selector:
action:
actions_double_press:
name: (x2) Double Press
icon: mdi:gesture-double-tap
collapsed: true
input:
button_on_double:
name: x2 Tap On Button
description: Action(s) to perform on double tap of the on button
default: []
selector:
action:
button_off_double:
name: x2 Tap Off Button
description: Action(s) to perform on double tap of the off button
default: []
selector:
action:
button_config_double:
name: x2 Tap Config Button
description: Action(s) to perform on double tap of the config button
default: []
selector:
action:
actions_triple_press:
name: (x3) Triple Press
icon: mdi:gesture-double-tap
collapsed: true
input:
button_on_triple:
name: x3 Tap On Button
description: Action(s) to perform on triple tap of the on button
default: []
selector:
action:
button_off_triple:
name: x3 Tap Off Button
description: Action(s) to perform on triple tap of the off button
default: []
selector:
action:
button_config_triple:
name: x3 Tap Config Button
description: Action(s) to perform on triple tap of the config button
default: []
selector:
action:
actions_quadruple_press:
name: (x4) Quadruple Press
icon: mdi:gesture-double-tap
collapsed: true
input:
button_on_quadruple:
name: x4 Tap On Button
description: Action(s) to perform on quadruple tap of the on button
default: []
selector:
action:
button_off_quadruple:
name: x4 Tap Off Button
description: Action(s) to perform on quadruple tap of the off button
default: []
selector:
action:
button_config_quadruple:
name: x4 Tap Config Button
description: Action(s) to perform on quadruple tap of the config button
default: []
selector:
action:
actions_quintuple_press:
name: (x5) Quintuple Press
icon: mdi:gesture-double-tap
collapsed: true
input:
button_on_quintuple:
name: x5 Tap On Button
description: Action(s) to perform on quintuple tap of the on button
default: []
selector:
action:
button_off_quintuple:
name: x5 Tap Off Button
description: Action(s) to perform on quintuple tap of the off button
default: []
selector:
action:
button_config_quintuple:
name: x5 Tap Config Button
description: Action(s) to perform on quintuple tap of the config button
default: []
selector:
action:
actions_hold_press:
name: Press and Hold
icon: mdi:gesture-tap-hold
collapsed: true
input:
button_on_hold:
name: Hold On Button
description: Action(s) to perform on hold of the on button
default: []
selector:
action:
button_off_hold:
name: Hold Off Button
description: Action(s) to perform on hold of the off button
default: []
selector:
action:
button_config_hold:
name: Hold Config Button
description: Action(s) to perform on hold of the config button
default: []
selector:
action:
actions_release:
name: Release
icon: mdi:cursor-pointer
collapsed: true
input:
button_on_release:
name: Release On Button
description: >-
Action(s) to perform on release of the on button
<br>(Action will also stop the "Hold Up" action automatically)
default: []
selector:
action:
button_off_release:
name: Release Off Button
description: >-
Action(s) to perform on release of the off button
<br>(Action will also stop the "Hold Down" action automatically)
default: []
selector:
action:
button_config_release:
name: Release Config Button
description: >-
Action(s) to perform on release of the config button
<br>(Action will also stop the "Hold Down" action automatically)
default: []
selector:
action:
automation_config:
name: Configuration
icon: mdi:cog
collapsed: true
input:
config_mode:
name: Automation Mode
description: Mode that automation runs in
default: restart
selector:
select:
options:
- single
- restart
- queued
- parallel
custom_value: false
multiple: false
config_max_num:
name: Mode Max
description: >
Maximum number of runs that can be executed or queued at a time.
<br>Ignored by _Single_ and _Restart_ Modes.
default: 10
selector:
number:
mode: slider
unit_of_measurement: runs
min: 1.0
max: 15.0
step: 1.0
debug_config:
name: Debug
icon: mdi:bug
collapsed: true
input:
log_valid_events:
name: Log Valid Remote Events
description: Display a persistent notification if a _valid event_ is triggered.
default: false
selector:
boolean:
log_invalid_events:
name: Log Invalid Remote Events
description: Display a persistent notification if an _invalid event_ is triggered.
default: false
selector:
boolean:
mode: !input config_mode
max: !input config_max_num
max_exceeded: silent
trigger:
# Triggers, Single Press
- trigger: device
domain: mqtt
type: action
subtype: up_single
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_single
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_single
device_id: !input switch
# Triggers, Double Press
- trigger: device
domain: mqtt
type: action
subtype: up_double
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_double
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_double
device_id: !input switch
# Triggers, Triple Press
- trigger: device
domain: mqtt
type: action
subtype: up_triple
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_triple
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_triple
device_id: !input switch
# Triggers, Quadruple Press
- trigger: device
domain: mqtt
type: action
subtype: up_quadruple
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_quadruple
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_quadruple
device_id: !input switch
# Triggers, Quintuple Press
- trigger: device
domain: mqtt
type: action
subtype: up_quintuple
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_quintuple
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_quintuple
device_id: !input switch
# Triggers, Press and Hold
- trigger: device
domain: mqtt
type: action
subtype: up_held
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_held
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_held
device_id: !input switch
# Triggers, Press and Release
- trigger: device
domain: mqtt
type: action
subtype: up_release
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: down_release
device_id: !input switch
- trigger: device
domain: mqtt
type: action
subtype: config_release
device_id: !input switch
action:
- variables:
command: "{{ trigger.payload }}"
- if:
- condition: template
value_template: !input log_valid_events
then:
- action: persistent_notification.create
data:
notification_id: blueprint_debug__switch_inovelli_dimmer__command_valid
title: Inovelli Dimmer Command
message: >-
Inovelli Dimmer switch remote command.
<br>
<br>_Remote Data_:
<br>"{{ trigger.payload }}"
- choose:
# Actions, Single Press
- conditions:
- "{{ command == 'up_single' }}"
sequence: !input button_on_single
- conditions:
- "{{ command == 'down_single' }}"
sequence: !input button_off_single
- conditions:
- "{{ command == 'config_single' }}"
sequence: !input button_config_single
# Actions, Double Press
- conditions:
- "{{ command == 'up_double' }}"
sequence: !input button_on_double
- conditions:
- "{{ command == 'down_double' }}"
sequence: !input button_off_double
- conditions:
- "{{ command == 'config_double' }}"
sequence: !input button_config_double
# Actions, Triple Press
- conditions:
- "{{ command == 'up_triple' }}"
sequence: !input button_on_triple
- conditions:
- "{{ command == 'down_triple' }}"
sequence: !input button_off_triple
- conditions:
- "{{ command == 'config_triple' }}"
sequence: !input button_config_triple
# Actions, Quadruple Press
- conditions:
- "{{ command == 'up_quadruple' }}"
sequence: !input button_on_quadruple
- conditions:
- "{{ command == 'down_quadruple' }}"
sequence: !input button_off_quadruple
- conditions:
- "{{ command == 'config_quadruple' }}"
sequence: !input button_config_quadruple
# Actions, Quintuple Press
- conditions:
- "{{ command == 'up_quintuple' }}"
sequence: !input button_on_quintuple
- conditions:
- "{{ command == 'down_quintuple' }}"
sequence: !input button_off_quintuple
- conditions:
- "{{ command == 'config_quintuple' }}"
sequence: !input button_config_quintuple
# Actions, Press and Hold
- conditions:
- "{{ command == 'up_held' }}"
sequence: !input button_on_hold
- conditions:
- "{{ command == 'down_held' }}"
sequence: !input button_off_hold
- conditions:
- "{{ command == 'config_held' }}"
sequence: !input button_config_hold
# Actions, Press and Release
- conditions:
- "{{ command == 'up_release' }}"
sequence: !input button_on_release
- conditions:
- "{{ command == 'down_release' }}"
sequence: !input button_off_release
- conditions:
- "{{ command == 'config_release' }}"
sequence: !input button_config_release
default:
- condition: template
value_template: !input log_invalid_events
- sequence:
- action: persistent_notification.create
data:
notification_id: blueprint_debug__switch_inovelli_dimmer__command_invalid
title: Uncaught Inovelli Dimmer Command
message: >-
Inovelli Dimmer switch ran the default event from the "choose" event action.
<br>
<br>_Switch Data_:
<br>"{{ trigger.payload }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment