YAML 语法
Home Assistant 使用 YAMLconfiguration.yaml
文件以指定其设置。
YAML 风格指南
此页面对 Home Assistant 中使用的 YAML 语法进行了高层次介绍。有关更详细的描述和更多示例,请参考 Home Assistant 开发者的 YAML 风格指南。
第一个示例
以下 YAML 示例条目假定您想要设置 notify 集成 ,使用 pushbullet 平台。
notify:
platform: pushbullet
api_key: "o.1234abcd"
name: pushbullet
- 一个 集成 提供某些功能的核心逻辑(例如
notify
提供发送通知)。 - 一个 平台 连接到特定的软件或硬件平台(例如
pushbullet
与来自 pushbullet.com 的服务配合使用)。
YAML 语法的基本内容是块集合和包含键值对的映射。集合中的每一项以 -
开头,而映射的格式为 key: value
。这与 Hash 表有些相似,或更具体地说是 Python 中的字典。这些也可以嵌套。请注意,如果您指定了重复的键,将使用某个键的最后一个值。
YAML 中的缩进
在 YAML 中,缩进对于指定关系非常重要。缩进的行嵌套在比它高一等级的行内。在上面的示例中,platform: pushbullet
是(嵌套在)notify
集成下的一个属性。
如果您没有使用固定宽度字体的编辑器,获得正确的缩进可能会很棘手。不允许使用制表符进行缩进。约定是在每个缩进等级使用 2 个空格。
注释
在 #
后的文本字符串是注释。系统会忽略它们。注释用平易近人的语言解释特定代码块的意图,以便将来您或其他人查看该文件时理解。
带有注释和嵌套的示例
下一个示例展示了一个 input_select 集成,它为选项的值使用了块集合。
其他属性(如 name:
)则使用映射来指定。请注意,第二行仅有 threat:
,同一行没有值。在这里,threat
是 input_select 的名称。它的值是所有嵌套在其下的内容。
input_select:
threat:
name: "威胁等级"
# 使用集合来提供选项
options:
- 0
- 1
- 2
- 3
initial: 0
嵌套映射的示例
以下示例展示了在映射中嵌套映射集合。在 Home Assistant 中,这将创建两个传感器,每个都使用 MQTT 平台,但对于它们的 state_topic
有不同的值(这是用于 MQTT 传感器的属性之一)。
sensor:
- platform: mqtt
state_topic: "sensor/topic"
- platform: mqtt
state_topic: "sensor2/topic"
包含值
环境变量
在 Home Assistant CoreHome Assistant Core 是 Home Assistant 本身的核心。它是一个 Python 程序,支持每种安装类型,但可以独立安装。 [Learn more] 安装中,您可以通过 !env_var
包含来自系统环境变量的值。
请注意,这仅适用于 Home Assistant CoreHome Assistant Core 是 Home Assistant 本身的核心。它是一个 Python 程序,支持每种安装类型,但可以独立安装。 [Learn more] 安装,需在可以指定这些变量的情况下使用。
常规 Home Assistant 用户建议使用 !include
声明。
example:
password: !env_var PASSWORD
默认值
如果未设置环境变量,您可以回退到默认值。
example:
password: !env_var PASSWORD default_password
包含整个文件
为了提高可读性,您可以通过 !include
语法从主配置文件中分离出某些域。
light: !include lights.yaml
有关此功能的更多信息,请参见 分割配置。
常见问题
找到字符 ‘\t’
如果您看到以下消息:
found character '\t' that cannot start any token
这意味着您错误地输入了一个制表符,而不是空格。
大写和小写
Home Assistant 是区分大小写的,状态 'on'
与 'On'
或 'ON'
不同。同样,实体 group.Doors
与 group.doors
也不同。
如果您遇到问题,请检查 Home Assistant 在开发状态菜单中报告的大小写,位置在 开发者工具 下。
布尔值
YAML 将 Y
、true
、Yes
、ON
都视为 true
,而 n
、FALSE
、No
、off
则视为 false
。这意味着如果您想将实体的状态设置为 on
,您 必须 将其引用为 'on'
,否则它将被转换为设置状态为 true。同样适用于 off
。
未引用值可能导致错误,例如:
not a valid value for dictionary value @ data
验证 YAML 语法
在所有这些缩进和规则下,容易出错。检查您的 YAML 语法是否正确(验证)的方法取决于您使用的编辑器。我们无法在这里列出所有的编辑器。
- 如果您直接在 Home Assistant 中编辑文件,请参阅以下部分:验证配置