JohnMo Posted 6 hours ago Posted 6 hours ago (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 5 hours ago by JohnMo 4 1
JohnMo Posted 5 hours ago Author Posted 5 hours ago 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 4 hours ago Author Posted 4 hours ago 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 %}
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