Z-Wave Fan Control

I’ve got a GE Z-Wave Fan Control (12730). Unfortunately, OpenZWave doesn’t have it in their device list yet. When adding the device to HA, it adds as a light dimmer and the controls are less than ideal. The device is in Z-Wave Alliance.

In addition, I found this awesome application that a member of the Smartthings community created. Unfortunately, I’m not a programmer so I don’t know how to port that information to HA. I’m hoping that it’s fairly easy to accomplish because it looks perfect. Thanks!

Can you provide the zwcfg_xxxxx.xml entry for this device, then maybe I can make something for the fan component.

Currently, it is showing up as a dimmer switch in zwcfg. Is that what you’re asking for? If so, here is the link

Sadly there are som problems to get this into HA properly:
The zwave part reports it as multilevel power switch, which is a dimmer control.
It can be done to make it appear in the fan component, but it will also appear in the light component because of the definition from the switch. From the file you provided, this looks to work like a dimmer too. No specific things related to fan control. Meaning what you have through the light component(which is correctly) is all the controls the switch supports.
On, Off, and dim(speed) Hope this helps.

I’m not sure I understand. My understanding is that the ozwcp is recognizing the device incorrectly as a dimmer instead of a fan control. Wouldn’t a proper configuration in OpenZwave database fix that? If not, how did the custom app in SmartThings get it working so well? App mentioned in first post.

I’ve been pretty frustrated by the GE (Jasco) Fan Control that I purchased. Frustration is mostly due to my feeling of helplessness because I don’t know how to know what I don’t know. I’m, also, frustrated by GE’s lack of documentation regarding the configuration and parameters of the device. I decided to call them (Jasco) to find out if they had any more documentation that could help me or someone else write the config for OpenZwave.

If I was frustrated before, I was even more frustrated when I hung up. The original service rep and then the Customer Service Manager both spoke to me condescendingly. When I explained that the device shows up as a dimmer, he said that was correct because it technically is a dimmer. After admitting that the switch was meant for fan’s with no lights attached, I asked how you could dim a fan. I asked whether the fan control accepted values of 1-99 or just 1-4 since a fan only has 3 speeds and off. He was unsure and he kept blaming the z-wave controller for all the issues. Alas, I received the email below explaining, although barely, the situation.

The fan controller is setup like a Dimmer that accepts speeds 1-99 and 0 is off. If set between 1-33 it will be set to the low speed. Between 34-66 will be set to medium speed and 67-100% will be set to high. Since it’s using the same config as a GE Dimmer, how difficult is it to change the HA config from Brightness to Speed and show 1-33 as 1, 34-66 as 2, and 67+ as 3?

I can clarify a little more:
The device issues a basic, generic and specific device type id, Those classes are defined as multilevel power switch by zwave. (Dimmer) There is nothing we can do about that.

The app you link to utilizes a workaround, by pre defining high medium and low speeds set by the user (refered to level in hass 0-100) So you can choose between high medium and low speed.

However the recognition of the device, there is nothing to identify it as a fan controller other than the name(which is actually unknown). Normally this would have been defined by the specific device class as a motor control(5,6,7) or fan switch(8) but it is defined as a multilevel switch, which unfortunately is just a generic dimmer(1). All these generic and specific is issued by the device, and is not modifyable.

We can allow dimmers into the fan component, but that would let all dimmersto appear in the fan component.

So, by adding the device in manufacturer_specific.xml, I can at least make it show the name I want, even though it shows up under Light. I can also control the speed by adjusting the “Brightness” after clicking on the device (see below).

Is there any kind of workaround in HA that I can use to display/control things differently, or am I as far as I can go?

Just to add a bit to this - I went ahead and submitted my manufacturer_specific.xml update to OpenZWave, but that will only really impact how the Fan Control switch is named. It is still seen as a Dimmer because of the “type” that it presents itself as.

I went ahead and put together an input_select automation, so now I can control the fan like this:

input_select:
  fan_speed:
    name: Bedroom Fan Speed
    options:
     - "Off"
     - Low
     - Medium
     - High

 - alias: Bedroom Fan -  Off
   hide_entity: True
   trigger:
     platform: state
     entity_id: input_select.fan_speed
     to: "Off"
   action:
     service: light.turn_off
     entity_id: light.ge_12730_fan_control_switch_level_6_0

 - alias: Bedroom Fan - High
   hide_entity: True
   trigger:
     platform: state
     entity_id: input_select.fan_speed
     to: "High"
   action:
     service: light.turn_on
     entity_id: light.ge_12730_fan_control_switch_level_6_0
     data:
       brightness: 254

etc…

It’s not perfect, and it still shows under “Light”, but this works for now.

1 Like

Sorry about the delayed response. That is a much better solution. I like the dropdown selector instead of the light dimmer. Nice work!

I’d also like to see zwave fan’s show up as fans instead of lights - specifically for homebridge.

I’m in a similar situation, although it’s the Leviton VRF01 in my case, and would love to see a better solution.

I’m brand new to coding but is it possible to create a fan “template” that could create a virtual fan (fan.example) from a dimmer (light.example)?

Another idea I had is creating a Z-wave to MQTT bridge and then create an MQTT fan within Home Assistant. I’m brand new to MQTT so any feedback would be appreciated.

Any thoughts?

can i see how you set up your lights specifically light.ge_12730_fan_control_switch_level_6_0

Is anyone able to test this patchset?

https://github.com/home-assistant/home-assistant/compare/dev...armills:zwave-fan

@armills I can test more later, but at first blush: it detects the GE Smart 3 way dimmers as fans in addition to the fan control

Here’s what the node info for the dimmer looks like:

AverageRequestRTT: 71
AverageResponseRTT: 128
Capabilities: Beaming,Listening,Routing
Friendly_name: Bedroom_light
Is_awake: True
Is_failed: False
Is_info_received: True
Is_ready: True
Is_zwave_plus: False
LastRequestRTT: 60
LastResponseRTT: 117
Manufacturer_name: GE
Max_baud_rate: 40000
Neighbors: 8,1,9,5,6
Node_id: 7
Product_name: 12724 3-Way Dimmer Switch
Query_stage: Complete
ReceivedCnt: 6
ReceivedDups: 0
ReceivedTS: 2017-05-24 16:58:44:975
ReceivedUnsolicited: 0
Retries: 0
SentCnt: 8
SentFailed: 0
SentTS: 2017-05-24 16:58:44:858</code>

Seems the Identity code is MANF:TYPE:ID, so workaround.py is matching them both on type 4944 (even though that section is commented as Product ID). Any idea how to get workaround to match more specifically?

Dimmers

Node005, Node Identity Codes: 0063:4944:3031
Node007, Node Identity Codes: 0063:4944:3031

Fan controls:

Node008, Node Identity Codes: 0063:4944:3034
Node009, Node Identity Codes: 0063:4944:3034

Thanks for trying this out. It does look like we need to be checking the Product ID as well. I updated workaround.py to fix this. Can you update workaround.py to the latest from my link, and try again?

looks better! stopped matching the dimmers and still matched the fans. I’m away from home for a few hours but I’ll test when I get home and see how the speeds are.

Almost there. Works great from hass, but when setting speed from homebridge it gets a key error for anything that would qualify as “medium”. Low and high are both fine and work. Homekit displays it as a slider, and whether activated by hand or voice to any value 35-64 that would trigger medium, hass throws this key error.

2017-05-24 23:23:03 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/lib/python3.4/asyncio/tasks.py", line 233, in _step
    result = coro.throw(exc)
  File "/srv/homeassistant/lib/python3.4/site-packages/homeassistant/core.py", line 1015, in _event_to_service_call
    yield from service_handler.func(service_call)
  File "/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/fan/__init__.py", line 213, in async_handle_fan_service
    yield from getattr(fan, method['method'])(**params)
  File "/usr/lib/python3.4/asyncio/futures.py", line 388, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.4/asyncio/tasks.py", line 286, in _wakeup
    value = future.result()
  File "/usr/lib/python3.4/asyncio/futures.py", line 277, in result
    raise self._exception
  File "/usr/lib/python3.4/concurrent/futures/thread.py", line 54, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/srv/homeassistant/lib/python3.4/site-packages/homeassistant/components/fan/zwave.py", line 60, in set_speed
    self.values.primary.value_id, SPEED_TO_VALUE[speed])
KeyError: 'med'

Thanks for the thorough testing! Turns out this is actually a bug in homebridge-homeassistant. I’ve opened a PR here: https://github.com/home-assistant/homebridge-homeassistant/pull/162

Since it sounds like it’s otherwise working well, I’m going to get it ready to merge.

EDIT:
https://github.com/home-assistant/home-assistant/pull/7767

1 Like

Right on!

One thing I forgot to mention is that hass shows the toggle control for “oscilation” (which doesnt do anything), even though the z-wave fan isn’t declaring that as a supported feature.

edit to add: Just patched homebridge-homeassistant and can confirm that setting to medium via siri or slider works as expected