Skip to main content

Blue Series mmWave Presence Sensing Dimmer • ZHA Custom Quirk Install

This guide walks you through installing a custom ZHA quirk for the Inovelli VZM32-SN switch in Home Assistant using the Terminal/SSH add-on.

Eric Maycock avatar
Written by Eric Maycock
Updated this week

Installing the Inovelli VZM32SN ZHA Custom Quirk (Home Assistant)


🔍 Overview (for advanced users)

This process will:

  1. Back up configuration.yaml.

  2. Add the following to your HA config:

    zha:    
    custom_quirks_path: /config/zhacustomquirks
  3. Create the folder:

    /config/zhacustomquirks
  4. Download two quirk files into that folder. VZM32SN.py | __init__.py

  5. Modify an import in VZM32SN.py. Change in the VZM32SN.py file:
    from zhaquirks.inovelli import INOVELLI_AUTOMATION_TRIGGERS, InovelliVZM32SNCluster
    to
    from zhacustomquirks import INOVELLI_AUTOMATION_TRIGGERS, InovelliVZM32SNCluster, InovelliVZM32SNMMWaveCluster

  6. Restart Home Assistant.


🪜 Step-by-Step Instructions

1. Open the Home Assistant Terminal

Note: To install this add-on please refer to the instructions here:

Go to Settings → Add-ons → Terminal & SSH → OPEN WEB UI.


2. Go to the Home Assistant config directory

cd /config

3. Back up your configuration.yaml

cp configuration.yaml configuration.yaml.backup_$(date +"%Y%m%d_%H%M%S")

4. Create the custom quirks directory

mkdir -p zhacustomquirks

5. Add the ZHA custom quirks path to configuration.yaml

grep -qxF 'zha:' configuration.yaml || echo -e '\nzha:\n  custom_quirks_path: /config/zhacustomquirks' >> configuration.yaml
grep -q 'custom_quirks_path:' configuration.yaml || sed -i '/^zha:/a\  custom_quirks_path: /config/zhacustomquirks' configuration.yaml

6. Download the Inovelli quirk files

wget -O /config/zhacustomquirks/VZM32SN.py https://raw.githubusercontent.com/InovelliUSA/zha-device-handlers/refs/heads/inovelli-vzm32/zhaquirks/inovelli/VZM32SN.py
wget -O /config/zhacustomquirks/__init__.py https://raw.githubusercontent.com/InovelliUSA/zha-device-handlers/refs/heads/inovelli-vzm32/zhaquirks/inovelli/__init__.py

7. Fix the import inside VZM32SN.py

sed -i 's/from zhaquirks.inovelli/from zhacustomquirks/' /config/zhacustomquirks/VZM32SN.py

8. Fix file permissions

chmod 644 zhacustomquirks/*.py

9. Restart Home Assistant

Go to Settings → System → Restart
(or restart just ZHA if you prefer).


📦 Full Command Block (Copy & Paste)

All commands below now include blank lines between lines for clean Intercom formatting:

cd /config  

cp configuration.yaml configuration.yaml.backup_$(date +"%Y%m%d_%H%M%S")

mkdir -p zhacustomquirks

grep -qxF 'zha:' configuration.yaml || echo -e '\nzha:\n custom_quirks_path: /config/zhacustomquirks' >> configuration.yaml

grep -q 'custom_quirks_path:' configuration.yaml || sed -i '/^zha:/a\ custom_quirks_path: /config/zhacustomquirks' configuration.yaml

wget -O /config/zhacustomquirks/VZM32SN.py https://raw.githubusercontent.com/InovelliUSA/zha-device-handlers/refs/heads/inovelli-vzm32/zhaquirks/inovelli/VZM32SN.py

wget -O /config/zhacustomquirks/__init__.py https://raw.githubusercontent.com/InovelliUSA/zha-device-handlers/refs/heads/inovelli-vzm32/zhaquirks/inovelli/__init__.py

sed -i 's/from zhaquirks.inovelli/from zhacustomquirks/' /config/zhacustomquirks/VZM32SN.py

chmod 644 zhacustomquirks/*.py
Did this answer your question?