I’m having issues with my Centralite thermostats where after some time I am unable to change the set temperature, even though they are reporting back the current temperature. Does anyone have suggestions on how to troubleshoot this kind of issue? Leaving and rejoining the network fixes it temporarily, but then it continues to happen 2-3 days later. I’ve got Aqara temperature sensors and Aqara door sensors that continue to work just fine with my TubesZB CC2652P2 coordinator, and the thermostats continue to accurately report the current temperature. Today the thermostat closest to the coordinator (~144 LQI, same room) is unable to be set. I’m just struggling trying to figure out what logs or place to look in order to track this issue down- thanks for any help
Logs?
Zha or z2m?
I seem to have the same issue. I have 3 of these thermostats and they report accurately in HA, but are spotty on the ability to control them.
I’ve found with these thermostats unless you have a solid and reliable zigbee mesh, they won’t work right.
I posted this higher in the thread, but I was initially having trouble with these as well. I added 3 ikea Tradfri outlets in my house to act as repeaters, and the issues have pretty much resolved.
With the new outlets they are now about 98% reliable, but I still occasionally have a hiccup, especially when there is a power outage. My automations try to detect when things didn’t set properly, try again, and then notify me when it fails the second time (my node red flow to do this is posted above). The latest issue I had was one thermostat activated the “hold” mode on its own, at a time no one was home to press the hold button. There was no automation that triggered it, so I still have no idea how it happened. These are cheaper devices and reviews online aren’t always great, so if you need a 100% reliable thermostat, I probably would go with something else. The good thing though is that even if it communication fails, if its left on and heating, the thermostat will still turn the heat on and off to whatever it was last set to just like the old dumb thermostat. That being said, I never use automations to turn the heat off or change the mode, only to raise and lower the temperature. If communication fails, the device will heat the house to say 60 degrees - a little chilly and annoying, but at least I won’t have a pipe burst and freeze. I would not rely on this thermostat for remote on/off operations.
The CC2652 coordinator should work fine with these, but the older CC2531 chips would lack the processing power to handle these and are not recommended.
Aqara devices also sometimes don’t play nice with the zigbee network, since they don’t fully conform to the zigbee standard, and can cause issues. This is especially true if you have any mains powered Aqara devices. This link is from the hubitat forum, but explains the problem pretty well with the Aqara/Xiomi devices and really applies to the devices being used on any zigbee controller other than an Aqara one.
If those suggestions don’t help solve the problem, i would try and post logs and additional details of your configuration to try and troubleshoot.
I had the problem that the setpoint was set, but it didn’t report back that it changed. Verify and I can tell you the fix.
I am having similar issues after installing this week.
Using ZHA - they seem to report reliably to HA but sending commands from HA is hit and miss. I have also noticed that sending. Reconfigure command always fails - assume this should complete successfully.
I need to dig into logs tomorrow and maybe try z2m as well
Apologies for the delayed response- I am using zigbee2mqtt. I also thought it was an issue with my network, but I’ve extended it with 3 smart plugs and an additional router and it still seems spotty at best even though all my other devices (mostly zigbee temperature/door sensors) have great connectivity. The thermostat that is a few feet from the coordinator seems to stay reliable the most, but even that one with high LQI drops off occasionally.
Here is my log:
2022-12-09 10:28:58 Received MQTT message on 'zigbee2mqtt/thermostat_downstairs/set' with data '{"occupied_heating_setpoint":21}'
2022-12-09 10:28:58 Publishing 'set' 'occupied_heating_setpoint' to 'thermostat_downstairs'
2022-12-09 10:30:13 Received Zigbee message from 'thermostat_downstairs', type 'attributeReport', cluster 'hvacThermostat', data '{"occupiedCoolingSetpoint":1850}' from endpoint 1 with groupID 0
2022-12-09 10:30:13 MQTT publish: topic 'zigbee2mqtt/thermostat_downstairs', payload '{"battery":93,"last_seen":"2022-12-09T10:30:11-07:00","linkquality":21,"local_temperature":18.77,"local_temperature_calibration":null,"occupied_cooling_setpoint":18.5,"occupied_heating_setpoint":19.44,"running_state":"heat","system_mode":"heat","temperature_setpoint_hold":true,"voltage":2600}'
When it’s working it looks like:
2022-12-09 10:52:40Received MQTT message on 'zigbee2mqtt/thermostat_livingroom/set' with data '{"occupied_heating_setpoint":22}'
2022-12-09 10:52:40Publishing 'set' 'occupied_heating_setpoint' to 'thermostat_livingroom'
2022-12-09 10:52:44MQTT publish: topic 'zigbee2mqtt/thermostat_livingroom', payload '{"battery":100,"fan_mode":"auto","fan_state":"ON","last_seen":"2022-12-09T10:52:42-07:00","linkquality":150,"local_temperature":19.37,"local_temperature_calibration":null,"occupied_cooling_setpoint":20,"occupied_heating_setpoint":22,"running_state":"heat","system_mode":"heat","temperature_setpoint_hold":false,"voltage":2900}'
So is the correct assumption that the device isn’t receiving the set message, but is still able to communicate back?
Whenever my set has failed I have received a corresponding error message in the log. I don’t see that error in yours and unfortunately your logs aren’t really providing much to go on here as to why its not working.
At this point, the only thing I could think of is fresh batteries and a factory reset - the factory reset is a pain on these - Enter Programming Mode, navigate to Menu ID “17”, press HOLD, then navigate to option “11”, then press HOLD again. If it still isn’t working, other possible ideas are wifi interference, conflict with another device on the network (possibly an Aqara like I mentioned abvoe), or defective thermostats, Although since you have multiple ones doing this, multiple defective thermostats at the same time is unlikley unless there was a problem with that production run. Also not sure what level your logs are set to - maybe setting them to debug if not already might give you more information. Also, maybe a setting you have is wrong? These are the settings for mine:
retain: true
thermostat_unit: fahrenheit
legacy: false
optimistic: true
I grabbed some Centralite Pearls and they’ve been working perfectly. One thing I noticed is they increment and decrement by 1.1 degrees through Home Assistant instead of 1.0.
Anyone else notice this and do you know if there’s a way to change it?
This is actually causing issues because my python thermostat script checks the temperature and if it’s different than the schedule, changes it to the correct temperature. However, when it changes the temp, it doesn’t change to a whole number. For example, if the temp is set to 70.2F, when the script runs to change it to 70F, it actually changes to 70.1F.
Because of this, the script tries to change it to 70F every 10 minutes per the schedule.
The thermostats report and set their Temps in celsius, even if they display farenheit temps. Home Assistant handles the celcius conversions but they are not exact and there can de discrepancies with rounding. My thermostat shows 68 degrees on the display, but the raw data from the thermostat coming into mqtt that shows in zigbee2mqtt is 19.84 degrees.
To work around, I’ve published the celsius settings to the thermostat by mqtt directly in my automations, instead of a call service through home assistant. I use node red and the zigbee2mqtt nodes.
If using zigbee2mqtt, you should be able to work with reading and publishing the raw mqtt data in celcius to manage and program the thermostat to the exact temp.
If using zha, not sure what you can do. You probably would need to modify the scripts to account for the. 1 or a range.
I modified my script to round the temperature when it does the comparison which should work well enough.
When I change the temperature from the thermostat itself, however, it uses whole number and reports whole numbers. It isn’t until I change the temperature from home assistant that it uses 1.1 instead of 1.0.
I’ve never had this issue with other thermostats I’ve used with HA but it may be that they only support integer values when setting the temperature.
Does anyone know if it is possible to either disable the internal temp sensor or connect an external temp sensor to override the on board temp sensor? I have temp sensors throughout my house and want to average those and have the thermostat read that average, instead of relying on the on-board temp sensor.
I have been trying to accomplish the same thing. Has anyone found a way to do this?
Unfortunately not. My attempt to get around this is to set up a function node in NR that does some math and basically disregards the on board temp sensor and looks at the house sensor I created. Here is my code, but be warned, its not pretty.
let goalTemp = msg.set_temp;
let outside = msg.outside;
const homeAssistant = global.get('homeassistant').homeAssistant.states;
let avgHouseTemp = Number(homeAssistant['sensor.avg_house_temp'].state);
let thermostatTemp = homeAssistant['climate.house_hvac'].attributes.current_temperature;
//let thermostatSetTemp = Math.round(homeAssistant['climate.house_hvac'].attributes.temperature);
let hvacAction = homeAssistant['climate.house_hvac'].attributes.hvac_action;
let outsideListHot = ['Very Hot', 'Hot'];
// Initialize any constants here
var K = 1.5; // You can adjust this constant as needed
let newSetPoint;
// && outside !== 'Cold'
// && !outsideListHot.includes(outside)
if (avgHouseTemp >= (goalTemp + 1.5)) {
newSetPoint = Math.round((goalTemp - (Math.abs(avgHouseTemp - thermostatTemp)) * K) * 100) / 100;
newSetPoint = Math.min(newSetPoint, goalTemp);
} else if (avgHouseTemp <= (goalTemp - 1.5)) {
newSetPoint = Math.round((goalTemp + (Math.abs(thermostatTemp - avgHouseTemp)) * K) * 100) / 100;
newSetPoint = Math.max(newSetPoint, goalTemp);
} else {
newSetPoint = goalTemp;
}
// Check if goalTemp is not equal to Math.round(thermostatsetTemp)
if (avgHouseTemp <= Math.round(newSetPoint + 1.5) && avgHouseTemp >= Math.round(newSetPoint - 1.5)
|| thermostatTemp <= Math.round(newSetPoint + 1.5) && thermostatTemp >= Math.round(newSetPoint - 1.5)) {
let debugMessage = "The HVAC temperature is already set the correct value.";
msg.payload = debugMessage
msg.newSetPoint = newSetPoint;
msg.goalTemp = goalTemp;
msg.avgHouseTemp = avgHouseTemp;
msg.thermostatTemp = thermostatTemp;
//msg.thermostatSetTemp = thermostatSetTemp;
return [null, msg]; // Return [null] and exit the script
} else {
msg.payload = Math.round(newSetPoint * 10) / 10;
msg.goalTemp = goalTemp;
msg.avgHouseTemp = avgHouseTemp;
msg.thermostatTemp = thermostatTemp;
//msg.thermostatSetTemp = thermostatSetTemp;
}
return [msg, null];
I have two of these thermostats. One in the garage and the other in the house. I have owned them for 16 mos. The one in the garage works perfectly. The one in the house, not so much so. It’s very slow to report back to HA. Additionally, it reports HEAT ON when the furnace is not even running and not even yet to target temperature. If I pull the unit and plug it back into the base, the furnace starts. Still doesn’t reach target temp before shutting down.
My original thought was it was the furnace, and called my HVAC guy to inspect it. No issue with the furnace. After removing the Centralite and putting the old analog one back into place, the furnace works perfectly, keeping a constant 68F. So I contacted the company. They informed me this is an out of production model and no longer supported. With a 12 Mos warranty, it was 4 mos out of warranty. They then told me that they have no stock left and couldn’t replace it even if it WAS still under warranty.
That’s pretty darn crappy! I informed them I would not be purchasing any more Centralite products after this.
So, I have the Centralite on my workbench to troubleshoot it. Any ideas where I should start? It seems to be reporting much more often than it did in the house hallway (right across from a zigbee repeater outlet). But my thought is this thing should work correctly even if not connected to a zigbee network. Also something to note, this unit eats batteries about every 3-4 mos. The unit in the garage is still on the original batteries and after 14 mos reporting 45%. Something is keeping this thermostat very busy to drain as quickly as it does.
Using a lot of battery is sometimes a symptom of not having a very good zigbee connection. (Something like, “I have to keep trying to phone home because they ain’t hearing me!”)
Well I actually have considered that. But zigbee devices further down the chain (farther away from the coordinator) work fine and instantly with no delays, so I disregarded this as the problem, but still certainly could be. However, even if not reporting correctly, it should still operate correctly regardless. Or it’s a design flaw.
Maybe if the signal is bad, it spends all CPU time on connection panic rather than on the hardware controlling the furnace. Bad design flaw if this is the case.
I’ve posted a few times above about zigbee connection issues and adding outlets, but your issue seems with the communication from the thermostat to furnace before even involving the zigbee network.
This thermostat should work fine in a “dumb” mode, where even with no zigbee connection it will still heat to the desired setpoint and turn the furnace on and off. Are you powering the one with the issues through the C wire or through just the batteries? I’ve found that although this thermostat is advertised to work battery only, in reality it uses too much power. It really needs a power source from the 24v C wire.
I have 3 of these thermostats - an issue I had is that since the thermostats are “power stealing”, I had to add a resistor at the furnace. Even though I have 3 wires (and instructions below note this is needed with 2 wire installations), without the resistor, the thermostat was erratically turning on and off the furnace. It would go on for a few seconds with no heat call, and then also shut off early before the heat call was finished. Here are the resistors I had to add:
https://www.supplyhouse.com/Taco-SRTR-001RP-Optional-Power-Stealing-Thermostat-Resistor-Pack-of-6
Here’s a note on them from Taco (a major supplier of heating control components) from their manual at this link -
If you don’t have a C wire, you can get an adapter to run to the thermostat that plugs in a standard wall outlet, supplying constant power. At that point, the batteries only function as a backup if something goes wrong with the transformer. I have this one on the two thermostats I have where I could not feasibly re-run a new C wire all the way back to the furnace
https://www.amazon.com/gp/product/B081LCKRNV/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1
Thank you for this. I am not using the C wire but probably should be. I will get that connected ASAP. I will also add the 1Kohm resistor. I had never heard about “power stealing” thermostats until your post, but the symptoms you describe very closely matching what mine is doing. I will report back once I make those changes. Again, thanks! Great info.