ZWave Linear GC-TBZ48 thermostat misreports fan_state, where to start?

I have a Linear GC-TBZ48 thermostat which generally works.

It has two fan_mode settings, Auto Low and On Low, which do pretty much what they say, and work fine.

It has an operation mode which reports cool, idle, pending_cool, etc., as it should.

But it has a fan_state, which I believe is supposed to report the operating state of the fan, e.g. idle or on. It might be on due to a setting of “on low” or due to being in cooling or heating mode, or in various states related to it like a purge mode.

It never shows anything other than fan_state: Idle

I just watched OZW_Log.txt while changing the mode from On Low to Auto Low and back - it showed nothing.

The attribute does show the change in Fan Mode, but does not show a change in fan_state (which is always Idle).

I want to know whether the fan is running. It’s not possible to just look at fan_mode since operation_mode affects it (and in ways I might not anticipate with its various transition modes).

This looks like a bug, but I have no idea how to tell if it’s a bug in the device, in the Open ZWave, or in Home Assistant. I tried looking at this code but learned nothing really. If it was a network I could sniff it and try to see if there’s any data flowing when the mode changes (if not pointing to the hardware I think).

I looked at issues on github and found some old ones on operation mode, but nothing on fan_state specifically other than being mentioned here. But that and issues it points to relate to operating mode not fan, generally.

Any suggestions where to start? Is there a “verbose” mode for the OZW_log? Or a way to sniff activity (I’m using a Nortec stick on an rPi).

I could try to find the manufacturer and ask them but with so much software between me and it I thought I would ask here first.

Thanks,

Linwood

I had 4 of these t-stats, 2 zwave+, 2 older ones - same issues you describe. After some digging (and working with HomeSeer support), this is a manufacturer bug. If you need a zwave tstat that reports operating state, fan state, temp, etc all immediately, buy a Trane XR524. It works flawlessly.

Do you simply want to know when the fan is running, or when it is heating and cooling? If the latter, I have a couple binary sensors I created for mine. I use them to trigger my ceiling fans while the climate control is doing it’s thing.

buy a Trane XR524. It works flawlessly.

Wish I saw that a month ago. :sob:

But thank you for confirming where the problem lies, so I do not have to chase it.

Do you simply want to know when the fan is running, or when it is heating and cooling?

Running. I can tell if it’s heating or cooling, but it has a lot of transitionary states where I am not sure. But those are brief (a few minutes) so maybe I just ignore it. I had hoped though, much as I can accumulate cooling run time, to accumulate fan run time, as well as make decisions on whether to run the fan based in part to whether it has just been running.

But maybe I do not need all that. Maybe I just turn it on when I think it needs to be on, and auto when I think it does not.

In what situations do you have the fan running when the Climate Control isn’t doing anything? Humidification or something? I haven’t seen a need to know this.

Would you mind sharing the config for these sensors please? I still have this same issue.

I know a fix for this issue.

For some reason, the factory default for “Autosend fan state” is disabled, which mean that the thermostat does not send a zwave update packet when the fan state changes.

You can override this by sending a configuration update for parameter 23, update it from 0x205F to 0x207F.

Additional details here: https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/3464/TBZ500%20Z-Wave%20Plus%20Developers%20Specification%20Rev%20D.pdf

1 Like

That looks promising but I don’t have an option 23 to set via Home Assistant. I am running the old zwave integration, that may make a difference, are you using the js version?

You can set any config parameter you want using the zwave.set_config_parameter service. For unlisted parameters, you are required to set the size field.

I am using zwavejs2mqtt, and it does have a GUI for setting this, it’s named:

“[5-112-0-23] Lifeline Association Group Report To Send”

But I’m sure there are other ways to set it with other zwave integrations.

Is there a simple way to see the current value, to make sure I won’t accidentally clear bits it might be using? I looked at zwave.print_config_parameter but can’t see a log where it comes out. I found some indication it can be seen with “sudo journalctl -f -u home-assistant@homeassistant” but I got nothing from it.

I don’t really have any idea if print works for unlisted config parameters, if so the output would be in home-assistant.log at least. I wouldn’t be too concerned about what it’s currently set to, just change it to the value you want, which seems to be the one posted (0x207F == 8319). It’s the default + 0x0020.

I don’t have any idea if it took or not. I tried it. But things have changed and I was foolish and did not check first. What used to be fan_state is gone, and there’s a fan_action that now seems to work. I did not check if somehow this had magically been fixed over the years since I first wrote this, or if the bits above fixed it. But… it does seem to work.