HA文档 目录

  1. 主页
  2. HA文档
  3. HA文档
  4. 配置进阶
  5. 目录包含(!include_dir_*)

目录包含(!include_dir_*)

这篇文章是系列文章的第6/7篇:

我们已经在基础配置中介绍了!include的配置方法。但是!include仅能包含一个子配置文件,如果我们需要包含一个目录(包括其子目录)中所有的配置文件,我们就需要用到!include_dir_list!include_dir_named!include_dir_merge_list!include_dir_merge_named
.
└── .homeassistant
├── automation
│ ├── lights
│ │ ├── turn_light_off_bedroom.yaml
│ │ ├── turn_light_off_lounge.yaml
│ │ ├── turn_light_on_bedroom.yaml
│ │ └── turn_light_on_lounge.yaml
│ ├── say_hello.yaml
│ └── sensors
│ └── react.yaml
└── configuration.yaml (not included)

!include_dir_*会遍历指定文件夹下的所有子目录。因此,在以上的文件目录结构中,!include_dir_* automation将会包含在automation目录下的6个yaml文件。
如基础配置中介绍的,yaml格式文件的基础结构有两种,序列块(数组)和映射块(key:value)。对于序列块(数组),我们使用!include_dir_list!include_dir_merge_list;对于映射块(key:value),我们使用!include_dir_named!include_dir_merge_named

【!include_dir_named】
每个文件的文件名为映射块的key,文件内容为映射块的value。
例如,包含目录中有两个文件,LocateIntent.yaml和WhereAreWeIntent.yaml,内容分别如下:

在主配置文件中:

其配置效果等同于:

【!include_dir_merge_named】
每个文件内容为一个或多个映射块(key:value对),!include_dir_merge_named将这些映射块合并(形成一个字典数据结构)。
例如,包含目录中有两个文件interior.yaml和exterior.yaml,内容分别如下:

在主配置文件中:

其效果等同于:

【!include_dir_list】
每一个文件中的内容是序列块(数组)的一个单项(不需要在内容前增加列表标志符“- ”)。
例如,包含目录中有两个文件automation1.yaml和automation2.yaml,内容分别如下:

在主配置文件中:

其效果等同于:

【!include_dir_merge_list】
每一个文件中的内容是序列块(数组)的一个或多个项(需要在内容项前增加列表标志符“-”)。
例如,包含目录中有一个文件presence.yaml,内容如下:

在主配置文件中:

其效果等同于:

遇到问题了?快来学习免费在线课程吧,博学老司机在线答疑,找到更多志同道合的HA玩家一起进步

此文不允许转载,如需转载请与BD@hachina.io联系。

这篇文章对您有用吗? 1 1