Diagnosing dropped command error

I recently made the switch from my AIO install to Hassio. My AIO setup was a few versions behind. .57 or .58

About the same time, I recently started having issues with a slow-down with some of my Zwave commands. Looking at the OZW log, I see that there’s an issue with one of my nodes. It’s a relatively new switch - about 6 months old. It’s a HomeSeer HS-WD100+

I’m not doing anything special with it (command class stuff), just sending on/off commands.

OZW reports:

2017-12-26 12:00:05.187 Error, Node050, ERROR: Dropping command, expected response not received after 1 attempt(s)

Has anyone dealt with something like this? Any advice?

(update: I see this for another node, too)
(also: I booted of an image of my previous AIO install - I still have the problem with AIO. Timing with upgrade was coincidental)

Generally these errors mean that there’s a communication issue - the device isn’t acknowledging the commands. It could be that it’s too far from the controller or other powered node, it could be that a powered node that was relaying messages isn’t any more, interference from something else, or a device fault.

The first thing to try is to run a Heal Network and see if that helps. If it doesn’t, power off the problem device for 30 seconds, before restoring power to it. then run Heal Network again.

Thanks. I tried a heal, with no improvement. I’ll try cutting power to the switch and re-heal.

Hmm. No luck with a heal after removing power. I’m noticing 2 other nodes in the logs that exhibit the same error.

Sometimes running Test Network helps for me, if the problem isn’t a physical one with a device going faulty.

It looks like this is happening consistently with my two HS-WD100+'s

These are my only switches that support COMMAND_CLASS_CENTRAL_SCENE. And they are the switches that change state most in my home (kitchen lights).

Could that be related? Seems like I remember some changes recently around central scene control.

My dropped command errors have spread to other switches. Weird that multiple switches would fail in the same time frame. Node 48 here, for instance, is less than a year old. My lights are turning on/off, but there’s a long delay.

2018-01-01 06:32:35.146 Detail,
2018-01-01 06:32:35.146 Detail, Node048, Removing current message
2018-01-01 06:32:35.146 Detail,
2018-01-01 06:32:35.146 Info, Node048, Sending (Send) message (Callback ID=0xea, Expected Reply=0x04) - SwitchMultilevelCmd_Get (Node=48): 0x01, 0x09, 0x00, 0x13, 0x30, 0x02, 0x26, 0x02, 0x25, 0xea, 0x3c
2018-01-01 06:32:35.155 Detail, Node048,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2018-01-01 06:32:35.155 Detail, Node048,   ZW_SEND_DATA delivered to Z-Wave stack
2018-01-01 06:32:35.173 Info, Node035, Value::Set - COMMAND_CLASS_SWITCH_MULTILEVEL - Level - 0 - 1 - 59
2018-01-01 06:32:35.174 Info, Node035, SwitchMultilevel::Set - Setting to level 59
2018-01-01 06:32:35.174 Detail, Node035, Queuing (Send) SwitchMultilevelCmd_Set (Node=35): 0x01, 0x0a, 0x00, 0x13, 0x23, 0x03, 0x26, 0x01, 0x3b, 0x25, 0xed, 0x12
2018-01-01 06:32:35.174 Detail, Node035, Queuing (Send) SwitchMultilevelCmd_Get (Node=35): 0x01, 0x09, 0x00, 0x13, 0x23, 0x02, 0x26, 0x02, 0x25, 0xee, 0x2b
2018-01-01 06:32:35.181 Info, Node034, Value::Set - COMMAND_CLASS_SWITCH_MULTILEVEL - Level - 0 - 1 - 59
2018-01-01 06:32:35.181 Info, Node034, SwitchMultilevel::Set - Setting to level 59
2018-01-01 06:32:35.181 Detail, Node034, Queuing (Send) SwitchMultilevelCmd_Set (Node=34): 0x01, 0x0a, 0x00, 0x13, 0x22, 0x03, 0x26, 0x01, 0x3b, 0x25, 0xef, 0x11
2018-01-01 06:32:35.181 Detail, Node034, Queuing (Send) SwitchMultilevelCmd_Get (Node=34): 0x01, 0x09, 0x00, 0x13, 0x22, 0x02, 0x26, 0x02, 0x25, 0xf0, 0x34
2018-01-01 06:32:35.213 Detail, Node048,   Received: 0x01, 0x07, 0x00, 0x13, 0xea, 0x00, 0x00, 0x07, 0x06
2018-01-01 06:32:35.213 Detail, Node048,   ZW_SEND_DATA Request with callback ID 0xea received (expected 0xea)
2018-01-01 06:32:35.213 Info, Node048, Request RTT 67 Average Request RTT 59
2018-01-01 06:32:35.214 Detail,   Expected callbackId was received
2018-01-01 06:32:45.147 Error, Node048, ERROR: Dropping command, expected response not received after 1 attempt(s)
2018-01-01 06:32:45.147 Detail, Node048, Removing current message
2018-01-01 06:32:45.147 Detail, Node048, Notification: Notification - TimeOut

@ih8gates did you ever solve this? Having the same issue.

Just to update with my experience on the same.
using :Aeon Labs Z-stick gen5 USB
I Commented out the Network_key. and that “solved” the problem.

Not sure why, but I must have made some mistake when first setting this up I guess.
But with the network_key enabled i would get errors whenever trying to set temperature or flip a switch.
After uncommenting this setting things look much better.

Will try to update when I get a little more experience with this.

I ended up replacing the switch that was dropping commands and everything settled out.

1 Like

I wish I had an answer, but its more of a story. I have 21 Zwave devices, lots of Zooz, some GE, Vision, Hank, Aotec, and more. I too was running into an issue when I would action 5 lights at once, and I would see the dreaded:

“ERROR: Dropping command, expected response not received after 1 attempt(s)”

This seems to cause no issue in functionality, except for a 10 second lag in the commands being executed. This 10 second pause is an OpenZwave default setting and you can tune this, edit your options.xml file in your homeassistant folder.

Uncomment this line:

<!-- <Option name="RetryTimeout" value="40000" /> -->

you want it to look like this:

<Option name="RetryTimeout" value="5000" />

Once you make the change, restart Home Assistant (to restart OpenZwave). The above would change the OpenZwave timeout to 5 seconds. I played with this a little bit, I set it down to 3 seconds, and I saw some commands totally fail. I ended up setting it back to the default for now. I might set this to 5 seconds and re-test things.

One thing I did discover in all of this is that I had a Fibaro dimmer ( FGD212 ), which was added to my Zwave network in Secure mode. This device was dropping frames a lot. I suspect it was from the workload of sending encrypted frames to/from this device. I removed this device and re-added it to my zwave network, via a standard (non-secure) inclusion, this has stopped the the dropped frames to this device.

As for removing the Network_Key, this is fine if you have no secure devices on your network. However, if you have a lock or other security device, removing the key will render them useless on your zwave network.

‘Hate to maybe be offtopic for this but the Z-wave protocol is not relyable. have the same issues out of nowhere(did absolutley nothing to the Z-wave network and all my devices are absolutley useless. This is not the first time is happening without any explanation. Same error: ERROR: Dropping command, expected response not received after 1 attempt(s)
So yes Z-Wave is a bad protocol. I have 10 plus devices the mesh is there restart heal network all useless…MQTT even bluetooth much more reliable’

Later edit: i did a complete power off of the Raspberry PI and Z-wave module and it seems that it’s working now. Will see in the long run though

Has anyone understood why this is happening. I have all powered z-wave nodes (should be more reliable) and i get dropped messages after some time as the network appears to overload.

I can confirm that my stick is correctly connected as logs show good connects for heal start attempts etc.

Using z-wave integration on latest HASS.io

2019-12-28 08:53:26.700 Detail,
2019-12-28 08:53:26.700 Info, Node007, Sending (Send) message (Callback ID=0x1c, Expected Reply=0x04) - SwitchMultilevelCmd_Get (Node=7): 0x01, 0x09, 0x00, 0x13, 0x07, 0x02, 0x26, 0x02, 0x25, 0x1c, 0xfd
2019-12-28 08:53:27.700 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 08:53:27.700 Detail, Node007, Removing current message
2019-12-28 08:53:27.700 Detail, Node007, Notification: Notification - TimeOut
2019-12-28 08:53:27.701 Detail,
2019-12-28 08:53:27.701 Info, Node007, Sending (Send) message (Callback ID=0x1d, Expected Reply=0x04) - SwitchMultilevelCmd_Get (Node=7): 0x01, 0x09, 0x00, 0x13, 0x07, 0x02, 0x26, 0x02, 0x25, 0x1d, 0xfc
2019-12-28 08:53:28.701 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 08:53:28.701 Detail, Node007, Removing current message
2019-12-28 08:53:28.701 Detail, Node007, Notification: Notification - TimeOut
2019-12-28 10:50:33.509 Detail, Node001, Queuing (Controller) Request Node Neighbor Update
2019-12-28 10:50:33.510 Detail, Node006, Queuing (Controller) Request Node Neighbor Update
2019-12-28 10:50:33.510 Detail, Node007, Queuing (Controller) Request Node Neighbor Update
2019-12-28 10:50:33.510 Detail, Node009, Queuing (Controller) Request Node Neighbor Update
2019-12-28 10:50:33.510 Info, Requesting Neighbor Update for node 1
2019-12-28 10:50:33.511 Detail, Node001, Queuing (Command) ControllerCommand_RequestNodeNeighborUpdate (Node=1): 0x01, 0x05, 0x00, 0x48, 0x01, 0x1e, 0xad
2019-12-28 10:50:33.511 Detail, Notification: ControllerCommand - Starting
2019-12-28 10:50:33.512 Detail,
2019-12-28 10:50:33.512 Info, Node001, Sending (Command) message (Callback ID=0x1e, Expected Reply=0x48) - ControllerCommand_RequestNodeNeighborUpdate (Node=1): 0x01, 0x05, 0x00, 0x48, 0x01, 0x1e, 0xad
2019-12-28 10:50:34.512 Error, Node001, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 10:50:34.512 Detail, Node001, Removing current message
2019-12-28 10:50:34.512 Detail, Node001, Notification: Notification - TimeOut
2019-12-28 10:50:34.518 Detail, Notification: ControllerCommand - Error - Failed
2019-12-28 10:50:34.518 Info, Requesting Neighbor Update for node 6
2019-12-28 10:50:34.518 Detail, Node006, Queuing (Command) ControllerCommand_RequestNodeNeighborUpdate (Node=6): 0x01, 0x05, 0x00, 0x48, 0x06, 0x1f, 0xab
2019-12-28 10:50:34.518 Detail, Notification: ControllerCommand - Starting
2019-12-28 10:50:34.518 Detail,
2019-12-28 10:50:34.518 Info, Node006, Sending (Command) message (Callback ID=0x1f, Expected Reply=0x48) - ControllerCommand_RequestNodeNeighborUpdate (Node=6): 0x01, 0x05, 0x00, 0x48, 0x06, 0x1f, 0xab
2019-12-28 10:50:35.518 Error, Node006, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 10:50:35.518 Detail, Node006, Removing current message
2019-12-28 10:50:35.518 Detail, Node006, Notification: Notification - TimeOut
2019-12-28 10:50:35.519 Detail, Notification: ControllerCommand - Error - Failed
2019-12-28 10:50:35.519 Info, Requesting Neighbor Update for node 7
2019-12-28 10:50:35.519 Detail, Node007, Queuing (Command) ControllerCommand_RequestNodeNeighborUpdate (Node=7): 0x01, 0x05, 0x00, 0x48, 0x07, 0x20, 0x95
2019-12-28 10:50:35.519 Detail, Notification: ControllerCommand - Starting
2019-12-28 10:50:35.519 Detail,
2019-12-28 10:50:35.519 Info, Node007, Sending (Command) message (Callback ID=0x20, Expected Reply=0x48) - ControllerCommand_RequestNodeNeighborUpdate (Node=7): 0x01, 0x05, 0x00, 0x48, 0x07, 0x20, 0x95
2019-12-28 10:50:36.519 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 10:50:36.520 Detail, Node007, Removing current message
2019-12-28 10:50:36.520 Detail, Node007, Notification: Notification - TimeOut
2019-12-28 10:50:36.520 Detail, Notification: ControllerCommand - Error - Failed
2019-12-28 10:50:36.520 Info, Requesting Neighbor Update for node 9
2019-12-28 10:50:36.520 Detail, Node009, Queuing (Command) ControllerCommand_RequestNodeNeighborUpdate (Node=9): 0x01, 0x05, 0x00, 0x48, 0x09, 0x21, 0x9a
2019-12-28 10:50:36.520 Detail, Notification: ControllerCommand - Starting
2019-12-28 10:50:36.520 Detail,
2019-12-28 10:50:36.520 Info, Node009, Sending (Command) message (Callback ID=0x21, Expected Reply=0x48) - ControllerCommand_RequestNodeNeighborUpdate (Node=9): 0x01, 0x05, 0x00, 0x48, 0x09, 0x21, 0x9a
2019-12-28 10:50:37.521 Error, Node009, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 10:50:37.521 Detail, Node009, Removing current message
2019-12-28 10:50:37.521 Detail, Node009, Notification: Notification - TimeOut
2019-12-28 10:50:37.522 Detail, Notification: ControllerCommand - Error - Failed

Any suggestions is much appreciated as i am restarting a lot.

Example, restarted and re-configured a few switch types - first two work then it fails and now no nodes are responsive.

2019-12-28 11:00:47.428 Info, Node009, Configuration::Set - Parameter=120, Value=1 Size=1
2019-12-28 11:00:47.429 Detail, Node009, Queuing (Send) ConfigurationCmd_Set (Node=9): 0x01, 0x0c, 0x00, 0x13, 0x09, 0x05, 0x70, 0x04, 0x78, 0x01, 0x01, 0x25, 0x49, 0x8c
2019-12-28 11:00:47.429 Detail, Node009, Queuing (Send) ConfigurationCmd_Get (Node=9): 0x01, 0x0a, 0x00, 0x13, 0x09, 0x03, 0x70, 0x05, 0x78, 0x25, 0x4a, 0x8e
2019-12-28 11:00:47.429 Detail, 
2019-12-28 11:00:47.429 Info, Node009, Sending (Send) message (Callback ID=0x49, Expected Reply=0x13) - ConfigurationCmd_Set (Node=9): 0x01, 0x0c, 0x00, 0x13, 0x09, 0x05, 0x70, 0x04, 0x78, 0x01, 0x01, 0x25, 0x49, 0x8c
2019-12-28 11:00:47.436 Detail, Node009,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2019-12-28 11:00:47.436 Detail, Node009,   ZW_SEND_DATA delivered to Z-Wave stack
2019-12-28 11:00:47.453 Detail, Node009,   Received: 0x01, 0x07, 0x00, 0x13, 0x49, 0x00, 0x00, 0x02, 0xa0
2019-12-28 11:00:47.453 Detail, Node009,   ZW_SEND_DATA Request with callback ID 0x49 received (expected 0x49)
2019-12-28 11:00:47.453 Info, Node009, Request RTT 24 Average Request RTT 23
2019-12-28 11:00:47.453 Detail,   Expected callbackId was received
2019-12-28 11:00:47.453 Detail,   Expected reply was received
2019-12-28 11:00:47.453 Detail,   Message transaction complete
2019-12-28 11:00:47.453 Detail, 
2019-12-28 11:00:47.453 Detail, Node009, Removing current message
2019-12-28 11:00:47.453 Detail, 
2019-12-28 11:00:47.453 Info, Node009, Sending (Send) message (Callback ID=0x4a, Expected Reply=0x04) - ConfigurationCmd_Get (Node=9): 0x01, 0x0a, 0x00, 0x13, 0x09, 0x03, 0x70, 0x05, 0x78, 0x25, 0x4a, 0x8e
2019-12-28 11:00:47.461 Detail, Node009,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2019-12-28 11:00:47.461 Detail, Node009,   ZW_SEND_DATA delivered to Z-Wave stack
2019-12-28 11:00:47.477 Detail, Node009,   Received: 0x01, 0x07, 0x00, 0x13, 0x4a, 0x00, 0x00, 0x02, 0xa3
2019-12-28 11:00:47.477 Detail, Node009,   ZW_SEND_DATA Request with callback ID 0x4a received (expected 0x4a)
2019-12-28 11:00:47.477 Info, Node009, Request RTT 23 Average Request RTT 23
2019-12-28 11:00:47.477 Detail,   Expected callbackId was received
2019-12-28 11:00:47.489 Detail, Node009,   Received: 0x01, 0x0b, 0x00, 0x04, 0x00, 0x09, 0x05, 0x70, 0x06, 0x78, 0x01, 0x01, 0xf2
2019-12-28 11:00:47.489 Detail, 
2019-12-28 11:00:47.489 Info, Node009, Response RTT 35 Average Response RTT 35
2019-12-28 11:00:47.489 Detail, Node009, Refreshed Value: old value=3, new value=1, type=list
2019-12-28 11:00:47.489 Detail, Node009, Changes to this value are not verified
2019-12-28 11:00:47.489 Info, Node009, Received Configuration report: Parameter=120, Value=1
2019-12-28 11:00:47.489 Detail, Node009,   Expected reply and command class was received
2019-12-28 11:00:47.489 Detail, Node009,   Message transaction complete
2019-12-28 11:00:47.489 Detail, 
2019-12-28 11:00:47.489 Detail, Node009, Removing current message
2019-12-28 11:00:47.489 Detail, Node009, Notification: ValueChanged
2019-12-28 11:02:08.125 Info, Node007, Value::Set - COMMAND_CLASS_CONFIGURATION - Set the external switch mode for S1 - 120 - 1 - 2-state switch
2019-12-28 11:02:08.125 Info, Node007, Configuration::Set - Parameter=120, Value=1 Size=1
2019-12-28 11:02:08.126 Detail, Node007, Queuing (Send) ConfigurationCmd_Set (Node=7): 0x01, 0x0c, 0x00, 0x13, 0x07, 0x05, 0x70, 0x04, 0x78, 0x01, 0x01, 0x25, 0x4b, 0x80
2019-12-28 11:02:08.126 Detail, Node007, Queuing (Send) ConfigurationCmd_Get (Node=7): 0x01, 0x0a, 0x00, 0x13, 0x07, 0x03, 0x70, 0x05, 0x78, 0x25, 0x4c, 0x86
2019-12-28 11:02:08.126 Detail, 
2019-12-28 11:02:08.126 Info, Node007, Sending (Send) message (Callback ID=0x4b, Expected Reply=0x13) - ConfigurationCmd_Set (Node=7): 0x01, 0x0c, 0x00, 0x13, 0x07, 0x05, 0x70, 0x04, 0x78, 0x01, 0x01, 0x25, 0x4b, 0x80
2019-12-28 11:02:09.126 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 11:02:09.126 Detail, Node007, Removing current message
2019-12-28 11:02:09.126 Detail, Node007, Notification: Notification - TimeOut
2019-12-28 11:02:09.126 Detail, 
2019-12-28 11:02:09.127 Info, Node007, Sending (Send) message (Callback ID=0x4c, Expected Reply=0x04) - ConfigurationCmd_Get (Node=7): 0x01, 0x0a, 0x00, 0x13, 0x07, 0x03, 0x70, 0x05, 0x78, 0x25, 0x4c, 0x86
2019-12-28 11:02:10.127 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 11:02:10.127 Detail, Node007, Removing current message
2019-12-28 11:02:10.127 Detail, Node007, Notification: Notification - TimeOut
2019-12-28 11:05:49.418 Info, Node007, Value::Set - COMMAND_CLASS_SWITCH_MULTILEVEL - Dimming Duration - 5 - 1 - 255
2019-12-28 11:05:49.418 Detail, Node007, Initial read of value
2019-12-28 11:05:49.418 Detail, Node007, Notification: ValueChanged
2019-12-28 11:05:49.418 Info, Node007, Value::Set - COMMAND_CLASS_SWITCH_MULTILEVEL - Level - 0 - 1 - 255
2019-12-28 11:05:49.418 Info, Node007, SwitchMultilevel::Set - Setting to level 255
2019-12-28 11:05:49.418 Info, Node007,   Duration: Default
2019-12-28 11:05:49.418 Detail, Node007, Queuing (Send) SwitchMultilevelCmd_Set (Node=7): 0x01, 0x0b, 0x00, 0x13, 0x07, 0x04, 0x26, 0x01, 0xff, 0xff, 0x25, 0x4d, 0xab
2019-12-28 11:05:49.418 Detail, Node007, Queuing (Send) SwitchMultilevelCmd_Get (Node=7): 0x01, 0x09, 0x00, 0x13, 0x07, 0x02, 0x26, 0x02, 0x25, 0x4e, 0xaf
2019-12-28 11:05:49.421 Detail, 
2019-12-28 11:05:49.421 Info, Node007, Sending (Send) message (Callback ID=0x4d, Expected Reply=0x13) - SwitchMultilevelCmd_Set (Node=7): 0x01, 0x0b, 0x00, 0x13, 0x07, 0x04, 0x26, 0x01, 0xff, 0xff, 0x25, 0x4d, 0xab
2019-12-28 11:05:50.421 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 11:05:50.421 Detail, Node007, Removing current message
2019-12-28 11:05:50.421 Detail, Node007, Notification: Notification - TimeOut
2019-12-28 11:05:50.422 Detail, 
2019-12-28 11:05:50.422 Info, Node007, Sending (Send) message (Callback ID=0x4e, Expected Reply=0x04) - SwitchMultilevelCmd_Get (Node=7): 0x01, 0x09, 0x00, 0x13, 0x07, 0x02, 0x26, 0x02, 0x25, 0x4e, 0xaf
2019-12-28 11:05:51.422 Error, Node007, ERROR: Dropping command, expected response not received after 1 attempt(s)
2019-12-28 11:05:51.422 Detail, Node007, Removing current message
2019-12-28 11:05:51.422 Detail, Node007, Notification: Notification - TimeOut

I had similar issues with HS WD100’s and never could get it stable. I ended up replacing a LOT of switches to solve the problem.

I know some people love the HS WS/WD 100 switches but there are a couple reports like mine, and yours, where they get into some unhappy state.

Having this exact issue! Did anyone figure this out? I as well have a lot of HS WS/WD’S … it would be a huge task to replace them… Which ones did you end up using @jwelter ?

I moved to Lutron and the pro bridge and could not be happier. One of the best parts of my HA setup.

I also have this problem. They worked gang busters initially, but I think subsequent releases have bugged them out. They no longer report neighbors or instant state. I have to poll them and zwave start up is a mess on reboot for a good 30 minutes while it all timeouts. Incidentally, the UI says startup has completed, but the logs tell a different story. Made the mistake of rebooting too soon a couple times, which causes undefined devices.

I haven’t really ‘solved’ it. But for the most part they work after the mesh settles and polling get’s the level they weren’t reporting. The main problem I have, is that sometimes if they’re turning off, and motion is retriggered (in appdaemon app), they’re still reported as on as they are ramping off.

Thats the most frustrating part. They used to work great! Then something happened… I think on the HA side of things? Updated OZW implementation or something? I tried getting hold of homeseer support but they didn’t seem to care too much.

@jwelter I was considering lutron… it would suck so much to ditch a few k worth of switches not to mention installation time, but this is just unusable. I’m not completely sold on the caseta switch design either and was concerned about range for a pretty large installation sq. feet wise - whats your experience?

I was in the same place. I have over 50 Home Seer switches to remove and replace. Some significant $$$.

I went Lutron for a few reasons:

  1. Availability of the Pro Bridge that you can control via Telnet and the excellent HA custom plugin by @upsert for it.

  2. Lutron supported using a plug in switch module as a repeater to grow range. I have no issues in a 5500 sq/ft with another 2000 sq/ft walk out basement. The Lutron stuff just works

  3. Since my install Lutron has added a dedicated repeater module that you can add multiple so zero issues in large installs.

  4. Lutron exandes from 50 to 75 supported devices.

  5. Lutron added a fan module as well as motion sensor modules lately.

I can not recommend Lutron enough if you want a bulletproof, local control, instant reporting setup. It just works.