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

 找回密码
 立即注册
查看: 8295|回复: 16

[基础教程] 让门窗感应器显示的开关状态与实际的开关状...

[复制链接]

69

主题

692

帖子

4187

积分

论坛元老

Rank: 8Rank: 8

积分
4187
金钱
3490
HASS币
80
发表于 2020-2-14 16:53:01 | 显示全部楼层 |阅读模式
本帖最后由 zhenxiwen 于 2020-2-14 22:59 编辑

我想要把小米门窗感应器真实开关状态在ha中做相反的显示,也就是:当 门窗感应器实际是“of”时,在ha中显示出来是“on”,相反,当 门窗感应器实际是 “on”时,在ha中显示出来的是“of”,就是真实状态与在ha中显示状态正好相反。

1. 能否通过自动化实现,这个自动化应该怎么写?
2. ha中有没有改变状态的服务或命令,比如 set ..........


感谢大家热情帮助,问题解决,有两种方法:

参考官方文档,实现了感应器状态转换,转换后仍然是感应器:


## 通过sensor template,把后门外锁内门窗感应器的真实状态反向显示在HA中,转换后仍然是sensor
sensor:
  - platform: template
    sensors:
      backdoor_lock2_state:
        friendly_name: "backdoor_lock2_state"
        value_template: >-
          {% if is_state('binary_sensor.door_window_sensor_158d0004281f84', 'off') %}
            on
          {% elif is_state('binary_sensor.door_window_sensor_158d0004281f84', 'on') %}
            off
          {% endif %}


也可以按照xuyang的方法,转换成开关:

#  通过将感应器转换开关,把后门外锁内门窗感应器的真实状态反向显示在HA中,转换后sensor变成switch
switch:
  - platform: template
    switches:
      zhuangtai_zhuanhuan:
        value_template: "{{ is_state('binary_sensor.door_window_sensor_158d0004281f84', 'off') }}"
        turn_on:
          service: script.s1
        turn_off:
          service: script.s2
script:  
  's1':
    alias: s1
    sequence:
      - service: switch.turn_off
        data:
          entity_id: binary_sensor.door_window_sensor_158d0004281f84
  's2':
    alias: s2
    sequence:
      - service: switch.turn_on
        data:
          entity_id: binary_sensor.door_window_sensor_158d0004281f84


回复

使用道具 举报

0

主题

173

帖子

1403

积分

金牌会员

Rank: 6Rank: 6

积分
1403
金钱
1230
HASS币
0
发表于 2020-2-14 17:26:07 | 显示全部楼层
直接新增一個template sensor就好
回复

使用道具 举报

69

主题

692

帖子

4187

积分

论坛元老

Rank: 8Rank: 8

积分
4187
金钱
3490
HASS币
80
 楼主| 发表于 2020-2-14 18:14:25 | 显示全部楼层
jasonlai79 发表于 2020-2-14 17:26
直接新增一個template sensor就好

应该怎么写yaml,能否详细一点
回复

使用道具 举报

71

主题

1146

帖子

6321

积分

论坛元老

Rank: 8Rank: 8

积分
6321
金钱
5170
HASS币
30
发表于 2020-2-14 18:39:40 | 显示全部楼层
switch:
- platform: template
  switches:
     dnds:
       value_template: "{{ is_state('switch.225_sw1', 'off') }}"
       turn_on:
            service: script.s1
       turn_off:
            service: script.s2

script:  
  's1':
    alias: s1
    sequence:
    - service: switch.turn_off
      data:
        entity_id: switch.225_sw1
  's2':
    alias: s2
    sequence:
    - service: switch.turn_on
      data:
        entity_id: switch.225_sw1

评分

参与人数 1金钱 +20 收起 理由
+ 20 赠人玫瑰,手留余香!

查看全部评分

回复

使用道具 举报

69

主题

692

帖子

4187

积分

论坛元老

Rank: 8Rank: 8

积分
4187
金钱
3490
HASS币
80
 楼主| 发表于 2020-2-14 21:09:13 | 显示全部楼层
xuyang 发表于 2020-2-14 18:39
switch:
- platform: template
  switches:

谢谢,这可以把状态反转过来显示,但显示的是开关,能否保持原来的sensor,而不是开关呢
回复

使用道具 举报

2

主题

712

帖子

4886

积分

论坛元老

Rank: 8Rank: 8

积分
4886
金钱
4174
HASS币
85
发表于 2020-2-14 21:09:44 | 显示全部楼层
用set_state的插件
回复

使用道具 举报

69

主题

692

帖子

4187

积分

论坛元老

Rank: 8Rank: 8

积分
4187
金钱
3490
HASS币
80
 楼主| 发表于 2020-2-14 21:57:18 | 显示全部楼层

哪里有,怎么安装这个插件
回复

使用道具 举报

9

主题

249

帖子

4124

积分

元老级技术达人

积分
4124
金钱
3860
HASS币
100
发表于 2020-2-14 22:11:33 | 显示全部楼层
zhenxiwen 发表于 2020-2-14 21:09
谢谢,这可以把状态反转过来显示,但显示的是开关,能否保持原来的sensor,而不是开关呢 ...
sensor:
  - platform: template
    sensors:
      entrance_door:
        friendly_name: "大门状态"
        value_template: '{% if states("sensor.entrance_door") == "关闭" %}打开{% else %}关闭{% endif %}'
E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

69

主题

692

帖子

4187

积分

论坛元老

Rank: 8Rank: 8

积分
4187
金钱
3490
HASS币
80
 楼主| 发表于 2020-2-14 23:00:48 | 显示全部楼层

感谢,我参考官文,解决了。你的写法更简单。
回复

使用道具 举报

12

主题

545

帖子

2035

积分

金牌会员

Rank: 6Rank: 6

积分
2035
金钱
1490
HASS币
0
发表于 2020-2-15 08:54:23 | 显示全部楼层
你下面转成开关那里有点误导, 脚本那里的 switch.turn_off 没办法处理 binary_sensor吧,说不定会错误。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 21:13 , Processed in 1.585281 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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