I think you need to change your trigger event for you temperature to "changed" then define it in the action like you have. Every time the the temp changes, it will fire that rule to check, so i don't know if it's entirely right or if there's a better way, but that should work.
Can you verify that the rule was actually triggered? Was the temperature previously >= 20.5?
From your logs it looks to me like it's triggering and running the actions of Mode: auto, Heat: 23 and Fan: auto.
Can you verify in your thermostat device that these are being set?
The other thought that comes to mind is the temp setting while in Auto mode. Does it set based on your heating setpoint or cooling setpoint? I ask this because my mini split, that's viewed as a thermostat, has a heating setpoint, cooling setpoint, and a 3rd "temperature setpoint" for use in auto mode. It ignores heating and cooling setpoints while in auto.
EDIT: One other thing, the only way this rule will allow that thermostat to be in any mode but auto will be when that sensor is between 20.5 and 21 degrees. Anytime it changes to heat this rule will force it back to auto. Not sure if that's your goal.