Centralite Pearl 3 Thermostat not presenting all HVAC modes in Home Assistant

Hi there,

First time poster but long time Home Assistant and deCONZ user. I have a Conbee II running 26720700 and deCONZ 2.14.01 in Home Assistant 2022.3.8 and I’ve recently tried adding 2 x 3157100 Centralite Thermostats without much success even though reading through Github, most of the issues seemed to be resolved back in 2020 with nothing reported later.

My problem is that with the deCONZ/Conbee II combo in HA, only Off and Heat and reported and these cannot be controlled from HA. Any attempt to call a service or use the GUI to set say Heat mode fails and the setting returns to it’s previous state. I can set the temperature set point no problem though and the battery state is reported too.

I set up a test instance of Home Assistant using ZHA and a CC2531 based Zigbee dongle and oddly, everything works (except the battery level) with that configuration.

Of course, I’d like to stay with deCONZ as I have over 30 devices paired and it works well for me but I haven’t got a clue where to start in regards to resolving this.

If someone can point me in the right direction, I can gather the logs and files required to hopefully sort this out. :yum:

1 Like

Hello, so the original issue is this one Centralite Pearl Support · Issue #3240 · dresden-elektronik/deconz-rest-plugin · GitHub ?

You have just issue with the “mode” setting ?
Have you tried using the API ? (I can give you curl command)
No error message when you tried with the GUI ? just the value “off” is back when you try “heat” ? Have you tried “cool” ?

Thanks for the reply. That Github issue is different in that they’ve got no HVAC modes. I get Off and Heat, just no Cool, Auto or Heat/Cool with the deCONZ/Conbee II combo. The state reports correctly so if I adjust set temp on the thermostat, the GUI will update and it also reports the state as either Off or Heat correctly when these are adjusted on the thermostat.

If however I try to turn the thermostat off with a service call or the GUI, this fails and the GUI just drops back to the last state.

Answers to your questions:
Q: You have just issue with the “mode” setting?
A: Yes, mode cannot be set and cool is not an option at all
Q: Have you tried using the API ? (I can give you curl command)
A: No. I would need some help on how to do that. I’m a novice with Postman & can give an API call a try with a bit of direction.
Q: No error message when you tried with the GUI ? just the value “off” is back when you try “heat” ? Have you tried “cool” ?
A: Correct. Just drops back to previous state without an error message and ‘cool’ is not an option.

Let me know what additional information I can provide.

But I don’t understand why you have ony “off” and “heat” in the GUI, the code always display all values, you are sure you are un deconz GUI and not HA ?

					<attribute id="0x001c" name="System Mode" type="enum8" default="0x01" access="rw" required="m">
						<value name="Off" value="0x00"></value>
						<value name="Auto" value="0x01"></value>
						<value name="Cool" value="0x03"></value>
						<value name="Heat" value="0x04"></value>
						<value name="Emergency heating" value="0x05"></value>
						<value name="Precooling" value="0x06"></value>
						<value name="Fan only" value="0x07"></value>
						<value name="Dry" value="0x08"></value>
						<value name="Sleep" value="0x09"></value>

You are sure looking in the attribute 0x001C ?

Using Postman you have some help here Getting Started - deCONZ REST-API
Else using console (IDK if possible on HA)

curl -H 'Content-Type: application/json' -X PUT -d '{"mode": "heat"}' http://IP:PORT/api/KEY/sensors/ID/config

IP and PORT are the same you are seing on the browser when using phoscon
ID is the device ID in deconz
KEY is an API key.

Hi there,

Thanks again for the feedback. I used the API many many months ago via Postman but I don’t seem to be able to connect now. I keep getting Error: connect ECONNREFUSED (IP of Home Assistant server) even after activating Authenticate app so can’t really move forward until I figure that out. I also tried port 8080 just in case with same error. Sadly there don’t seem to be any YouTube videos on this so guess I’ll have to make one when I work it out.

The port is what is being displayed when I run https://dresden-light.appspot.com/discover but this also shows the IP address as the Docker container IP which of course I can’t access.

[UPDATE] I’ve made a post on the HA forums to see if someone can assist with API access as most of the stuff on there relating to access is over a year old.

I have API access now! This is done via SSH & Web Terminal in HA as were connecting to a Docker container with a 172 IP address.

Where do I get the attributes data you show above? Is that is the deCONZ app somewhere? FYI, here is the result of the api/sensor/96 call.

➜  ~ curl -X GET http://ip.address.of.docker:40850/api/5007FF0C4D/sensors/96
{"config":{"battery":null,"heatsetpoint":null,"offset":0,"on":true,"reachable":true,"schedule":{},"schedule_on":false},"ep":1,"etag":"c3d4d0d0be99900b5749de5a62be0142","lastannounced":"2022-04-01T10:39:22Z","lastseen":"2022-04-01T10:39Z","manufacturername":"CentraLite","modelid":"3157100-E","name":"Thermostat David","state":{"lastupdated":"none","on":false,"temperature":null},"type":"ZHAThermostat","uniqueid":"00:0d:6f:00:05:5b:7e:a2-01-0201"}#  

FYI, when I run your config curl command, I get the following:
[{"error":{"address":"/sensors/96/config/mode","description":"parameter, mode, not available","type":6}}]#

OK, found this. That help?

And this is how it appears in Home Assistant

He yes there is at least one fild missing in your json

  "config": {
    "battery": null,
    "heatsetpoint": null,
    "offset": 0,
    "on": true,
    "reachable": true,
    "schedule": {},
    "schedule_on": false
  "ep": 1,
  "etag": "c3d4d0d0be99900b5749de5a62be0142",
  "lastannounced": "2022-04-01T10:39:22Z",
  "lastseen": "2022-04-01T10:39Z",
  "manufacturername": "CentraLite",
  "modelid": "3157100-E",
  "name": "Thermostat David",
  "state": {
    "lastupdated": "none",
    "on": false,
    "temperature": null
  "type": "ZHAThermostat",
  "uniqueid": "00:0d:6f:00:05:5b:7e:a2-01-0201"

It s for that you have error message when try to change it.
But I think it have worked using the GUI ? (see your capture)

From the code

                else if (sensor.modelId() == QLatin1String("3157100"))
                    sensor.addItem(DataTypeInt16, RConfigCoolSetpoint);
                    sensor.addItem(DataTypeBool, RConfigLocked)->setValue(false);
                    sensor.addItem(DataTypeString, RConfigMode);
                    sensor.addItem(DataTypeString, RConfigFanMode);

and your model is a “3157100-E”, it was partially added because of the code make sometime modelId.startsWith(QLatin1String("3157100"))

And we can’t edit code to add new device.

Can try with DDF as your device is partially included.
You have a video here DDF cheat sheet · dresden-elektronik/deconz-rest-plugin Wiki · GitHub

  • make right clic, edit DDF
  • set the status to gold
  • add the config/mode using drag and drop
  • save the file
  • make hot relaod
  • look again in the API.

I think the DDF will be almost done by defaut, you will probably miss some state report, you will miss binding.
If the “mode” command is now working (but without return) will add the binding for return state.

If you can copy/paste the full DDF I will finish it. But for information there is no working DDF for thermostat yet.

1 Like

Hm, looks like I was a little jumpy while integrating this one. However, amending the C++ code would be fine in this case I guess.

You guys should follow the path with the DDF nevertheless but please be aware that it most likely would require the Danfoss Ally PR to be merged to leverage all features.

Thanks guys but sadly most of that is above my pay grade. I can poke around the DDF but as it’s my production system, I’m certainly not keen to screw anything up and break any of my other pairings.

If you have the GUI there is no danger, take 5mn and don’t need to restart the system.
But not sure it will work.

I will ask if we can update the code, but I don’t think.

PR done Fix : Thermostat variant for Centralite Pearl 3 Thermostat by Smanar · Pull Request #5937 · dresden-elektronik/deconz-rest-plugin · GitHub
Are you able to test it ? You need a full real linux machine to compile it.

Wow, that’s awesome thank you but I think I’ve only ever compiled one thing in my life using PlatformIO so I’m pretty much in the dark here. Wouldn’t know what to do with it once complied anyway. :cry:

On your presensation I m seing “Home Assistant” so I think it will be complicated.
You need a real OS, and I think like most of HA user you are using docker system.
The procedure is here Compiling the REST plugin for device specific testing · dresden-elektronik/deconz-rest-plugin Wiki · GitHub

I can help you on real OS, but I CAN’T on docker OS, so you will be alone.

Can wait to see if the PR is valided.

Thanks for the Wiki link. I could build a quick Linux machine and probably compile a file based on that but as you guessed, not much use to me as I’m running deCONZ in Docker inside Home Assistant. I’d have to take down my production Zigbee system to leverage the Conbee II for a test rig so I think I’ll just have to be patient and hope the PR gets approved and merged.

Yep, better to see the manup decision, because the compilation is OS specific, so compiling the lib on an OS to use on an other can not work.

Thanks. Really appreciate all your feedback, help and advice.

Hey, I had the exact same issue, and followed these directions to change the DDF, and am able to see and manipulate the heating and cooling now via HA. My final issue is with getting the current running state back to HA. What binding needs to be made, or is it ok for me to paste my DDF for this device?

Thank you for fixing this!

You have the “3157100-E” ?
If yes It can’t work as it, the PR was not merged, you have done a new DDF that solve the missing part ?

So the “mode” is working for you ?

My final issue is with getting the current running state back to HA

Yu mean the mode or the valve state ?

For the mode, it s attribute 0x001C on Cluster 0x0201 (min 1 max 600 by defaut for reporting on code)

I have the 3157100, and not the 3157100-E.

Sorry, I may have gotten overly excited over the fact that xbmcnut’s issue at first seemed to mirror my issues with the Centralite Pearl. In reality, it appears that my issue was different and i let my excitement get in the way of understanding the problem.

Either way, the editing of the DDF seemed to help a lot, save having Home Assistant understand what running state the thermostat is in.

Again, I am sorry i jumped on and hijacked this thread. I’d like to continue, but should i start another thread, or continue on this thread?