分开配置
因此,您已经使用了家庭助理一段时间了必威是什么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
在那时候。这就是我们将如何将单片且难以读取的文件(当它变大时)变成更易于管理的块。
现在,在我们开始分类不同的组件之前,让我们看一下将保留在基本文件中的其他集成(在我们的示例中):
历史:前端:日志:http:API_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_ID:switch.patio_lights-平台:转变姓名:“地面灯”ENTITY_ID:switch.floor_lamp_plug
好吧,所以我们有单个集成,基本文件中的包含语句,这些额外文件中有什么?
让我们看一下device_tracker.yaml
从我们的示例中文件:
-平台:owntracks-平台:NMAP_TRACKERhome_interval:3主持人:192.168.2.0/24track_new_devices:真的Interval_seconds:40acvice_home:120
这个小示例说明了“拆分”文件的工作方式。在这种情况下,我们从两个(2)个设备跟踪器条目开始(owntracks
和nmap
)。这些文件如下“样式1”也就是说,一个完全对齐的领先条目(- 平台:OwnerTracks
)随后是两个(2)个空间的参数条目。
此(大)传感器配置为我们提供了另一个示例:
### Sensor.yaml### Meteobridge ####################################################-平台:TCP姓名:“户外温度(Meteobridge)””主持人:192.168.2.82超时:6有效载荷:“内容类型:text/xml;charset = UTF-8\ n \ n“value_template:“{{value.split('')[2]}}””单元:C-平台:TCP姓名:“户外湿度(Meteobridge)””主持人:192.168.2.82港口:5556超时:6有效载荷:“内容类型:text/xml;charset = UTF-8\ n \ n“value_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_ID:device_tracker.iphone到:“家”行动:服务:light.turn_on目标:ENTITY_ID:Light.Entryway-别名:“自动化2“扳机:平台:状态ENTITY_ID:device_tracker.iphone从:“家”行动:服务:light.turn_off目标:ENTITY_ID:Light.Entryway
可以变成:
configuration.yaml
自动化:!包括_dir_list自动化/存在/
自动化/存在/自动化1.yaml
别名:“自动化1“扳机:平台:状态ENTITY_ID:device_tracker.iphone到:“家”行动:服务:light.turn_on目标:ENTITY_ID:Light.Entryway
自动化/存在/自动化2.yaml
别名:“自动化2“扳机:平台:状态ENTITY_ID:device_tracker.iphone从:“家”行动:服务:light.turn_off目标:ENTITY_ID:Light.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_ID:device_tracker.iphone到:“家”行动:-服务:light.turn_on目标:ENTITY_ID:Light.Entryway-别名:“自动化2“扳机:-平台:状态ENTITY_ID:device_tracker.iphone从:“家”行动:-服务:light.turn_off目标:ENTITY_ID:Light.Entryway
可以变成:
configuration.yaml
自动化:!包括_dir_merge_list自动化/
自动化/存在
-别名:“自动化1“扳机:-平台:状态ENTITY_ID:device_tracker.iphone到:“家”行动:-服务:light.turn_on目标:ENTITY_ID:Light.Entryway-别名:“自动化2“扳机:-平台:状态ENTITY_ID:device_tracker.iphone从:“家”行动:-服务:light.turn_off目标:ENTITY_ID:Light.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:!包括自动化