脚本


脚本集成使用户可以指定由家庭助手执行的一系列操作。必威是什么当您打开脚本时,这些都是运行的。脚本集成将为每个脚本创建一个实体,并允许它们通过服务控制。

配置

使用必威是什么家庭助理脚本语法

#示例Configuration.yaml条目脚本message_temperature序列#这是家庭助理脚本语必威是什么法-服务notify.notify数据信息当前的温度{{{状态(“传感器”)}}””

脚本名称(例如,message_temperature在上面的示例中)不允许包含大写字母或破折号(负)字符,即-。分开单词以获得更好可读性的首选方法是使用下划线(_) 人物。

配置变量

别名 细绳 ((可选的

脚本的友好名称。

图标 细绳 ((可选的

脚本的图标。

描述 细绳 ((可选的

将在开发人员工具下的“服务”选项卡中显示的脚本的描述。

变量 地图 ((可选的, 默认: {}

模板内将可用的变量

parameter_name 任何

变量的值。任何YAML都是有效的。模板也可以用于将值传递给变量。

字段 地图 ((可选的, 默认: {}

有关脚本字段参数的信息;看到将变量传递给脚本下面的部分。请注意:为了使此描述显示在开发人员工具的“服务”选项卡中,也必须定义脚本描述。

field_name 地图

此脚本使用的参数字段。所有子选项仅用于在UI中创建此脚本的表示。

姓名 细绳

此脚本参数字段的名称。

描述 细绳

此脚本参数的描述。

先进的 布尔

将此字段标记为高级参数。这仅在用户启用了高级模式时才在UI中显示它。

必需的 布尔

标记是否需要此字段。这是一个仅UI功能。

例子 细绳

一个示例值。这仅在开发人员工具的“服务”选项卡中可用的选项表中显示。

默认 任何

该字段的默认值,如UI所示。

选择器 选择器 ((可选的

选择器用于此输入。选择器定义了如何在前端UI中显示输入。

模式 细绳 ((可选的,默认:单

控制脚本在仍然从一个或多个以前的调用中运行时调用脚本时会发生什么。看脚本模式

最大限度 整数 ((可选的,默认:10

控制执行和/或排队以一次运行的最大运行数量。仅有效排队平行

max_exceeded 细绳 ((可选的,默认:警告

什么时候最大限度超过(实际上是1单身的模式)将发出一条日志消息,以表明这已经发生。此选项控制该日志消息的严重性级别。看日志级别对于有效选项的列表。或者沉默的可以指定以抑制发出消息。

序列 列表 必需的

脚本中要执行的动作顺序。

脚本模式

模式 描述
单身的 不要开始新的运行。发出警告。
重新开始 首先停止上一个运行后开始新的运行。
排队 所有先前的运行完成后,开始新的运行。跑步可以按照排队的顺序执行。
平行 与以前的运行并行启动新的独立运行。

完整配置

脚本:醒来别名唤醒向上”图标MDI:派对权益”描述卧室然后活的房间一个延迟”变量turn_on_entitygroup.living_room字段分钟姓名分钟描述数量时间等待活的房间灯”选择器数字最小0最大限度601测量单位分钟模式滑块#如果在仍在运行的同时再次调用(可能是在延迟步骤中),请重新开始。模式重新开始序列#这是家庭助理脚本语必威是什么法-事件logbook_entryevent_data姓名保卢斯信息正在醒来ENTITY_IDdevice_tracker.paulus领域-别名卧室上”服务light.turn_on目标ENTITY_ID集团数据亮度100-延迟#支持几秒钟,毫秒,分钟,小时分钟{{{分钟}}””-别名活的房间上”服务light.turn_on目标ENTITY_ID{{{turn_on_entity}}””

将变量传递给脚本

作为服务的一部分,可以将变量传递给脚本,以便它们在该脚本中的模板中可用。

有两种方法可以实现这一目标。一种方法是使用通用script.turn_on服务。要使用此服务将变量传递给脚本,请用所需的变量调用它:

#示例Configuration.yaml条目自动化扳机平台状态ENTITY_ID浅房间离开”上”行动服务script.turn_on目标ENTITY_IDscript.notify_pushover数据变量标题状态改变”信息上!”

另一种方式是将脚本直接称为服务。在这种情况下,所有服务数据将作为变量提供。如果我们在上面的脚本上应用此方法,则看起来像这样:

#示例Configuration.yaml条目自动化扳机平台状态ENTITY_ID浅房间离开”上”行动服务script.notify_pushover数据标题状态改变”信息上!”

使用脚本中的变量需要使用模板:

#示例Configuration.yaml条目脚本notify_pushover描述发送一个推销通知”字段标题描述标题通知”例子状态改变”信息描述信息内容”例子上!”序列-(健康)状况状态ENTITY_IDswitch.pushover_notifications状态上”-服务notify.pushover数据标题{{{标题}}””信息{{{信息}}””

模板可能使用的脚本变量包括配置提供的脚本变量,从服务启动时通过的脚本变量这个变量其值是当前脚本状态的字典。

等待脚本完成

当“直接”调用脚本时(例如,脚本。名称)调用脚本将等待调用脚本完成。如果发生任何错误导致所谓脚本中止的错误,则调用脚本也将被中断。

通过脚本(或多个脚本)通过script.turn_on服务呼叫脚本确实不是等待。它以列出的顺序启动脚本,并在最后一个脚本开始后继续进行。导致他们中断的所谓脚本中发生的任何错误都会不是影响调用脚本。

以下是调用脚本不等待的示例。它执行其他操作,而被称为脚本则“在后台”运行。然后它后来等待调用脚本通过a完成wait_template。该技术也可以用于调用脚本等待调用脚本,但是不是如果由于错误而被称为脚本中止,则被中止。

脚本script_1序列-服务script.turn_on目标ENTITY_IDscript.script_2#在第二个脚本运行时,在这里执行其他一些步骤...#现在等待称为脚本完成。-wait_template{{{is_state('script.script_2','离开')}}””#现在做其他事情...script_2序列#与第一个脚本同时做一些事情...