Danfoss Ally TRV working with remote temp sensor

I’m not aware of any new settings per se, but the radiator_covered setting was previously not connected to any actual functionality, and now should give better results when supplying an external temperature measurement.

i have updated my thermostat via ssh - and all went fine, but HA still show old firmware version 1.08
how do I change it ?
image

i use deconz

Go to Configuration → Integrations and in the context menu (3 dots) on the deCONZ tile select Reload.

thanks, but it dont work - I think I have to do it in ex. vnc viewer, but dont know where.

Danfoss updated their cluster specification, which provided an important new clue as to how to handle the external temperature data when the new radiator covered feature is enabled:

0x4016 [radiator covered] TRUE: At least every 30 minutes but not more often than every 5minutes @ every 0,1K change for covered radiators (after 35 minutes the function is disabled and goes back to standard mode) The value -8000 disables the function

In my case, when the room’s temperature stabilizes, the external temperature sensors may not push an update for >35 minutes since there’s no temperature change to report. This apparently ends up disabling the use of the external sensor! Then the internal sensor (likely rather warm) prevents the valve from opening until the temperature in the room drops substantially.

I instead now simply push the external temperature reading every 5 minutes with the following script automation. While this may impact battery life slightly, I figure it can’t be so terrible given that the TRVs are reporting their data quite frequently anyway, so what’s another few bits of data transmission?

alias: External Temperature Bedroom
description: ''
trigger:
  - platform: time_pattern
    minutes: /5
condition: []
action:
  - service: zha.set_zigbee_cluster_attribute
    data:
      ieee: [redacted]
      endpoint_id: 1
      cluster_id: 513
      attribute: 16405
      cluster_type: in
      value: '{{ (states("sensor.bedroom_temperature") | float * 100) | round(0)}}'
mode: single

I’m pretty happy with the performance in all of my rooms now! They now heat up to the desired setpoint within a reasonable time and maintain it well.

1 Like

As far as load balancing when there’s 2+ radiators in the same room, it seems that the way to do it would be to read the “load_estimate_radiator” cluster attribute from each of the TRVs in a particular room, compute the mean, and then push it back to each TRVs’ “Load Radiator Room Mean” cluster attribute. I don’t have enough experience to script up that sequence without doing a lot of research, but seems that it would make sense to push the load mean along with the temperature updates. (I get the impression that the load estimate changes about as quickly as the room temperature, but ZHA doesn’t preserve the attribute history out of the box, so I can’t fully confirm that.)

Interesting progress! So no automation anymore, simply that script for each TRV?

Technically, that script is a standalone automation simply triggered every 5 minutes by a clock function, but right, I’m no longer triggering when the temperature changes. Probably a combination of both strategies would be a tiny bit more optimal – i.e., send data when the temperature changes or otherwise at least every 30 minutes to prevent relapsing to use of the TRV’s onboard sensor.

1 Like

Gotcha, I will test it out and report my findings.

Hah, I was too tired to see it was an automation and not a script.

So I have added the automations, and paused the old ones, and their associated scripts. Let’s see how it goes. :slight_smile:

Same. Only one my thermostat works like that. It occurs every 2 days I suppose.
Debugged a bit in z2m and it really don’t answer on z2m commands but sends messages that it’s alive. Also have no clue what to do. Maybe it’s buggy TRVs and better to replace it by the warranty. Not decided yet.

Have you tried to fully reset it and add in z2m again?

@Ramblurr thank you for sharing.

 {{ (states("sensor.dining_motion_sensor_temperature") | float * 100) | round(0)}}

This instruction provides me next output:

Failed to call service script/1639522561818. Value 2182.0 for Office Thermostat external measured room sensor is outside valid range 0.0 - 100.0

From my point of view seems Ally converter was changed and now asks for usual temp like 21, 22 and so on.

I’d recommend you to use the method described in post 98. It is confirmed to work by @BikeViking and me.

1 Like

there was a change in Z2M that makes the -8000 value no longer work, there was a change within Herdsman but you won’t see it until the next update.

1 Like

@hello-world are you using zha or zigbee 2 Mqtt? Maybe zigbee2mqtt translates the values internally?

Thank you. Of course I can wait.

I am using zigbee2mqtt. From my point of view zigbee2mqtt supports that value but HA wishes only two-digits temp value.

I have quite strange thing with ota on one Danfoss Ally TRV. Only it says that no updates. How to force this process?
image

Same question here.

I am starting to get some weird behaviour:

I got 2 radiators in the same room, both following an external sensor, with your suggested automation.
Radiator Covered is set to 1, Load Balancing enabled and adaption_run_control.

Sometimes, I got only 1 of the radiators actually heating, while the other having the valve off. If I bump up the set temperature with a couple of degrees, both of the radiators help.