sammachin / node-red-matter-bridge

Matter Bridge for Node-RED
11 stars 2 forks source link

Cannot set temperature of thermostat & passthrough does not occur. #8

Closed Steve-Mcl closed 2 weeks ago

Steve-Mcl commented 2 weeks ago

image

image

sammachin commented 2 weeks ago

Have you tried coming out of the thermostat view in Google Home and going back in, sometimes the UI doesn't update in realtime from what I've seen.

Passthrough is something I need to work on more, its quite a complicated problem because depending on how you use the nodes you may or may not want the events to be passed along. I have some ideas to refactor it though

Steve-Mcl commented 2 weeks ago

Have you tried coming out of the thermostat view in Google Home and going back in,

I have Sam. i've closed/reopened & even killed the home app, restarted Node-RED, re-deployed flows (full deploy) and recreated the thermostat+full deploy.

I did once, see 19.5 for the "indoor" value (not long after recreating it), then it was zero again (and been that way since). Quite odd.

sammachin commented 2 weeks ago

ah I see you problem temperature needs to be a whole number but its in 0.01 degree steps, so 19.5C would be 1950,

Steve-Mcl commented 2 weeks ago

ok, my bad, i am getting values in now thanks. I did try that before but suspect it was a combination of me being impatient coupled with the temperature node accepting real floating point values (i.e. 17.5) (I assumed)

On the passthrough thing: I node device.events.thermostat.localTemperature$Changed is not handled in /devices/thermostat.js so perhaps that is the reason for passthrough not working?

One last Question if you dont mind Sam.

When I set the thermostat to a value above or below the "indoor" temperature, it does not switch modes (on the home app) nor does the node output the change of mode. I guess we (the user) is supposed to perform the logic for the mode and update the thermostat node based on setPoint and current temperature? (or is Matter/your node supposed to compute the mode based on current values)?

sammachin commented 2 weeks ago

yeah I'm just using the values that the matter cluster specifies, hence the big numbers, but I'm now thinking it might be more user friendly to just use one decimal place and do a x100 on the input.

The mode won't change automatically because thats what you want your home to do, eg heat to setPoint or Cool to SetPoint, there is an option for a dual mode eg "keep my home at 19.5 but I've not implemented that yet.

In terms of deciding whether to switch the heater on or not though that would need to be in your flows logic, so yes if setPoint < temperature && mode=heat then turn on heater, or if temperature > setPoint && mode=cool turn on AC.

Steve-Mcl commented 2 weeks ago

yeah I'm just using the values that the matter cluster specifies, hence the big numbers, but I'm now thinking it might be more user friendly to just use one decimal place and do a x100 on the input.

No argument here Sam. And with the isNumber helpers in place, you can be sure you are multiplying numbers.

Up to you mate. Either way, hugely appreciate your work on this.

sammachin commented 2 weeks ago

some fixes for the temperature input in 0.10.1 so you now get a more consisten output of mode, setPoint and temperature all the time. Also temperature will be passed through if enabled.

There's more work to refactor the whole passthrough logic on all nodes and I've not got a design for that but will do that in 0.11 along with an update to matter.js