JohnMo Posted December 9, 2025 Posted December 9, 2025 (edited) Been playing with ChatGTP over the last few days, generally going down a rabbit hole. Was looking for a simple way to model Weather Compensation fine tuning and or boosting during low tariff periods. So generally ChatGTP was no help. Had a search for something unrelated on Google and came across this site https://www.diyenjoying.com/2025/04/11/harnessing-the-power-of-predictive-heating-revolutionizing-home-comfort-with-home-assistant-and-derivative-sensors/ And finally a very simple modelling tool became realistic. So using the data on site above to add a couple of helpers to home assistant (hardware is already there - temp sensor). Then fine tuned for my UFH (thick screed etc). You now have a simple hourly and now 4 hourly look ahead at likely room or house temp if nothing changes. The author of that site used the information to start and stop heating, based on a generic thermostat, but taking account of floor inertia to not get swings in room temperature. So start boiler early and stop early, based on likely house temp - not actual house temp. But for weather compensation you just need a simple notification house temp is increasing or decreasing and you can simply adjust the curve. Add a bit of human looking at the day, it's stunning and room temp is increasing - no shocks don't do anything. But if it's dull outside you can decrease curve. So went back to ChatGTP for assistance. I have actually extended everything out to 4 hours to make it a little more meaningful for my house. There are few things this allows Intelligent fine tuning of WC curve. So you can see the likely house temp in 1 and 4 hrs and rate of change as a positive or negative. Options you could implement - you could run a cooler WC curve and boost during cheap periods. Could use it for batch charging alone, add some simple energy calculations based on you heating system store energy etc. Will add a few screenshots later Edited December 9, 2025 by JohnMo 4 1
JohnMo Posted December 9, 2025 Author Posted December 9, 2025 So this is the small dash board on home assistant. I have a target temp set at 20 degC. The yaml code for the prediction automation, this just sends a notification to me if we are running to cool.in the house to see how it works. If connected to an output devise and house was likely to be too cold, ASHP would be started at a flow temp higher than the normal WC curve. alias: ASHP Batch Charge Based on Prediction and Slab Temp description: Batch-charge UFH during cheap windows using predicted + slab return history triggers: - at: "04:00:00" trigger: time - at: "13:00:00" trigger: time actions: - choose: - conditions: - condition: time after: "04:00:00" before: "07:00:00" - condition: or conditions: - condition: template value_template: | {{ predicted_min_4h < (setpoint - 0.35) }} - condition: template value_template: | {{ (return_now - return_min_4h) < -1.5 }} sequence: - action: notify.mobile_app_cph2449 data: message: "Batch heat started test " - delay: "03:00:00" - action: notify.mobile_app_cph2449 data: message: Batch charge finished test - conditions: - condition: time after: "13:00:00" before: "16:00:00" - condition: or conditions: - condition: template value_template: | {{ predicted_min_4h < (setpoint - 0.30) }} - condition: template value_template: | {{ (return_now - return_min_4h) < -1.5 }} sequence: - action: notify.mobile_app_cph2449 data: message: "Batch test " - delay: "03:00:00" - action: notify.mobile_app_cph2449 data: message: Batch charge finished test mode: single variables: setpoint: 20 predicted: "{{ states('sensor.lounge_predicted_temperature_in_1_hour') | float }}" predicted_min_4h: "{{ states('sensor.4h_min_predicted_lounge_temp') | float }}" return_now: "{{ states('sensor.emoncms_emoncms_org_heatmeter_returnt') | float }}" return_min_ 4h: "{{ states('sensor.4h_min_return_temp') | float }}"
JohnMo Posted December 9, 2025 Author Posted December 9, 2025 Details of some of the template sensors This is the import windows defined - have only use morning and afternoon slots binary_sensor: - name: hp_import_window state: > {{ now().hour in [4,5,6] or now().hour in [13,14,15] }} Predicted trigger state sensor: - name: hp_predicted_trigger state: > {% set p = states('sensor.lounge_predicted_temperature_in_1_hour') | float(99) %} {% set setp = 20 %} {% if (p < setp - 0.3) and (is_state('binary_sensor.hp_import_window', 'on')) %} on {% else %} off {% endif %}
JohnMo Posted 6 hours ago Author Posted 6 hours ago This has been a thing I have worked on and off for a while, but never really got to a model I liked. Had a play with AI and a few iterations later fell on to an energy based system similar to @TerryE but implementing is slightly different. I have an ASHP and heat meter, so came up with a closed loop system. It establishes a rolling energy target for next 24 hours and splits in to 3 chunks, we try to deplete the 8 hours worth of energy in a the Cosy cheap rate window. Down to about 5 degs we should be able to. Below that we allow an over run in to running from battery. We also have a carry over to next cheap slot. If below 2kWh we allow it move to the next slot, if above 2kWh we extend the run time to deplete to 0.1kWh. A flow chart is attached. If this is fails, we loose internet etc or we have issues.in general, a thermostat comes into play and we run on WC. As long as we stay with Octopus the automation stays true, as it's run via the octopus integration in home assistant and we use the cheap rate trigger to define the cheap windows.
jack Posted 3 hours ago Posted 3 hours ago Interesting stuff John, thanks for sharing. I've long had ideas about doing something similar but I doubt it'll get to the top of my to do list until a couple of years into my retirement (the start of which is still way too far off for my liking).
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now