脚本
脚本集成使用户可以指定由家庭助手执行的一系列操作。必威是什么当您打开脚本时,这些都是运行的。脚本集成将为每个脚本创建一个实体,并允许它们通过服务控制。
配置
#示例Configuration.yaml条目脚本:message_temperature:序列:#这是家庭助理脚本语必威是什么法-服务:notify.notify数据:信息:“当前的温度是{{{状态(“传感器”)}}””
脚本名称(例如,message_temperature
在上面的示例中)不允许包含大写字母或破折号(负)字符,即-
。分开单词以获得更好可读性的首选方法是使用下划线(_
) 人物。
配置变量
脚本模式
模式 | 描述 |
---|---|
单身的 |
不要开始新的运行。发出警告。 |
重新开始 |
首先停止上一个运行后开始新的运行。 |
排队 |
所有先前的运行完成后,开始新的运行。跑步可以按照排队的顺序执行。 |
平行 |
与以前的运行并行启动新的独立运行。 |
完整配置
脚本:醒来:别名:“唤醒向上”图标:“MDI:派对权益”描述:“转上这卧室灯和然后这活的房间灯后一个延迟”变量:turn_on_entity:group.living_room字段:分钟:姓名:分钟描述:“这数量的时间至等待前转上这活的房间灯”选择器:数字:最小:0最大限度:60步:1测量单位:分钟模式:滑块#如果在仍在运行的同时再次调用(可能是在延迟步骤中),请重新开始。模式:重新开始序列:#这是家庭助理脚本语必威是什么法-事件:logbook_entryevent_data:姓名:保卢斯信息:正在醒来ENTITY_ID:device_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_ID:script.notify_pushover数据:变量:标题:“状态改变”信息:“这光是上!”
另一种方式是将脚本直接称为服务。在这种情况下,所有服务数据将作为变量提供。如果我们在上面的脚本上应用此方法,则看起来像这样:
#示例Configuration.yaml条目自动化:扳机:平台:状态ENTITY_ID:浅房间从:“离开”至:“上”行动:服务:script.notify_pushover数据:标题:“状态改变”信息:“这光是上!”
使用脚本中的变量需要使用模板:
#示例Configuration.yaml条目脚本:notify_pushover:描述:“发送一个推销通知”字段:标题:描述:“这标题的这通知”例子:“状态改变”信息:描述:“这信息内容”例子:“这光是上!”序列:-(健康)状况:状态ENTITY_ID:switch.pushover_notifications状态:“上”-服务:notify.pushover数据:标题:“{{{标题}}””信息:“{{{信息}}””
模板可能使用的脚本变量包括配置提供的脚本变量,从服务启动时通过的脚本变量这个
变量其值是当前脚本状态的字典。
等待脚本完成
当“直接”调用脚本时(例如,脚本。名称
)调用脚本将等待调用脚本完成。如果发生任何错误导致所谓脚本中止的错误,则调用脚本也将被中断。
通过脚本(或多个脚本)通过script.turn_on
服务呼叫脚本确实不是等待。它以列出的顺序启动脚本,并在最后一个脚本开始后继续进行。导致他们中断的所谓脚本中发生的任何错误都会不是影响调用脚本。
以下是调用脚本不等待的示例。它执行其他操作,而被称为脚本则“在后台”运行。然后它后来等待调用脚本通过a完成wait_template
。该技术也可以用于调用脚本等待调用脚本,但是不是如果由于错误而被称为脚本中止,则被中止。
脚本:script_1:序列:-服务:script.turn_on目标:ENTITY_ID:script.script_2#在第二个脚本运行时,在这里执行其他一些步骤...#现在等待称为脚本完成。-wait_template:“{{{is_state('script.script_2','离开')}}””#现在做其他事情...script_2:序列:#与第一个脚本同时做一些事情...