I’m currently looking for a way to prevent an invalid configuration as I just experienced an unfortunate problem that prevented my HA from starting up.
It started with me doing a change to my config and pushing it (I’ve set it up as a Git repository) but not checking anything as I thought it was fine (spoiler: it was not). A rather new automation of mine shuts down my server and also the power strip for my PC during the night for electricity saving purposes. As you can imagine, the next morning I couldn’t start my PC because my HA was not starting.
So I’m looking for a way to either include a configuration check as a pre-commit hook for the repository or to notify me when the check detects an invalid configuration. Is there any way I can do that?
I guess triggering the check via automation would be possible and I could write the result in some file but I’d have to know in the automation whether it succeeded or not. Not sure how I’d find that out
I’m using the “git-pull” addon. It has a restart feature and also checks the config before restarting. The restart that got me was my own from my electricity saving automation because I don’t have a way to check the config yet. That’s why I made this post
So you restarted manually using the built-in restart service from the dev tools->yaml page and didn’t use the git-pull add-on that time?
If that’s the case then the system should do an automatic config check before it restarts and won’t let you restart if it finds an error.
The reason I’m trying to find out exactly what happened is because your issue may be related to what I and other users have seen recently that the config checker isn’t finding errors before restarting/reloading automations.
Ah sorry I should’ve been more precise. What my automation does is triggering my server to shutdown to save electricity. I don’t really have anything preventing me from doing that. The addon didn’t restart due to the invalid config but my server basically forced it to shutdown
the config check found an issue and prevented the restart but later the automation killed the power to the server and because of the aforementioned unfixed error after the power was restored HA didn’t restart.
Okay I think I found a solution (haven’t tested it in my automation though). So I haven’t found an easy way to check the config and use the result of that check in an automation. My idea was to use the shell_command feature because the HA CLI can be used for the config check. The command looks like this
The reason I didn’t use the command ha core check directly is that apparently it doesn’t work, at least not with HA OS. Luckily the supervisor has an API we can use. The result will be a JSON that I write to a file.
The next step was to parse the file and create a sensor I can check in my automation:
sensor:
- platform: file
name: Core Config Validity
file_path: "/config/logs/core-config-check.json"
value_template: >-
{% if "\"ok\"" in value %}
on
{% elif "\"error\"" in value %}
off
{% else %}
unavailable
{% endif %}
With this setup I can trigger the check with my shell_command in the automation and wait a bit before I check on the sensor that will get updated after the check is done.
Maybe I’ll find a way to run the check after the git pull (or alternatively every x minutes with an automation) just to keep the sensor up2date
Maybe a bit over the top but if this allows me to always safely start my HA it’s fine