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

 找回密码
 立即注册
查看: 18914|回复: 11

[技术探讨] 【已解决】:如何制作一个虚拟开关,可以切换三种不同...

[复制链接]

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
发表于 2021-5-28 10:56:44 | 显示全部楼层 |阅读模式
本帖最后由 coli06 于 2021-5-28 16:11 编辑

感谢版主大大XCray的指导,终于成功了!
今天又get了一招,yaml的自定义模板太强大了!!
解决方法看8#

想要实现的效果是,通过yaml写一个实体,可以根据条件切换三种不同状态。
比如:温度低于26℃则状态切换为低温;高于30℃则切换为高温;在26~30℃之间则切换为舒适。
论坛里找了好久,都是只有两种状态切换的,不知道这个要怎么写,求大佬指导
回复

使用道具 举报

40

主题

341

帖子

2346

积分

金牌会员

Rank: 6Rank: 6

积分
2346
金钱
2005
HASS币
0
发表于 2021-5-28 12:45:26 | 显示全部楼层
阅读这个页面
https://www.home-assistant.io/docs/configuration/templating/

{% if is_state('device_tracker.paulus', 'home') %}
  Ha, Paulus is home!
{% else %}
  Paulus is at {{ states('device_tracker.paulus') }}.
{% endif %}

{{ states('sensor.temperature') | float + 1 }}

{{ (states('sensor.temperature') | float * 10) | round(2) }}

{% if states('sensor.temperature') | float > 20 %}
  It is warm!
{% endif %}

{{ as_timestamp(states.binary_sensor.garage_door.last_changed) }}

{{ as_local(states.binary_sensor.garage_door.last_changed) }}

{{ as_timestamp(now()) - as_timestamp(states.binary_sensor.garage_door.last_changed) }}

{{ as_local(states.sensor.time.last_changed) }}
回复

使用道具 举报

73

主题

1165

帖子

6645

积分

论坛元老

Rank: 8Rank: 8

积分
6645
金钱
5475
HASS币
30
发表于 2021-5-28 13:42:37 | 显示全部楼层
input_select
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-28 15:13:31 | 显示全部楼层
myxu 发表于 2021-5-28 12:45
阅读这个页面
https://www.home-assistant.io/docs/configuration/templating/

我也有研究了下这个页面中的写法。我尝试这样写了一个
但是不知道前面需要加switch还是其他的什么
{% if states('sensor.temperature') | float > 30 %}
  hot
{% else %}
{% if states('sensor.temperature') | float < 26 %}
  cold
{% else %}
  cosy
{% endif %}
回复

使用道具 举报

17

主题

800

帖子

5740

积分

论坛元老

Rank: 8Rank: 8

积分
5740
金钱
4935
HASS币
0
发表于 2021-5-28 15:26:38 | 显示全部楼层
其实你需要的是个sensor而不是开关吧。。
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-28 15:26:50 | 显示全部楼层

看了下官方文档中关于
input_select的描述,好像没法实现我的想法
回复

使用道具 举报

73

主题

1165

帖子

6645

积分

论坛元老

Rank: 8Rank: 8

积分
6645
金钱
5475
HASS币
30
发表于 2021-5-28 15:29:26 | 显示全部楼层
wd:
     options:
       - 低温
       - 高温
       - 舒适
     initial: 舒适
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-5-28 15:48:35 | 显示全部楼层
本帖最后由 XCray 于 2021-5-28 15:55 编辑
coli06 发表于 2021-5-28 15:13
我也有研究了下这个页面中的写法。我尝试这样写了一个
但是不知道前面需要加switch还是其他的什么
...

我好像明白你的想法,保存之后不用重启,重载模板实体即可:
template:
  - sensor:
    - name: "feeling"
      state: >
        {% if states('sensor.temperature') | float > 30 %}
          hot
        {% elif states('sensor.temperature') | float < 20 %}
          cold
        {% else %}
          cosy
        {% endif %}
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-28 16:07:37 | 显示全部楼层
XCray 发表于 2021-5-28 15:48
我好像明白你的想法,保存之后不用重启,重载模板实体即可:

完全正确~终于搞定了,感谢版主大大!
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-28 16:08:59 | 显示全部楼层
sirakawa 发表于 2021-5-28 15:26
其实你需要的是个sensor而不是开关吧。。

对的,已经成功解决啦!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 04:15 , Processed in 0.117198 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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