Last active
September 7, 2025 16:52
-
-
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 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
| # 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