diff --git a/esphome/yaml_util.py b/esphome/yaml_util.py index 8a03c431a7..3d3fa8c5b4 100644 --- a/esphome/yaml_util.py +++ b/esphome/yaml_util.py @@ -18,6 +18,7 @@ from esphome.core import ( MACAddress, TimePeriod, DocumentRange, + CORE, ) from esphome.helpers import add_class_to_obj from esphome.util import OrderedDict, filter_yaml_files @@ -240,7 +241,18 @@ class ESPHomeLoader(yaml.SafeLoader): @_add_data_ref def construct_secret(self, node): - secrets = _load_yaml_internal(self._rel_path(SECRET_YAML)) + try: + secrets = _load_yaml_internal(self._rel_path(SECRET_YAML)) + except EsphomeError as e: + if self.name == CORE.config_path: + raise e + try: + main_config_dir = os.path.dirname(CORE.config_path) + main_secret_yml = os.path.join(main_config_dir, SECRET_YAML) + secrets = _load_yaml_internal(main_secret_yml) + except EsphomeError as er: + raise EsphomeError(f"{e}\n{er}") from er + if node.value not in secrets: raise yaml.MarkedYAMLError( f"Secret '{node.value}' not defined", node.start_mark