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

 找回密码
 立即注册
楼主:

完美实现两个开关状态和控制同步的自动化(双控党必看)

  [复制链接]

76

主题

1356

帖子

1万

积分

元老级技术达人

积分
18263
金钱
16867
HASS币
290
发表于 2022-12-18 23:20:44 | 显示全部楼层
本帖最后由 dscao 于 2022-12-18 23:25 编辑
alias: 客厅灯与筒灯面板互开互关
description: ""
trigger:
  - platform: state
    entity_id:
      - light.ke_ting_deng_kai_guan
      - switch.0x00124b0014d0231b_channel_3
    to: "on"
    from: "off"
  - platform: state
    entity_id:
      - light.ke_ting_deng_kai_guan
      - switch.0x00124b0014d0231b_channel_3
    from: "on"
    to: "off"
condition: []
action:
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ trigger.to_state.state == "off" }}"
        sequence:
          - service: light.turn_off
            data: {}
            target:
              entity_id:
                - light.ke_ting_deng_kai_guan
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.0x00124b0014d0231b_channel_3
      - conditions:
          - condition: template
            value_template: "{{ trigger.to_state.state == "on" }}"
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id:
                - light.ke_ting_deng_kai_guan
          - service: switch.turn_on
            data: {}
            target:
              entity_id: switch.0x00124b0014d0231b_channel_3
    default: []
mode: restart
今天看微信中提到这个,搜索找到了这里,看到也有些年份了,另外我使用的类似但有些不同。也发出来分享一下,不是很简洁,请勿拍砖啊。

现在新版在UI中配置自动化非常方便 ,主要就是开关和灯两个类型的实体需要同步控制的就加入进来,有多个少个需要同步就加多个进来。所谓同步控制实际上就是 一个开就全部开,一个关就全部关。所以可以这样操作。
为什么这里触发条件写了两个, on to off 和 off to on,类似的我都会写两条,防止有些情况下从不可用状态回到开或关状态导致触发。
因为用的是zigbee墙壁开关,这里的开关和灯都有状态反馈,两个开关的面板上都有指示灯。

如果是两个开关相反的互开关,比如我的太阳能热水器和燃气热水器,只要一个开另一个就关,可以两个同时关,但不允许同时开。写法会复杂一些,而且操作上不能快速连续开关,按一次要等几秒等自动化完成再按下一次,否则可能导致自动连续不停的切换。


alias: 燃气热水器与太阳能互控
description: ""
trigger:
  - platform: state
    entity_id:
      - switch.28d1272b27be_outlet
      - switch.28d12736597a_outlet
    to: "on"
condition: []
action:
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ trigger.entity_id == "switch.28d1272b27be_outlet" }}"
        sequence:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.28d12736597a_outlet
      - conditions:
          - condition: template
            value_template: "{{ trigger.entity_id == "switch.28d12736597a_outlet" }}"
        sequence:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.28d1272b27be_outlet
    default: []
mode: single


这个代码从UI中复制出来的,也可以复制回去。就是UI的自动化中创建一个自动化,右上角点击“以YAML编辑”,复制进去,再点击“以图形界面编辑”,之后就很方便修改了。

回复

使用道具 举报

1

主题

7

帖子

88

积分

注册会员

Rank: 2

积分
88
金钱
81
HASS币
0
发表于 2023-2-4 00:15:45 | 显示全部楼层
本帖最后由 美济的光 于 2023-2-4 00:43 编辑
dscao 发表于 2022-12-18 23:20
今天看微信中提到这个,搜索找到了这里,看到也有些年份了,另外我使用的类似但有些不同。也发出来分享一下 ...

2023年找过来的,我的想法和老哥差不多,但是在  action:  - choose:  那里报错,不知道选择什么了
编辑:仔细看了一下,是 调用摸板的时候,UndefinedError: 'dict object' has no attribute 'to_state'
回复

使用道具 举报

0

主题

18

帖子

66

积分

注册会员

Rank: 2

积分
66
金钱
48
HASS币
0
发表于 2023-3-20 11:04:32 | 显示全部楼层
我还以为有智能双控开关,原来是一个虚拟开关控制实体开关状态反转
回复

使用道具 举报

0

主题

6

帖子

142

积分

注册会员

Rank: 2

积分
142
金钱
136
HASS币
0
发表于 2023-3-22 16:18:55 | 显示全部楼层
dscao 发表于 2022-12-18 23:20
今天看微信中提到这个,搜索找到了这里,看到也有些年份了,另外我使用的类似但有些不同。也发出来分享一下 ...

采用你的代码我重新设定了自动化,之前的自动化就是出现自动连续不停的切换,最终只有把设备离线后重新添加才能恢复,希望采用你的方案后,能不出现类似情况,感谢你的分享。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-24 13:45 , Processed in 0.057736 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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