HA文档 目录

  1. 首页
  2. HA文档
  3. HA文档
  4. 配置进阶
  5. 模板(template)

模板(template)

这篇文章是系列文章的第2/7篇:

模板(template)是在配置文件中的动态内容,模板被执行后的输出结果会被动态的加载。
在HomeAssistant中,模板一般会在脚本和自动化组件的配置中使用,在其它一些组件配置中,也可能出现模板——比如在notify、alexa组件中用于组装输出的信息,在MQTT、REST、command_line等sensor组件中用于处理获得的信息。

例如,下面的脚本中,调用notify服务,根据实体device_tracker.paulus的状态值,动态地组装服务调用参数(通知消息的内容):

HomeAssistant的模板基于Jinjia2模板引擎,其基本的语法(包括数学计算、比较计算、逻辑计算、过滤器,以及if判断、for循环等)与Jinjia2一致,可以参见Jinjia2的文档

在HomeAssistant中,对Jinjia2做了以下扩展:

  • states
    变量,包含了当前系统中所有实体的状态对象,按照实体ID排序
  • states.domainID
    变量,包含了在某一域下的所有实体的状态对象,按照实体ID排序
  • states.domainID.entityID
    变量,某一实体的状态对象(状态对象中包含状态和属性值)
  • states.domainID.entityID.state_with_unit
    变量,某一实体的状态值加上其单位(如果属性中存在的话)
  • states( ’domainID.entityID’ )
    返回实体的状态(字符串),如果实体不存在,返回“unknown”
  • is_state( ’domainID.entityID’, ‘value_tobe_compared’ )
    判断实体的状态是否是给定的值
  • is_state_attr( ‘domainID.entityID’, ‘attributeID’, ‘value_tobe_compared’ )
    判断实体的某个属性是否是给定的值
  • now()
    返回用户设置的时区中的当前时间
  • utcnow()
    返回当前国际标准时间
  • as_timestamp()
    将一个时间或者表述时间的字符串转化为UNIX时间戳(从格林威治时间1970年01月01日00时00分00秒起至这个时间的总秒数)
  • relative_time(timestamp)
    返回输入与当前时间之间的时间差
  • strptime( string, format )
    根据format的形式转化时间的格式
  • timestamp_local
    将UNIX时间戳转换成用户时区的时间
  • timestamp_utc
    将UNIX时间戳转换成国际标准时间
  • timestamp_custom( format_string, local_boolean )
    将UNIX时间戳转换成特定的时间表达格式,缺省使用用户时区时间
  • distance()
    计算距离
  • closest()
    返回距离最近的实体
  • float
    转换成浮点数
  • round
    转换成十进制整数
  • max
    最大值
  • min
    最小值

注:如果实体ID以数字开头,比如“light.2nd”,在模板中,不能使用“states.light.2nd”,而应该使用中括号表达:“states.light[‘2nd’]

举一些例子:

  • 状态
  • 属性
  • 距离
  • 时间

 

模板使用中一些重要的事项:

  • 在调用服务用模板传入服务数据时,需要将“data”改成“data_template”。例如:
  • 如果调用的服务名称是模板时,需要将“service”改写成“service_template”。例如:
  • 如果是单行出现的模板,需要整体加上单引号或双引号
  • 如果可能涉及到未定义的变量,需要事先判断(使用“if…is not none”)或者使用“default”过滤器
  • 如果进行数字的运算,首先使用float或int过滤器转换为数字
  • 当对变量转换不成功时,float和int过滤器可以设置缺省值,但此对未定义的变量无效

在HomeAssistant的WEB前端,你可以点击下图中红色方框部分,输入你的模板,在右边获得输出的值。

遇到问题了?快来学习免费在线课程吧,博学老司机在线答疑,找到更多志同道合的HA玩家一起进步

此文不允许转载,如需转载请与BD@hachina.io联系。

以上内容是否对您有帮助? 0 有帮助 1 没帮助