ZHA heating TRV Danfoss TRV001

I’m having a terrible time trying to get my TRV’s working right, it seems none of them want to play right and getting a lot of headaches after moving everything over to HA via ZHA unfortunately.
The issue I’ve got is I’m setting the temperature via HA, the TRV accepts it and shows that as it’s set value, however it seems to ignore it and shoot past that temperature.
Take a look at this example:

You can see the set temperature is at 20oC at approx 14:15 and not long after the main boiler fires up and temperature starts to climb, actual temperature shoots past that and the peak of that graph is 21.5oC and the radiator remains hot (accounting for overshoot still seems too far) and the main reason the temperature drops is because the boiler has cut out as the rest of the house is up to temperature.

As I’m reviewing this, am I being unreasonable to the TRV, should I be setting the set temperature to say 19.5oC or 19oC and see if the overshoot is more manageable as obviously the TRV cannot immediately stop the latent heat, etc, so perhaps I’m thinking too binary about the TRV (since I’m controlling it direct and so no logic in the TRV scheduler, etc)
Thoughts?

Device:

{
  "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=4678, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, 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": "0x0104",
      "device_type": "0x0301",
      "input_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x000a",
        "0x0020",
        "0x0201",
        "0x0204",
        "0x0b05"
      ],
      "output_clusters": [
        "0x0000",
        "0x0019"
      ]
    }
  },
  "manufacturer": "Danfoss",
  "model": "TRV001",
  "class": "thermostat.DanfossThermostat"
}

Actually, checking another radiator TRV (same model/type it’s a hive but joined to my ZHA direct so no hive interaction) and I do see a problem here:

The TRV temperature set is on 19oC then down to 18.5oC then down to 18oC which it’s been at since early hours 5th December, however look at the temperature, those spikes you see are when the boiler is on (to provide heat to other parts of the house) which suggests the radiator valve is not closed, it’s still heating the room. This room has doors closed and doesn’t get influenced by other rooms to much of a degree so it’s not just ambient heat, the radiator is getting hot.