Took about 5 minutes to put together. Appears to work for me.
[{"id":"78b1760177f4cdec","type":"poll-state","z":"776c027950fc8c3f","name":"Poll Monitoring Temperature","server":"","version":3,"exposeAsEntityConfig":"","updateInterval":"10","updateIntervalType":"num","updateIntervalUnits":"minutes","outputInitially":true,"outputOnChanged":false,"entityId":"sensor.study_aircon_room_temperature","stateType":"num","ifState":"","ifStateType":"str","ifStateOperator":"is","outputs":1,"outputProperties":[{"property":"payload","propertyType":"msg","value":"(\t $temp:= payload;\t\t $action:= $temp<15 ? \"full\" : $temp>20 ? \"off\" : \"half\";\t $switch:= $action=\"off\" ? \"OFF\" : \"ON\";\t $fan:= $action=\"full\" ? \"5\" : \"2\";\t \t $call_on:={\t \"domain\": \"climate\",\t \"service\": \"turn_on\",\t \"target\": { \"entity_id\": [\"climate.study_aircon\"] },\t \"data\": {}\t };\t \t $call_off:= $call_on ~> |$|{\"service\": \"turn_off\"}|;\t $call_fan:= $call_on ~> |$|{\"service\": \"set_fan_mode\", \"data\": {\"fan_mode\": $fan}}|;\t $call_heat:=$call_on ~> |$|{\"service\": \"set_hvac_mode\", \"data\": {\"hvac_mode\": \"heat\"}}|;\t \t $action=\"off\" ? [$call_off] : [$call_on, $call_heat, $call_fan]\t)","valueType":"jsonata"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":480,"y":5500,"wires":[["ad41ff614522f5a4"]]},{"id":"ad41ff614522f5a4","type":"split","z":"776c027950fc8c3f","name":"Each","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":690,"y":5500,"wires":[["8aa4507b5fdab447"]]},{"id":"8aa4507b5fdab447","type":"api-call-service","z":"776c027950fc8c3f","name":"Do the stuff (Q)","server":"","version":5,"debugenabled":false,"domain":"","service":"","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"all","x":860,"y":5500,"wires":[[]]}]
You may wish to swap out the Poll node for a Current state node, and of course set your HomeAssistant server, the correct entities, and temperature boundaries.