Setting Custom Settings in ZHA Clusters

Hello all,

I am trying to have my Pearl Thermostat read an averaged group of temperatures sensors (which I have found docs saying this is possible) that I have placed around the house.

When I go into the device cluster settings, I have the following two options for local temperature:

I don’t understand what the values mean, and I am not sure what I need to change to get it to read the state of the new group. I assume something like {{ states('sensor.house_temperature') }}, but where do I put that?

The calibration value is a setting to indicate the device how much it should add to the temperature it measures when comparing it to the temperature setpoint.

The local temperature is the temperature the TFV measures (probably with the calibration offset applied).

Niether allow you to actually set the temperature the that the device should use.
You could use the temperature calibration to trick the device. In the example, if your average is 20.50°C and your curent calibration is 0, then you could set the local_temperature_calibration to 9 (which is 0.9°C).

How to set the remote temperature is likely manufacturer specific and managed through manufacturer clusters. They may already be modeled in ZHA for your device.

I know how to set the temperature, what I am trying to do is have the sensor read the local temperature based off of a group of sensors, instead of the on board temperature sensor. Sorry if that was not clear.

I think I understood: you want to send a temperature to the TRV which is the average temperature of a group of sensors in the room.

What I was trying to explain is that these two fields are not used for that.

What is the quirk value?

Correct, I read in the documentation for this thermostat somewhere that the thermostat can be fed an outside temp sensor to use instead of the on board one.

There are no other temperature settings that I can find.

If you share the identification of the device (Model/Manufacturerr according to Zigbee info), and the Quirk (danfoss.Thermostat in my example), this can help find more information about your TRV devices.

Device Signature:

  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=49887, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=0, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0301",
      "in_clusters": [
      "out_clusters": [
  "manufacturer": "Centralite",
  "model": "3157100",
  "class": "zhaquirks.centralite.cl_3157100.CentraLite3157100"

Quirk: zhaquirks.centralite.cl_3157100.CentraLite3157100

Quirk’s code: zha-device-handlers/ at 1274644d9a67a7334fca6fc96f831cfb23390761 · zigpy/zha-device-handlers · GitHub

Other than enforcing the PowerConfigurationCluster which calculates its own percentage from the voltage, I do not see anything that allows you to set the temperature.

I found some technical documentation for your device though: .

EDIT: the documentation does not suggest anything about a remote temperature.

There is a (general) hack around this: change the temperature set point to adjust. E.g., if the device measures 15C and the set temperature is 20C, but you have a measurement of 16C, you can change the set temperature by the difference (15-16=-1, so 20±1=19) to get a similar effect. This assumes the controller is using the difference between the measured temperature and the set point in its control algorithm.