『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6518|回复: 14

[技术探讨] 一个value_template的使用疑问

[复制链接]

21

主题

188

帖子

1481

积分

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1288
HASS币
60
发表于 2019-3-5 09:03:27 | 显示全部楼层 |阅读模式

我有一个自动化的条件,原先是这样的

    condition:
      - condition: state
        entity_id: switch.kong_ke_cha_zuo_hei
        state: 'off'
        for:
          seconds: 10

现在要把entity id改为变量,那理论上应该是这样的

    condition:
      - condition: state
        entity_id: {{states.sensor.input_select_entity_id.state}}
        state: 'off'
        for:
          seconds: 10

但是因为state condition不支持模版,所以必须改成template condition,问题就来了,怎么样让value_template判断实例保持关闭10秒呢……

实用场景:我的控客插座时不时会断线,当我用定时器关闭他时,不能保证成功关闭,所以我需要用自动化脚本去检查这个插座,是否保持一段时间的关闭,从而确认他关闭成功。



回复

使用道具 举报

39

主题

2046

帖子

7692

积分

元老级技术达人

积分
7692
金钱
5631
HASS币
110
发表于 2019-3-5 09:13:02 | 显示全部楼层
大佬又是我,我想请教下自动化你是从哪里学的?
官方的看起来都是模棱两可的感觉
回复

使用道具 举报

21

主题

188

帖子

1481

积分

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1288
HASS币
60
 楼主| 发表于 2019-3-5 09:29:28 | 显示全部楼层
ghostist 发表于 2019-3-5 09:13
大佬又是我,我想请教下自动化你是从哪里学的?
官方的看起来都是模棱两可的感觉 ...

看文档+看英文社区+看论坛
回复

使用道具 举报

39

主题

2046

帖子

7692

积分

元老级技术达人

积分
7692
金钱
5631
HASS币
110
发表于 2019-3-5 09:45:17 | 显示全部楼层
看来没有捷径
参考你那个空调的,我加了制冷 制热模式
这样就需要4*2的if嵌套
不会写是一,不优雅是二  还是决定先学习再动手
回复

使用道具 举报

21

主题

188

帖子

1481

积分

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1288
HASS币
60
 楼主| 发表于 2019-3-5 09:54:12 | 显示全部楼层
ghostist 发表于 2019-3-5 09:45
看来没有捷径
参考你那个空调的,我加了制冷 制热模式
这样就需要4*2的if嵌套

https://www.home-assistant.io/components/sensor.template/
解决思路:为模式 温度 风速各设置一个模版传感器,将input select和input number通过传感器转换为合适的数字,再将三个传感器凑起来,形成一个数字作为slot
回复

使用道具 举报

1

主题

20

帖子

53

积分

注册会员

Rank: 2

积分
53
金钱
33
HASS币
0
发表于 2019-3-5 10:35:56 | 显示全部楼层
很好  学习了
回复

使用道具 举报

26

主题

2096

帖子

8506

积分

论坛元老

Rank: 8Rank: 8

积分
8506
金钱
6405
HASS币
30

论坛元老

发表于 2019-3-5 11:19:33 | 显示全部楼层
本帖最后由 情非殇 于 2019-3-5 11:28 编辑

condition支持template模板的呀,这样写,但是for的用法不知道可不可行,你自己实测,我只测试过trigger可以用for
condition:
  - condition: template
    value_template: "{{ is_state('sensor.input_select_entity_id', 'off') }}"
    for: 00:00:10

回复

使用道具 举报

26

主题

2096

帖子

8506

积分

论坛元老

Rank: 8Rank: 8

积分
8506
金钱
6405
HASS币
30

论坛元老

发表于 2019-3-5 11:43:48 | 显示全部楼层
然后,就你描述的需求来说,你恐怕不知道action里也可以写condition判断的,比如这样,
可以根据情况多轮询几遍

action:
  - service: switch.turn_off
    entity_id: switch.kong_ke_cha_zuo_hei
  - condition: state
    entity_id: switch.kong_ke_cha_zuo_hei
    state: 'on'
  - delay: 00:00:10
  - condition: state
    entity_id: switch.kong_ke_cha_zuo_hei
    state: 'on'
  - service: switch.turn_off
    entity_id: switch.kong_ke_cha_zuo_hei

回复

使用道具 举报

8

主题

863

帖子

5122

积分

论坛元老

Rank: 8Rank: 8

积分
5122
金钱
4259
HASS币
0
发表于 2019-3-5 16:03:36 | 显示全部楼层
学习学习
回复

使用道具 举报

21

主题

188

帖子

1481

积分

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1288
HASS币
60
 楼主| 发表于 2019-3-5 16:57:17 | 显示全部楼层
情非殇 发表于 2019-3-5 11:43
然后,就你描述的需求来说,你恐怕不知道action里也可以写condition判断的,比如这样,
可以根据情况多轮询 ...

确实不了解action里也可以写condition,但是这样的话只会check多几次,不会是真正的轮询。轮询这块我已经实现了。晚一些完善好放出来。感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-24 18:34 , Processed in 0.069951 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表