node-zwave-js icon indicating copy to clipboard operation
node-zwave-js copied to clipboard

Device (Heatit thermostat) doesn't report binary switch as it should with updated firmware

Open Fr00t opened this issue 2 years ago • 10 comments

Is your problem within Home Assistant (Core or Z-Wave JS Integration)?

NO, my problem is NOT within Home Assistant or the ZWave JS integration

Is your problem within ZWaveJS2MQTT?

YES, BUT a ZWaveJS2MQTT developer has told me to come here

Checklist

Describe the bug

What causes the bug? Unclear. Maybe the device was set up using documentation of a previous firmware version of the device that didn't support the binary switch?

What do you observe? The thermostat reports setpoints as expected, but the new firmware is also capable of reporting wether or not the relay is open which is the feature I want.

What did you expect to happen? That binary switch for heating status is correctly reported

Steps to reproduce the behavior: I've tried re-interviewing the nodes multiple time. I've got two identical thermostats. They reported correctly using Homeseers implementation so I know it's actually possible.

I turn up the setpoint above current temperature, see the red LED-indicator light up, and look for changes in the events tab, but all I get is the new setpoint.

I have attached the documentation of this firmware version if that could be of any use.

HeatIt_1v9.pdf

Device information

Manufacturer: HeatIt Model name: Z-trm2fx Firmware: 1.92 Node ID in your network: 96

It's added as "Thermofloor Thermostat TF016 / TF021" in Zwavejs2mqtt

How are you using node-zwave-js?

  • [X] zwavejs2mqtt Docker image (latest)
  • [ ] zwavejs2mqtt Docker image (dev)
  • [ ] zwavejs2mqtt Docker manually built (please specify branches)
  • [ ] ioBroker.zwave2 adapter (please specify version)
  • [ ] HomeAssistant zwave_js integration (please specify version)
  • [ ] pkg
  • [ ] node-red-contrib-zwave-js (please specify version, double click node to find out)
  • [ ] Manually built from GitHub (please specify branch)
  • [ ] Other (please describe)

Which branches or versions?

version: node-zwave-js branch: zwavejs2mqtt branch:

Did you change anything?

no

If yes, what did you change?

No response

Did this work before?

No, it never worked anywhere

If yes, where did it work?

It worked in Homeseer before I migrated to zwavejs2mqtt and Homeassistant

Attach Driver Logfile

zwavejs_2022-06-04.log

Fr00t avatar Jun 04 '22 13:06 Fr00t

It seems to actually report correctly when using the "Refresh" button in zwavejs2mqtt. I'm puzzled by why it wouldn't update automatically?

Are my groups/associations off?

Fr00t avatar Jun 04 '22 13:06 Fr00t

If the new firmware changed capabilities, you might need to exclude and re-include the device.

I won't be able to look at this before Monday, so please make sure to capture the inclusion and/or an interview in the driver log. I'm on mobile so I Can't verify that the posted log is sufficient right now.

AlCalzone avatar Jun 04 '22 13:06 AlCalzone

If the new firmware changed capabilities, you might need to exclude and re-include the device.

I won't be able to look at this before Monday, so please make sure to capture the inclusion and/or an interview in the driver log. I'm on mobile so I Can't verify that the posted log is sufficient right now.

Thanks, but it was always at 1.92 when I added it to zwavejs

Fr00t avatar Jun 04 '22 14:06 Fr00t

It seems like configuration (parameters) introduced in this firmware isn't supported either. Parameter 14-18 in the documentation linked in OP

Fr00t avatar Jun 04 '22 16:06 Fr00t

It seems like configuration (parameters) introduced in this firmware isn't supported either. Parameter 14-18 in the documentation linked in OP

As for this issue I think the solution should be fairly simple. I've forked and created a commit here. I do need some guidance on how I can test it though? How can I move that device-json into my zwavejs2mqtt container to give it a go?

EDIT: I've manually moved it into the container and it seems to work as expected. Will test a bit more and create a pr for this.

This doesn't solve my other problem though. It seems related to this issue with related fix, that user ran with fw 1.8

Fr00t avatar Jun 04 '22 16:06 Fr00t

There is documentation on testing device files in the zwavejs2mqtt repo.

AlCalzone avatar Jun 04 '22 17:06 AlCalzone

There is documentation on testing device files in the zwavejs2mqtt repo.

Yea I just found it and that makes testing significantly easier :) I imagine with FW >= 1.9 it's possible to drop disableBasicMapping.

I'm still unable to get it to update the binary switch current value by itself, I have to manually trigger the refresh and then I get the correct information immediately. Any ideas about this?

Attached is a log file in which I at 2022-06-04T18:56:33 set a new lower setpoint which turns the relay off and then at 2022-06-04T18:56:51 I guery the basic switch and see that it's turned off. zwavejs_2022-06-04 (1).log

Is there an assiciation group or endpoint I'm missing? If so, where would I start to look for it?

image

Fr00t avatar Jun 04 '22 19:06 Fr00t

2022-06-04T18:56:38.043Z DRIVER   Dropping message because it could not be deserialized: BinarySwitchCCSet: dese
                                  rialization not implemented (ZW0320)

The thermostat is using a BinarySwitchCCSet which is meant to control a binary switch and not to report status. See manual: image

According to the manual, there is another association group on Endpoint 1, which uses Basic Report commands to do the same. This sounds like a better fit: image

I'm not sure how this one is labeled though, since we don't have any associations defined for the endpoints in the config file.

You do seem to have a few duplicated associations though. The controller doesn't have any endpoints, so specifying a different target endpoint than "None" (or 0 for some lifelines) just results in duplicate reports.

AlCalzone avatar Jun 07 '22 13:06 AlCalzone

Thanks so much for getting back to me @AlCalzone !

I cleaned up my associations: image

I started a new log and did the following:

  1. Changed to high setpoint
  2. Changed to low setpoint
  3. Refreshed basic v0
  4. Refreshed binary switch v1
  5. Changed to high setpoint
  6. Refreshed basic v0 (might have double clicked this)
  7. Refreshed binary switch v1

I still have to manually refresh to get the new values. Note that this is without disableBasicMapping

zwavejs_2022-06-07.log

Any way I can get this to automatically report? Thanks!

Fr00t avatar Jun 07 '22 18:06 Fr00t

I'm still not seeing any unsolicited Basic reports from the thermostat, only the Binary Switch Set commands.

You'll have to ask the Heat It support how the thermostat needs to be configured so it sends the Basic Reports mentioned in the device manual. They should be able to tell you.

AlCalzone avatar Jun 08 '22 06:06 AlCalzone

This issue has not seen any recent activity and was marked as "stale 💤". Closing for housekeeping purposes... 🧹

Feel free to reopen if the issue persists.

zwave-js-assistant[bot] avatar Feb 17 '23 00:02 zwave-js-assistant[bot]