ZigBee Fan Switch | Project Zephyr (Blue Series)

I have an old FV-08VKS3 WhiperGreen fan, and its wall-switch line wiring uses a lower voltage than traditional 120, so I couldn’t get any smart switch to work with it. I don’t have a neutral in that box, so no idea if that would somehow help (but I doubt it).

Maybe newer WhisperGreens use a different line power setup for the wall switch these days though.

To get around all of this, I just wired a Zooz relay up in the fan’s main box and tie that to a humidity sensor – that works great. We have no need to run the fan outside of that, so the wall switch box wiring is just capped off with a blank plate over it now.

I’m running two fans on a pre-production unit. I haven’t noticed any speed reduction with two on the same switch. I didn’t compare one vs two, but the high on the two is definitely fast.

Have you tried factory resetting?

Thanks for the response! It’s a new development (circa 2020) and has a neutral installed, so I’m hoping it’s just a configuration error of some kind.

1 Like

Assuming the “line” power is originating from the main fan box (like mine is), I’d test the line power at the switch box with a multimeter to see if it’s a reduced power or not.

It’s been many years since I did all of this with mine, so I unfortunately don’t recall what that switch-box “line” power reading was in my case.

If the new WhisperGreen wall-switch wiring utilizes line power direct from the circuit (instead of originating that line from the main fan box itself), it should definitely be possible to use a smart switch at the wall.

I think it might be user error on this one… I took out the fans and they were both non-functional, but the outlet in the ceiling still works! I think my old inovelli switches (not made for fans…) might’ve shorted the circuits. Time to replace the fans and move on :slight_smile:

@chack has been working behind the scenes on the quirk and I think some good progress has been made as far as overcoming the error that happens during device pairing. Having the device present as a fan is something to do with the Zigbee SDK not having a fan cluster specifically for a switch like this. He has some more info here:

Blue Series Fan Switch showing as light rather than fan entity in Home Assistant - Switches / General Discussion - Inovelli Community

The answer I got about having multiple fans attached is that full speed in On/Off mode should work, but the other speeds wouldn’t because “A fan switch controls two fans, the speed is normal at high speed, but in the case of medium speed and low speed, the speed will be reduced by half, because the medium speed and low speed are regulated by capacitors, which has limited the output power; Similarly, if one fan switch controls more fans, the fan may not work.”

As mentioned above, there are a couple ways to change some of the config options that currently aren’t showing up as entities. There is also some info about that in the manual towards the bottom:

Blue Series Fan Switch • Setup Instructions • Home Assistant - ZHA | Articles | Inovelli | Intercom

@signbit for the WhisperGreen fans, one of our engineers pointed out that they are DC motors? He thinks that may be a problem, but I wasn’t aware that DC motors were a thing on exhaust fans. Is that a common thing?

1 Like

I am also running mine on a newer bath exhaust fan with a DC motor. Panasonic Whisper Choice I think, I can dig up the link later. Mine has 120V that wires directly into the fan housing and then it runs everything from there. I assumed the fan switch is better than the 2-1 since it will behave differently from a light load, but would be interested to know if I should swap out my fan switch before one or the other is damaged.

When I was shopping for bath fans a lot of the ones I saw seemed to be DC for the lower power and I think quieter performance. I can tell you this is miles ahead of the old 50cfm builder grade part that had been in the ceiling since the 80s.

That makes complete sense! Yes, testing it, it does appear that at 100%, the fans are running at full speed. The solution I think I came up with is to set the minimum load dimming level to 128.

1 Like

Thanks for the info. I am checking with the engineer to pick his brain. He probably won’t answer until Sunday night though just FYI.

@EricM_Inovelli - correct; it is a DC motor, but the power to it is 120V AC. There are two low-voltage wires for the Panasonic presence sensor which the electrician capped (per instruction) - the voltage at the switch box is 120V, with neutral present.

The weird thing is that the switch is able to start the fan, after I turn the circuit breaker off then on. Once I turn the fan off from the switch, I does not turn the fan back on again. Presently the fans are controlled with plain vanilla light switches, so there’s nothing special about the wiring.

They are definitely different. I placed the diffuser from one of my early blues onto the fan switch and I could no longer see the individual LEDs on the fan switch. When you look at them side by side, the fan switch is more transparent than the Blue diffuser. It could just be manufacturing variations?

Potentially – do you still have access to our Teams? Maybe I can pull you in a convo w/the manufacturer.

@Gazelle and @MasterDevwi a PR was put in to fix the issue with button presses, but in the meantime if you want to run a custom quirk -

VZM35SN.py
"""VZM35-SN Fan Switch."""

from zigpy.profiles import zgp, zha
from zigpy.profiles.zha import DeviceType
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
    Basic,
    GreenPowerProxy,
    Groups,
    Identify,
    LevelControl,
    OnOff,
    Ota,
    Scenes,
)
from zigpy.zcl.clusters.homeautomation import Diagnostic

from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.inovelli import INOVELLI_AUTOMATION_TRIGGERS, Inovelli_VZM35SN_Cluster

INOVELLI_VZM35SN_CLUSTER_ID = 64561
WWAH_CLUSTER_ID = 64599


class InovelliVZM35SN(CustomDevice):
    """VZM35-SN Fan Switch"""
    signature = {
        MODELS_INFO: [("Inovelli", "VZM35-SN")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: DeviceType.DIMMABLE_LIGHT,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.cluster_id,
                    Diagnostic.cluster_id,
                    INOVELLI_VZM35SN_CLUSTER_ID,
                    WWAH_CLUSTER_ID,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                ],
            },
            2: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: DeviceType.DIMMER_SWITCH,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Identify.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.cluster_id,
                ],
            },
            242: {
                PROFILE_ID: zgp.PROFILE_ID,
                DEVICE_TYPE: zgp.DeviceType.PROXY_BASIC,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id],
            },
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: DeviceType.DIMMABLE_LIGHT,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.cluster_id,
                    Diagnostic.cluster_id,
                    Inovelli_VZM35SN_Cluster,
                    WWAH_CLUSTER_ID,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                ],
            },
            2: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: DeviceType.DIMMER_SWITCH,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Identify.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.cluster_id,
                    Inovelli_VZM35SN_Cluster,
                ],
            },
            242: {
                PROFILE_ID: zgp.PROFILE_ID,
                DEVICE_TYPE: zgp.DeviceType.PROXY_BASIC,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id],
            },
        },
    }

    device_automation_triggers = INOVELLI_AUTOMATION_TRIGGERS

2 Likes

Thanks! I just tried applying the custom quirk, but it doesn’t seem to be working. I’ll reply with more details in the other thread to keep the discussion cleaner here.

Custom quirk has it running great! Thank you. Can I remove it in a few months once a fix is pushed to ZHA?

Absolutely, just a question of when ZHA gets a new release and HA points to that as the new requirement as far as which HA release you’ll be covered in.

2 Likes

Were you able to get an answer on this?

Has anyone else had issues when addressing the LEDs individually? I’m using Z2M and skyconnect but had the same issue in ZHA where when after setting the value of an individual LED its value can only seem to be cleared by sending an individual clear command (or by double tapping config). Sending a clear all to the switch doesn’t actually clear the color.

My specific use is using the LEDs to set up a custom notification to indicate the duration of the timer. I send 7 commands to set the LEDs to the desired color/brightness. Once the fan is turned off I’d like to clear the entire panel by sending one command with the clear effect but doing so doesn’t have an effect. I’d rather not have to send 7 commands, or have my automations set up to serially send a clear all followed by seven clear individual commands to account for multiple potential notification states.

That is the correct/intended behavior.

The nomenclature is a bit confusing. The “all LED” commands refer to effects that apply to the full led bar and not the leds individually. There are 8 separate effect entities, each LED 1-7, and the full LED Bar. Each is set/cleared separately. If you issued a “set all LED” command for the full led bar, then a “clear all LED” would clear that notification without clearing any separate individual leds that may have also been set.

Each individual LED set command will need to have its own individual clear command (or timeout). So yes, in this case you will need to send 7 clear commands. But you do not need to send a “clear all” since you did not do a “set all”. It is a little confusing until you think of it as 8 separate entities, not 7.

Any luck with Hubitat c8 yet?