Smart Home Heating with HEATHER

Project HEATHER

This project consolidates all the components of my Home Assistant heating control system previously published as separate Github Gists and HA community pages.

The new name HEATHER is coined for the consolidated project and Github repository comprising:

  • Three Home Assistant blueprints
    • Heating X2
    • Calendar Switch Y2
    • Zone Switch Z2
  • The Heating XYZ Code Generator
    • A series of WORD (.docx) mail merge files that are used to create YAML files for Home Assistant configuration
    • An example EXCEL (.xls) mail merge DATA file
  • The packaged script Logfile Entry

The files in this repository supersede all previous versions of the above-named files in other locations.

This reorganisation is made solely for ease of maintenance. The current version (2.4) is compatible with all previous version 2.x installations (not with 1.x, which is deprecated and no longer supported).

To get started

Download and read the Guide PDF.

It contains full instruction on how to install and configure a full home smart heating system using the blueprints, script, and code generator in the HEATHER repository.


If you find the ideas in this project useful, please Buy Me a Coffee

2 Likes

Hi Andy,

Firstly, sorry for not replying to your suggestions on the original topic about how I might be able to achieve different temperature settings depending on house occupancy (Heating X2: Schedule Thermostats with Calendars [CLOSED] - #32 by AndySymons). I’d missed the post in the changeover to this new topic. All good suggestions & I’ll investigate the best way forwards (I like the idea of different automations that can be selected for the same “zone”).

Since my last posts I’ve moved my Home Server across onto a new system & I‘ve been setting Home Assistant up again from scratch as a clean install. I’m not sure if it’s due to newer versions of Home Assistant (I’m currently running 2024.8.3), but I’ve had a few issues getting Heating X2 running.

It seems to be based around logging and errors are produced if I don’t generate the specific logfile & notify service (& specify them in the automation). ie If I decide that I don’t want to use logging, the script.logfile_entry causes an error.

I have logfile_entry.yaml installed as a package and it is recognised by the automations. By way of example, I have two automations both based on the HeatingX2 blueprint. Zone 1 is configured to use a notification service notify.zone1_log (held withing /config/log_files/zone1.log), but for Zone 2 I have not specified logging.

I get the following error in the Main Home Assistant log when changing the temperature setting for Zone 2:

2024-09-01 11:07:22.681 ERROR (MainThread) [homeassistant.components.script.logfile_entry] Log File Entry: If at step 1: Error executing script. Invalid data for call_service at pos 1: not a valid value for dictionary value @ data['entity_id']
2024-09-01 11:07:22.682 ERROR (MainThread) [homeassistant.components.script.logfile_entry] Log File Entry: Error executing script. Invalid data for if at pos 1: not a valid value for dictionary value @ data['entity_id']
2024-09-01 11:07:22.682 ERROR (MainThread) [homeassistant.components.automation.zone_2_heating] Zone 2 heating: Error executing script. Invalid data for call_service at pos 1: not a valid value for dictionary value @ data['entity_id']
2024-09-01 11:07:22.682 ERROR (MainThread) [homeassistant.components.automation.zone_2_heating] Error while executing automation automation.zone_2_heating: not a valid value for dictionary value @ data['entity_id']

If I look at the Automation Trace for Zone 2 I get:

Error: not a valid value for dictionary value @ data['entity_id']
 Result:
 params:
   domain: script
   service: logfile_entry
   service_data:
     notification_service: ''
     logfile_title: Heating X2
     message_preamble: Zone 2 heating
     message_body: '---'
   target: {}
 running_script: true
 child_id:
   domain: script
   item_id: logfile_entry

If I compare this to zone 1, which does have a logfile:

Executed: 1 September 2024 at 11:05:05
Result:
params:
  domain: script
  service: logfile_entry
  service_data:
    notification_service: zone1_log
    logfile_title: Heating X2
    message_preamble: Zone 1 heating
    message_body: '---'
  target: {}
running_script: true
child_id:
  domain: script
  item_id: logfile_entry

Zone 1 seems to be functioning correctly. Of additional note, in order to setup the notify service using the File Integration I had to add the following to my Home Assistant config, else I had permission issues:

homeassistant:
allowlist_external_dirs:
- “/config/log_files/”

The requirement for allowlist_external_dirs is specified at File - Home Assistant

Again, thank you for this great automation. I’m looking forward to getting it fully up-and-running before the winter kicks in!

Hello, i have the same Problems.
I didnt us Zones but the Problem is the same with my thermostat.
I made also an GitHub issue.

1 Like

Why there is no reaction. Neither here nor on Github ?

This looks like a bug that I fixed a couple of days ago in logfile_entry.yaml (someone else raised it on Github)
It occurs when no logfile is specified
Try the new version
Sorry for the inconvenience :pray:

1 Like

Thanks for the reply & the fix Andy. I’ve copied the new logfile across, but in the mean time I’d setup logging on my instances, so when I get the chance I’ll try a new instance without logging.

Hi Andy, what a fantastic (lot) of work you’ve done. I am working through your pdf guide and using your code generator.
One silly question (sorry) you say in page 18 section 7.4 General mail merge procedure at 8. “In Home Assistant, find the file xxxx.yaml”. Which file are you referring too?

Hi Andy,
great work here, at first glance this looks like fantastic blueprint/project, but also quite complicated.
And just to let you know, the links in your PDF dont seem to be working?

I’m affraid im running into problems already with the code generators…
The input-numbers generator generates a whole bunch of duplicate entries.
I have four TRV’s in my living room that i have given different Locations in the xls sheet. i think these locations are supposed to be added to the generated entities in the generator? or do i have to only create one entity for my living room?

Further, what is not yet clear to me: so i have 8 TRV’s throughout my house, but one main thermostat that controls the actual heating that should turn on/off depending on TRV status. should i set this main thermostat as “zone1” or will i select this somewhere down the line in the setup progress? i havent seen any mention of it in the PDF