分开配置


因此,您已经使用了家庭助理一段时间了必威是什么configuration.yaml文件使人们流泪,或者您只想从分布式方法开始,这是如何拆分configuration.yaml变成更易于管理的(阅读:可读性的)作品。

首先,几个社区成员对其配置的版本进行了消毒(阅读:没有API密钥/密码等),您可以查看它们的列表这里

由于注释代码并非总是发生,因此请继续阅读以获取详细信息。

尽管有逻辑上的假设,configuration.yaml将被这个过程所取代,实际上它将保留,尽管以杂乱无章的形式差得多。

在这个较轻的版本中,我们仍然需要所谓的核心摘要:

乡亲#家庭助手正在运行的位置的名称必威是什么姓名我的助手实例”#要计算太阳升高和凝固所需的位置纬度37经度-121#“公制”用于公制,'帝国'unit_system帝国#从这里选择您的:https://en.wikipedia.org/wiki/list_of_tz_database_time_time_zones_zones时区美国/los_angeles”定制!包括customize.yaml

请注意,每行之后乡亲:缩进了两个(2)个空间。由于家庭助理中的配置文件基于YAML语言,因此凹痕和间距很重要。必威是什么另请注意,在下面看似奇怪的条目定制:

!包括filename.yaml是告诉家庭助理插入内容的声明必威是什么filename.yaml在那时候。这就是我们将如何将单片且难以读取的文件(当它变大时)变成更易于管理的块。

现在,在我们开始分类不同的组件之前,让我们看一下将保留在基本文件中的其他集成(在我们的示例中):

历史前端日志httpAPI_Password注释!”ifttt钥匙[[不”这是给予的mqtt经纪人127.0.0.1

与核心摘要一样,凹痕有所不同。集成标头(mqtt:)应完全对齐(又称缩进),然后参数(经纪人:)应缩进两个(2)个空间。

尽管这些集成在技术上可以移至一个单独的文件,但它们是如此小或“一个off”,而将它们分开是多余的。另外,您会注意到#符号(哈希/磅)。就命令的解释而言,这代表了“评论”。换句话说,任何以A的线将被忽略。这使得针对人类可读性的文件分解确实很方便,更不用说在离开条目完整时关闭功能。

现在,让我们假设为以下每个过程中的Home Assistant配置目录中创建了一个空白文件:必威是什么

automation.yaml Zone.YAML Sensor.yaml Switch.yaml Device_tracker.yaml customize.yaml

自动化将保留所有自动化集成详细信息。区域将保留区域集成细节等。这些文件可以称为任何东西,但给他们匹配其功能的名称将使事情更容易跟踪。

在基本配置文件中添加以下条目:

自动化!包括自动化!包括区域传感器!包括传感器转变!包括switch.yamldevice_tracker!包括device_tracker.yaml

筑巢!包括S(有一个!包括在文件本身中!包括d)也将起作用。

您也可以拥有多个顶级!包括s对于给定的集成,如果您给每个标签都有不同的标签:

-平台团体姓名床头灯”实体-light.left_bedside_light-light.right_bedside_light#在单独的文件中定义更多光组光群!包括Light Groups.yaml#在另一个文件中定义一些灯开关映射照明开关!包括轻开关

在哪里Light Groups.yaml可能看起来像:

-平台团体姓名外部灯”实体-light.porch_lights-light.patio_lights

轻开关包含:

-平台转变姓名露台灯”ENTITY_IDswitch.patio_lights-平台转变姓名地面灯”ENTITY_IDswitch.floor_lamp_plug

好吧,所以我们有单个集成,基本文件中的包含语句,这些额外文件中有什么?

让我们看一下device_tracker.yaml从我们的示例中文件:

-平台owntracks-平台NMAP_TRACKERhome_interval3主持人192.168.2.0/24track_new_devices真的Interval_seconds40acvice_home120

这个小示例说明了“拆分”文件的工作方式。在这种情况下,我们从两个(2)个设备跟踪器条目开始(owntracksnmap)。这些文件如下“样式1”也就是说,一个完全对齐的领先条目(- 平台:OwnerTracks)随后是两个(2)个空间的参数条目。

此(大)传感器配置为我们提供了另一个示例:

### Sensor.yaml### Meteobridge ####################################################-平台TCP姓名户外温度(Meteobridge)””主持人192.168.2.82超时6有效载荷内容类型:text/xml;charset = UTF-8\ n \ nvalue_template{{value.split('')[2]}}””单元C-平台TCP姓名户外湿度(Meteobridge)””主持人192.168.2.82港口5556超时6有效载荷内容类型:text/xml;charset = UTF-8\ n \ nvalue_template{{value.split('')[3]}}””单元百分####蒸汽朋友#########################################-平台Steam_onlineapi_key[[不是告诉”这是给予的帐户-76561198012067051####时间/日期#########################################-平台time_date显示选项-时间”-日期”-平台世界时钟时区etc/utc姓名世界标准时间”-平台世界时钟时区美国/new_york姓名乔木”

您会注意到,此示例包括一个辅助参数部分(在蒸汽部分下),以及可以使用评论将文件分解为部分的更好示例。

使用软件包分类文件时,可以应用所有上述所有内容。要了解有关包装的更多信息,请参阅软件包页。

关于它将其结束。

如果您有问题结帐home-assistant.log在配置目录以及缩进中。如果其他所有事情都失败了,请前往我们Discord聊天服务器并问。

调试配置文件

如果您有许多配置文件,则Home Assistant提供了一个CLI,使您可必威是什么以查看其如何解释它们,每个安装类型都有自己的共同任务中的部分:

高级用法

我们提供四个高级选项,一次包括整个目录。请注意,您的文件必须具有.yaml文件扩展名;.yml不支持。

这将使您能够!包括文件.yml从内部的扩展.yaml文件;没有那些.yml文件本身会导入以下命令。

  • !包括_dir_list将返回目录的内容作为列表,每个文件内容是列表中的条目。列表条目是根据文件名称的字母数字排序排序的。
  • !包括_dir_named将返回目录的内容作为映射文件名=>文件内容的字典。
  • !包括_dir_merge_list通过将所有文件(应包含列表)合并到1个大列表中,将返回目录的内容作为列表。
  • !包括_dir_merge_named将通过加载每个文件并将其合并到1个大词典中来返回目录的内容作为字典。

这些工作递归。例如使用!包括_dir_list自动化,将包括下面显示的所有6个文件:

└-─└└├前├-├ - 自动化│ - 灯│├├├├├├├├├├├├-say_hello.yaml│└└─-传感器│└└─react.yaml└─-configuration.yaml((不包含

示例:!include_dir_list

configuration.yaml

自动化-别名自动化1“扳机平台状态ENTITY_IDdevice_tracker.iphone家”行动服务light.turn_on目标ENTITY_IDLight.Entryway-别名自动化2“扳机平台状态ENTITY_IDdevice_tracker.iphone家”行动服务light.turn_off目标ENTITY_IDLight.Entryway

可以变成:

configuration.yaml

自动化!包括_dir_list自动化/存在/

自动化/存在/自动化1.yaml

别名自动化1“扳机平台状态ENTITY_IDdevice_tracker.iphone家”行动服务light.turn_on目标ENTITY_IDLight.Entryway

自动化/存在/自动化2.yaml

别名自动化2“扳机平台状态ENTITY_IDdevice_tracker.iphone家”行动服务light.turn_off目标ENTITY_IDLight.Entryway

重要的是要注意,每个文件必须仅包含使用时输入!包括_dir_list

示例:!include_dir_named

configuration.yaml

Alexa意图位置智能行动服务notify.pushover数据信息您的地点拥有到过查询通过Alexa。”演讲类型纯文本文本>{% - 在状态中的状态.device_tracker-%}{% - 如果state.name.lower()== user.lower() - %}{{state.name}}在{{state.state}}{%- 万一 -%}{%- 别的 -%}对不起。pootie!我不知道{{user}}在哪里。{% -  endfor-%}Whereareweintent演讲类型纯文本文本>{% - 如果IS_STATE('device_tracker.iphone','home') - %}iPhone在家。{%- 别的 -%}iPhone不在家里。{% 万一 %}

可以变成:

configuration.yaml

Alexa意图!包括_dir_namedAlexa/

Alexa/locateintent.yaml

行动服务notify.pushover数据信息您的地点拥有到过查询通过Alexa。”演讲类型纯文本文本>{% - 在状态中的状态.device_tracker-%}{% - 如果state.name.lower()== user.lower() - %}{{state.name}}在{{state.state}}{%- 万一 -%}{%- 别的 -%}对不起。pootie!我不知道{{user}}在哪里。{% -  endfor-%}

Alexa/whereareweintent.yaml

演讲类型纯文本文本>{% - 如果IS_STATE('device_tracker.iphone','home') - %}iPhone在家。{%- 别的 -%}iPhone不在家里。{% 万一 %}

示例:!include_dir_merge_list

configuration.yaml

自动化-别名自动化1“扳机-平台状态ENTITY_IDdevice_tracker.iphone家”行动-服务light.turn_on目标ENTITY_IDLight.Entryway-别名自动化2“扳机-平台状态ENTITY_IDdevice_tracker.iphone家”行动-服务light.turn_off目标ENTITY_IDLight.Entryway

可以变成:

configuration.yaml

自动化!包括_dir_merge_list自动化/

自动化/存在

-别名自动化1“扳机-平台状态ENTITY_IDdevice_tracker.iphone家”行动-服务light.turn_on目标ENTITY_IDLight.Entryway-别名自动化2“扳机-平台状态ENTITY_IDdevice_tracker.iphone家”行动-服务light.turn_off目标ENTITY_IDLight.Entryway

重要的是要注意,使用!包括_dir_merge_list,您必须在每个文件中包含一个列表(每个列表项目都用连字符表示[ - ])。每个文件可能包含一个或多个条目。

示例:!include_dir_merge_named

configuration.yaml

团体卧室姓名卧室”实体-Light.bedroom_lamp-Light.bedroom_overhead门厅姓名门厅”实体-Light. -Hallway-恒温器前院姓名正面院子”实体-light.front_porch--路径-Sensor.Mailbox-camera.front_porch

可以变成:

configuration.yaml

团体!包括_dir_merge_named团体/

group/interior.yaml

卧室姓名卧室”实体-Light.bedroom_lamp-Light.bedroom_overhead门厅姓名门厅实体-Light. -Hallway-恒温器

组/外部

前院姓名正面院子”实体-light.front_porch--路径-Sensor.Mailbox-camera.front_porch

示例:组合!include_dir_merge_list with automations.yaml

您想走高级路线并拆分自动化,但仍然希望能够创建UI中的自动化?在上面的一章中,我们写了有关筑巢的文章!包括。这是我们可以为自动化做到这一点的方法。

使用类似的标签手动的或者UI允许在配置中使用多个键:

configuration.yaml

#我自己的手工自动化自动化手册!包括_dir_merge_list自动化/#我在UI中创建的自动化自动化UI!包括自动化