I noticed the same problem with my heat pump. It was cycling every 5 minutes when we first moved in. I replaced the thermostat with one that supports Zigbee, with plans to drive the setpoint up and down using a second level controller in order to reduce this behavior.
Actually, the new thermostat entirely solved the problem, by allowing a 2°F deadband instead of the 0.5° that the previous thermostat used. Now it will run roughly once an hour instead of ~12 times. This is not as good as your solution, but considerably better than it was.
I still use the Zigbee control to ramp the thermostat up and down at morning and night less aggressively than a native schedule on the thermostat, but it isn't truly necessary.
Yep that is a good solution that is popular as far as I've read. I've tried this as well initially but in my case this didn't work out due to the fact that the heat pump is too powerful for the house (about a factor of 2). And due to how slow the underfloor heating responds, I get huge overshoots when I use a controller like that.
So I had to figure out a way to switch it off earlier than reaching the setpoint, which lead to my poor man's solution of just calculating the house's heat loss.
Actually, the new thermostat entirely solved the problem, by allowing a 2°F deadband instead of the 0.5° that the previous thermostat used. Now it will run roughly once an hour instead of ~12 times. This is not as good as your solution, but considerably better than it was.
I still use the Zigbee control to ramp the thermostat up and down at morning and night less aggressively than a native schedule on the thermostat, but it isn't truly necessary.