ZHA Thermostat

YES!! That fixed it. Awesome. I didn’t download a new version though. I just made the slight change manually (added the missing attribute).

Thanks a lot for your support.

Now I get this:
01

The Off button turns off heating and the “Fire” button can manually turn it back on. This is exactly what I was wanting.

Oh, and yes, it is actually that hot in the room right now. Very hot summer in Germany. :wink:

I’m glad it is working for you. :+1:

I see your thermostat also reports the currently active state, shown as “Off”. This is a nice optional feature, only one of my thermostats does that. Hopefully the new climate component supports this properly, with the old one it’s not technically supported.

If you update the mode or setpoint at the actual thermostat itself, HA should update in turn. Give it a try and let me know if there is a problem there.

Yes, it works as I wanted it to. The state changes between “Off” and “Heat” when the relay switches between on and off. And the two buttons below lets me manually switch between those two modes as well. The main difference being that the manual “Off” button turns the thermostat off independent whether the heat set point has been reached or not. So, very good.
And yes, when I change the heat set point on the thermostat directly it almost immediate reflects in the HA card.
Maybe you can help me with another thing I want to accomplish. I am new to HA and I am setting this up for a mobile home I have where we are installing two infrared heating panels. I wanted HA so I can remotely control these heaters (and potentially set up a few web cams). What I need to do is set a base temperature during the winter or while we aren’t occupying the mobile home and prior to driving up to the mobile home I would remotely set the temperature to normal temperature to warm up by the time we arrive. I could of course just manually dial in the temperature on both thermostats. But, I would like to have an easy button to set both thermostats to either a winter or living temperature. I tried setting up “Entity Buttons” for this, but first off they only apply to one entity (I can’t set two thermostats at once) and it doesn’t seem to keep the service_command I set. The service_command works initially, but as soon as I want to edit the Entity Button the configuration is gone.
Is there a better way to do this? With both a press and a hold function I could even accomplish this with one button (press = set normal temp, hold = set winter temp) if I could just set temperatures multiple entities at once.
I know this is typically what the occupied and unoccupied temperatures are for, but although my thermostat has the unoppucied_heating_setpoint cluster it doesn’t seem to be used in my thermostat. Or at least I haven’t figured out how to tell it whether it should be in occupied or unoccupied mode. The thermostat card only sets the occupied_heating_setpoint. I can manually set the unoccupied_heating_setpoint via the management console, but without being able to tell the thermostat to use that temperature it seems useless. That would be the easiest solution if I could just switch between “occupied” and “unoccupied” whereas the unoccupied temperature is set once and left alone.
Any suggestions?

The “occupied” setpoint only works if the thermostat itself has an occupancy sensor. This is really for a more advanced thermostat system, I doubt your simple thermostat has this. Does the Thermostat->occupancy attribute show something other than None? In any case my code does not support this.

What you want to do is use automations combined with an input_boolean. You will create a input_boolean called something like “Away mode”. This mode can be changed manually or by some other automation (like your smart phone location). Then you will set up two automations that are triggered, one by the mode changing to on and one for changing to off. And in those automations you will then set the thermostat setpoint using climate.set_temperature as desired.

Thanks. The occupancy cluster always shows 1 (occupied) and is read-only. So, like you say it would need an occupancy sensor (local or remote) to set it and the remote sensor cluster is set to None. So, I suppose it is not possible to make it use an external sensor.
But anyway, I did find a way via scripts. I created two scripts, one for setting the normal temperature and one for setting the unoccupied temperature (using climate.set_temperature) for both thermostats. I could then create one Entity Button with a push and a hold action to trigger the two scripts.
I actually think it would be more sensible to have Away and Present modes to trigger these. The end result would be the same I suppose, just more logical.

I have updated this for 0.96 with “Climate 1.0” and pushed to my repo.

@rpress, thanks for your work on this. It seems to be working perfectly with my Zen thermostats on HA 0.99.3. This gets me one step closer to ditching SmartThings.

Thanks again!

1 Like

@rpress, Thank you so much for this work. I’m at version 0.102.1. Can I try out your code using the same instructions that you gave before? That is,

“You can download that branch from my repo, and then copy the homeassistant/components/zha folder into a folder named custom_components/zha off your config directory. Restart hass and see what’s in your logs.”

Yeah that should work fine. I update my repo 2 weeks ago so it’s pretty recent.

@rpress: Almost perfect. I can see the current temp and set hvac mode and turn it off, but can’t set the target temperature. I’m using the UI -》developer tools -> services and running climate.set-temperature. Also, probably related, my card in ui -> configuration -> devices does not have the widgets for changing the targets like
@Phillip_Sperry 's.

And UI -> dev-> states doesn’t have an entry for target temp.

I’m new to HA and want to learn how to trouble shoot things like this. I’m using the log viewer addon and set log level to debug. Should I try trace level ? Not sure what I’m looking for.

Have you looked at some of the things I mention above? Have you tried restarting Home Assistant?

Success! The order of setup was important. I had to drop-in your custom zha folder AND THEN connect by zigbee hub and then the thermostat. Adding your zha folder after the thermostat is already discovered gave me the half-good results.

Thanks again. I am going to pass this on to some folks on another thread who are not getting this thermostat to connect.

I will give you an upvote if you decide to submit a pull request.

Glad to hear it’s working! Yeah, when it is first joined (with my fork) it caches some configuration parameters. Without those cached values, it won’t know what modes (heating, cooling, etc) are supported.

The maintainers of ZHA had their own thermostat fork going, so I suppose they will be the ones to add official support, so I’m yielding to them. It’s been a while though, so I dunno what their plans are.

Hi, can I help? Have got 3 eCozy smart thermostat valves. Same situation, no thermostat inside HA despite happy pairing.

You have copied over my files into custom_components/zha, restarted, paired the device, and then you do not see any thermostat at all?

If that is the case, then maybe your thermostat does not support ZigBee HA. When pairing the device, can you post up the log that shows up on the pairing web page?

Hello.
Yes, I cloned the repo and moved the zha folder into custom component one.
Restarted (after I deleted the thermostat) and they were discovered as unknown_unknown, even when bringed near the Zigate.
Ecozy were already supported by zigate custom component and by zigbee2mqtt, I think that something is missing.
I will provide logs

@rpress this is stretch of this topic but you’ve been most helpful. I’ve added the google_assistant component, and google Home sees this thermostat. But the google home widget only shows the current temperature and hvac mode. I can change the mode thru google. But if I ask Google to “set thermostat to 68” it says ok, setting thermostat to 68" but there is no change in HA or the real thermostat.

This problem is similar to my earlier one where the HA widget only showed the current temp and let me set the mode.

this may be a clue I found in home_assistant log. when google asks HA to report state, the response is to report only mode and ambient temp:

2019-11-28 12:36:51 DEBUG (MainThread) [homeassistant.components.google_assistant.http] Response on https://homegraph.googleapis.com/v1/devices:reportStateAndNotification with data {'requestId': 'blah', 'agentUserId': 'blah', 'payload': 
 {'devices': 
  {'states': 
   {'climate.centralite_3157100_cd0a4d0b_fan_thermostat': 
    {'online': True, 'thermostatMode': 'heat', 'thermostatTemperatureAmbient': 18.3}}}}} 
was {
  "requestId": "bah"

I made a small change to the supported flags, and I think it may fix your problem. Grab the latest from my fork and give it a shot.

Awesome that fixed the Google displays.

But I still can’t set the target temp via Google. I don’t see any log activity after I issue a change in target temp via Google. So maybe it’s google_assistant problem. Or Google. I’m going to connect Wireshark to if anything is coming in.