请选择 进入手机版 | 继续访问电脑版

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

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

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

[复制链接]

39

主题

493

帖子

2060

积分

金牌会员

Rank: 6Rank: 6

积分
2060
金钱
1567
HASS币
10
发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 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

主题

32

帖子

193

积分

注册会员

Rank: 2

积分
193
金钱
161
HASS币
0
发表于 5 天前 | 显示全部楼层
直接新增一個template sensor就好
回复

使用道具 举报

39

主题

493

帖子

2060

积分

金牌会员

Rank: 6Rank: 6

积分
2060
金钱
1567
HASS币
10
 楼主| 发表于 5 天前 | 显示全部楼层
jasonlai79 发表于 2020-2-14 17:26
直接新增一個template sensor就好

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

使用道具 举报

44

主题

704

帖子

2632

积分

金牌会员

Rank: 6Rank: 6

积分
2632
金钱
1928
HASS币
10
发表于 5 天前 | 显示全部楼层
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 赠人玫瑰,手留余香!

查看全部评分

回复

使用道具 举报

39

主题

493

帖子

2060

积分

金牌会员

Rank: 6Rank: 6

积分
2060
金钱
1567
HASS币
10
 楼主| 发表于 5 天前 | 显示全部楼层
xuyang 发表于 2020-2-14 18:39
switch:
- platform: template
  switches:

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

使用道具 举报

3

主题

667

帖子

2661

积分

金牌会员

Rank: 6Rank: 6

积分
2661
金钱
1994
HASS币
85
发表于 5 天前 | 显示全部楼层
用set_state的插件
回复

使用道具 举报

39

主题

493

帖子

2060

积分

金牌会员

Rank: 6Rank: 6

积分
2060
金钱
1567
HASS币
10
 楼主| 发表于 5 天前 | 显示全部楼层

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

使用道具 举报

8

主题

224

帖子

1702

积分

论坛技术达人

积分
1702
金钱
1463
HASS币
100
发表于 5 天前 | 显示全部楼层
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
回复

使用道具 举报

39

主题

493

帖子

2060

积分

金牌会员

Rank: 6Rank: 6

积分
2060
金钱
1567
HASS币
10
 楼主| 发表于 5 天前 | 显示全部楼层

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

使用道具 举报

12

主题

516

帖子

1758

积分

金牌会员

Rank: 6Rank: 6

积分
1758
金钱
1242
HASS币
0
发表于 4 天前 | 显示全部楼层
你下面转成开关那里有点误导, 脚本那里的 switch.turn_off 没办法处理 binary_sensor吧,说不定会错误。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2020-2-19 15:02 , Processed in 0.092118 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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