From 220f2cce18e05a836b3437f4e1f0a59654917ecd Mon Sep 17 00:00:00 2001 From: Stefan Allius Date: Mon, 22 Apr 2024 23:07:13 +0200 Subject: [PATCH] improve config handling - fetch validating exceptions - don't crash on missing config params --- app/src/config.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/src/config.py b/app/src/config.py index 6218e65..c6e4576 100644 --- a/app/src/config.py +++ b/app/src/config.py @@ -105,15 +105,24 @@ class Config(): ' and customize it for your scenario.\n') usr_config = def_config - config['tsun'] = def_config['tsun'] | usr_config['tsun'] - config['solarman'] = def_config['solarman'] | \ - usr_config['solarman'] - config['mqtt'] = def_config['mqtt'] | usr_config['mqtt'] - config['ha'] = def_config['ha'] | usr_config['ha'] - config['inverters'] = def_config['inverters'] | \ - usr_config['inverters'] + # merge the default and the user config + config = def_config + if 'tsun' in usr_config: + config['tsun'] |= usr_config['tsun'] + if 'solarman' in usr_config: + config['solarman'] |= usr_config['solarman'] + if 'mqtt' in usr_config: + config['mqtt'] |= usr_config['mqtt'] + if 'ha' in usr_config: + config['ha'] |= usr_config['ha'] + if 'inverters' in usr_config: + config['inverters'] |= usr_config['inverters'] + + try: + cls.config = cls.conf_schema.validate(config) + except Exception as error: + logging.error(f'config/config.toml: {error}') - cls.config = cls.conf_schema.validate(config) cls.def_config = cls.conf_schema.validate(def_config) # logging.debug(f'Readed config: "{cls.config}" ')