Nortek GC-TBZ48 z-wave thermostat disconnects too frequently from HA

I recently bought Nortek GC-TBZ48 thermostat and seeing an issue. Anyone any idea to fix/work around this? I was going to ask the manufacturer (gocontrol.com/support) but since I’m seeing the issue through HA I’m asking here first.

What seems done ok

Nortek/GoControl device seems to be successfully installed, I at least verified:

  • On the console: fan status, current measured temp, goal temperature appear correct. Changing mode seems to take effect on the A/C heater side.
  • From Z-wave (via Home Assistant, HA): fan status, current measured temp, goal temperature

Issue

  • On HA the thermostat goes “unavailable” very frequently. It’s been 5 days since I installed it and today HA shows the thermostat “Unavailable” for 3 days straight.
    • One trigger I almost verified is any operation on HA for thermostat to change the mode/temperature. When I do this, thermostat’s HA doesn’t show anything different but after awhile it goes unavailable.
  • Not sure if this is related but looking from ZwaveJS I/F. ProtocolInfo keeps failing.
    {
    :      
         },
         "deviceId": "xxx-yyyyy-zzzzz",
         "status": "Dead",
         "interviewStage": "ProtocolInfo",
         "statistics": {
           "commandsTX": 95,
           "commandsRX": 114,
           "commandsDroppedRX": 0,
           "commandsDroppedTX": 0,
           "timeoutResponse": 0
         },
         "lastActive": 1638750631348,
         "minBatteryLevel": 100,
         "batteryLevels": [
           100
         ],
         "isBatteryPowered": true,
         "healProgress": "skipped",
         "_name": "NodeID_15"
    }      
    

Recovery that sometimes works

  • On GC-TBZ48 console do some changes e.g. fan from Auto to On then sometimes on HA it comes back up. But not always.

Environment

  • HA server on RPi3 that runs Ubuntu Core.
  • Z-wave gateway: GoControl HUSBZB-1, ZwaveJS Mqtt.
  • HA, and are installed via snap. Being on Core I guess they get automatically upgraded.

I would try starting a discussion on the zwavejs2mqtt github page.

The issue in this thread is similar but in my case the device was only battery-powered, never 24VAC-powered.

Thanks. I can do that if I’m more certain it can be a general z-wave issue, however all other 6 z-wave devices are working without obvious issues so I’m hesitant.

It could very well be an issue with the zwavejs database entry. Sometimes phantom or ghost nodes on your Z-Wave network can cause routing issues.

1 Like

Do you have the vanilla zwave or the zwave plus version of the thermostat? The model number is the same-- the only way to check is to open it up and look for the zwave logo inside.

Thanks again. Taking your opinion and I suspected potentially bad z-wave network (registration?). I removed the thermostat from the z-wave network and reincluded. Without knowing the best way other than doing factory-resetting, I did first excluded a bad node on HA side, then reset the device following GoControl GC-TBZ48 - How to Factory Reset - YouTube

Seems to be working so far. In OP I forgot to mention that I had never been able to operate the thermostat from HA (was only able to monitor) but this time I can operate and the thermostat doesn’t go away from HA. So I’d call this resolved for now.

Sorry I’m not sure exactly what you mean by vanilla and non vanilla (Ive always had a trouble in understanding when someone used vanilla). I opened the device. Does this picture give enough info?

I already closed this thread as I’m satisfied but for future readers.

That’s the Zwave+ version (you can see the “plus” text just below the zwave logo on the product sticker. I was asking because the non-plus (what I called “vanilla”) version of this thermostat needs a parameter set in order to get it to report status changes (heating, idle, etc.).

OK Z-Wave devices and controllers can be put into exclusion mode to properly exclude a device. Factory Resetting the device still leaves the old node ID as a phantom or ghost node in the network on the controller. Other devices may try to route through i to reach the controller causing network issues.

I know there is Windows software that can be used to remove those nodes. I have not researched if there is any way of doing this from zwavejs2mqtt, I have the same controller for testing so I can research this if you wish.

1 Like

Ah sorry as I’ve updated my post I did exclude from HA first before factory resetting on the device side. So I’m good?

Yes I do see this issue on another device and ve been wondering why, so thank you for the hint!

1 Like

Sometimes the Z-Wave network stored on the controller shows network device nodes that no longer exist. In some software you can mark them as failed & then delete from the controller network, improving response times & mesh network routing.

If HA tends to find network nodes that no longer exist, you have ghost nodes, Otherwise you should be OK assuming all devices have a good signal route back to the controller.

I’m having an issue with my thermostat no reporting current temps. I’m not at home currently where I can see which model I have, but do you know the parameter that needs to be set just in case? Thanks!

FWIW, I too have the vanilla Z-Wave Variant (not Z-Wave Plus) and was able to create a workaround to get the temperature to update in Home Assistant every 5 minutes using node-red.

I’m not too worried about the Z-Wave network congestion, or the power required since I’m powering the thermostat using 24VAC (not battery).

This basically just leverages the “Z-wave: Refresh values” service inside of a 5 minute loop.

[{"id":"407e6bc5fdde2312","type":"api-call-service","z":"85a7d961416e2ceb","name":"Refresh Garage","server":"5fbf0f057d3a0ffe","version":5,"debugenabled":false,"domain":"zwave_js","service":"refresh_value","areaId":[],"deviceId":[],"entityId":["sensor.garage_thermostat_air_temperature","climate.garage_thermostat"],"data":"{}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":400,"y":1380,"wires":[[]]},{"id":"56d00713cd1faa3d","type":"inject","z":"85a7d961416e2ceb","name":"manual","props":[],"repeat":"","crontab":"","once":false,"onceDelay":"0","topic":"","x":110,"y":1380,"wires":[["407e6bc5fdde2312"]]},{"id":"17dfe8c405ea7ab0","type":"inject","z":"85a7d961416e2ceb","name":"Automatic every 5 min","props":[],"repeat":"300","crontab":"","once":false,"onceDelay":"0","topic":"","x":170,"y":1420,"wires":[["407e6bc5fdde2312"]]},{"id":"5fbf0f057d3a0ffe","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":": ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"default","statusTimeFormat":"h:m","enableGlobalContextStore":false}]

You can test this logic without node-red by just calling the service under Developer Tools: