Figured out a Simple Way to get Zooz Zen30 Combo Fan/Light to work correctly in Google Home

The problem with the Zooz Zen30 is that Google Home recognizes both the Parent device (Fan Light) and the child device (Fan) as lights. So I have no way of turning on/off the fan independently. The fan will turn on and off every time when I use voice control for the lights.

One workaround is to use the Community Google Home App to reclassify the child device as a Fan. However, the instructions to get all of that set up was a little intimidating. So I thought of a simple way:

  1. Create a Virtual Switch in Hubitat. I named mine "[Room Name] Fan"
  2. Install [RELEASE] Switch Bindings app from HPM
  3. Using Switch Bindings App, bind the Virtual Fan Switch made in step 1 with the child Fan device of the Zen30. This will ensure the status of the virtual switch and fan switch are always in sync.
  4. Add the Virtual Fan device you created to the Hubitat Google Home App.
  5. Go to Google Home app and move it to the room where the fan is located. Rename it so the room name is not in device name so it should just be named "Fan".

Now, when you ask Google to turn on/off the fan it does exactly that (and only that). I tested it out and it's pretty much instantaneous so need to worry about any lag as a result of using a Virtual Switch as an intermediary. This should work for any similar combo devices that have the same problem in Google Home. Hope this helps.

An easier way is to use @jtp10181's custom driver. Then you don't need an extra virtual device.

2 Likes

Why do you need the virtual switch? Just share the child device of the ZEN30 directly.

Also, if you use my driver with my custom child driver it should work better with sharing to Google and Alexa, which was the reason I created a custom child driver. [DRIVER] Zooz ZEN Switches Advanced (and Dimmers)

1 Like

If I share the child device Google recognizes the fan as a light.

How do I change the child device driver only? It is greyed out. Should I also change the parent device with your custom driver as well?

Edit: I changed the parent device to the "Zooz Zen30 Double Switch". I hit configure and then save preferences but now the physical light switch doesn't work. The fan button works fine. Any idea what I'm missing?

Edit 2: I think the problem was that maximum brightness was 1%, so I changed it to default 99%. Then I hit configure and save preferences. Now my problem is that there are 3 pending changes in syncstatus that will not sync.

Edit 3: okay I got it synced and sent the child fan device to Google Home but it still shows as a light:

How can I change this?

If you use that Google Home community app to share to google, I think if you define it as a fan, you can forcibly send it as a fan? or does that not work (sorry I don't remember)?

Or, If you also install the custom child driver I have in HPM (or found in gitHub). https://raw.githubusercontent.com/jtp10181/Hubitat/main/Drivers/generic/child-central-scene-switch.groovy

Then you will have to remove the child device (Warning, if you have it added to any apps you will have to fix them all after doing this):

  • Switch the type to "Device" and save
  • Use the Remove Childs button
  • Switch back to my ZEN30 driver.
  • Press configure.

That should create the child device again using my "Child Central Scene Switch" driver as the Type. Now when it is shared, you should be able to change the device between switch/light/fan in Google.

1 Like

To summarize:

1 . Make sure you selected Child Central Scene Switch as part of the Zooz Switches Advanced Drivers package from HPM
2. I don't think you need to switch to a generic "device" driver. Just change the driver of the parent to the custom Zen30 one. Make sure to hit configure. If that doesn't work. do what JTP said because he wrote the thing and probably knows how it works better than I do.
3. In the commands, there is one called Child Devices. Change the dropdown to remove and click the button. Change the dropdown to create and click the button.
image

That should remove the existing child and create a new one with the custom child driver. Same warning as above though... this is a new device so if the "old" device was used in any rules or apps you will need to change them to the new child device.

But once you share it with Google, it should show up as a fan.

1 Like

Hey thanks for these very detailed instructions. I got through all the steps except the last one. The Child Device was created with the steps you described:

image

but it does not show up in the native Google Home app:

image

I should mention that I enabled Hub Mesh on the parent device and I'm attempting to add it to Google Home from my automation hub where I manage all my apps.

In my automation hub where I send all my devices I do not see the child device:

image

There is no option to add to Hub Mesh in the child device. Any idea how to solve?

Edit: So I forgot to link it in the hub mesh settings but when I do this it doesn't want to link it just continues to show Available on C-7 (Upstairs) Hub:

Edit 2: I finally got it linked into my Automation hub and then linked it to Google Home. Honestly, this felt a little more painful then it should have been. Also, as you mentioned this will remove the original device from all other apps and integrations. I should have created a virtual switch as a placeholder to do a swap later but I was lazy. I'll need to deal with that later. Thank you very much.

It’s sort of an oversight or bug in the system component driver IMO. I made a workaround with the custom driver. Would be easier if the system driver behaved properly.

Okay another weird quirk that I discovered after I switched to this driver. The fan randomly turns off by itself after a couple of minutes. I checked the logs and this is what I see

It doesn't really tell me what caused it to turn off besides a physical button press but I am right in front of the switch and I did not press it. Any idea what is causing that issue?

Go to the device page and click the events button. You can see what generated the event.

Oh, also check the parent device to make sure the relay auto off timer is disabled.

1 Like

Yes that was it! Thank you. Not sure how it was changed from the default.

There are reasons I have this in my instructions, this is one of them.

If you really want to know why, it is because some of the zooz switches have two settings each for the auto-on / off. One to enable it and one for the time. I combined it into one settings but I use mostly the same variable naming scheme as the system drivers for the parameters. So sometimes the old setting of "60" seconds (but disabled on the other setting) carries over as just "60" which enables the timer on my driver.

1 Like