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

 找回密码
 立即注册
查看: 1855|回复: 5

[技术探讨] 代码可以改为是or条件吗?

[复制链接]

55

主题

137

帖子

736

积分

高级会员

Rank: 4

积分
736
金钱
599
HASS币
0
发表于 2023-2-12 04:04:09 | 显示全部楼层 |阅读模式
这是判断状态显示图标,但是需要3个开关都是on状态,能否改为是or,就是3个开关其中一个on就显示,而不是必须3个同时判断。

type: conditional
conditions:
  - entity: switch.lumi_n3acn3_a235_left_switch_service
    state: 'on'
  - entity: switch.lumi_n3acn3_a235_right_switch_service
    state: 'on'
  - entity: switch.lumi_n3acn3_a235_middle_switch_service
    state: 'on'
card:
  show_name: true
  show_icon: true
  type: button
  tap_action:
    action: toggle
  entity: script.1675790238354
  icon: mdi:book-open-blank-variant
  show_state: true



回复

使用道具 举报

32

主题

1066

帖子

4952

积分

论坛元老

Rank: 8Rank: 8

积分
4952
金钱
3871
HASS币
90
发表于 2023-2-12 07:10:13 | 显示全部楼层
本帖最后由 relliky 于 2023-2-12 07:11 编辑

可以,文档在这里 https://www.home-assistant.io/do ... tions/#or-condition
还可以像这样把 and 和 or 混着

#    condition:
#      - condition: or
#        conditions:
#          - condition: and
#            conditions:
#              - entity_id: binary_sensor.master_toilet_basin_motion_sensor_motion
#                condition: state
#                state: "on"
#              - entity_id: sensor.master_toilet_basin_motion_sensor_light
#                condition: numeric_state
#                below: "150"
#          - condition: and
#            conditions:
#              - entity_id: binary_sensor.master_toilet_shower_motion_sensor_motion
#                condition: state
#                state: "on"
#              - entity_id: sensor.master_toilet_shower_motion_sensor_light
#                condition: numeric_state
#                below: "10"



我家全屋智能的HA设置 https://github.com/relliky/Tais_Home_Assistant_Config
回复

使用道具 举报

5

主题

471

帖子

2114

积分

金牌会员

Rank: 6Rank: 6

积分
2114
金钱
1643
HASS币
0
发表于 2023-2-12 09:10:29 | 显示全部楼层
本帖最后由 hyq 于 2023-2-12 09:11 编辑

- or:
       - "{{ is_state('switch.zhu_wo_deng_switch_1','on') }}"
       - "{{ is_state('switch.zhu_wo_deng_switch_1_2','on') }}"
       - "{{ is_state('switch.zhu_wo_deng_switch_2','on') }}"
       - and:
              - >-
                  {{ states('sensor.liang_du_chuan_gan_qi_luminosity')|int <
                   10 }}
              - "{{  now() > today_at(\"18:00\") or now() < today_at(\"7:00\") }}"
         - and:
               - "{{ is_state('binary_sensor.ren_ti_chuan_gan_qi_2','off') }}"
               - "{{ is_state('weather.he_s',['sunny','partlycloudy']) }}"
               - >-
                    {{ states('sensor.liang_du_chuan_gan_qi_luminosity')|int >
                    800 }}
                - "{{ state_attr('weather.he_s','temperature')|int > 36 }}"
回复

使用道具 举报

55

主题

137

帖子

736

积分

高级会员

Rank: 4

积分
736
金钱
599
HASS币
0
 楼主| 发表于 2023-2-12 15:22:39 | 显示全部楼层
relliky 发表于 2023-2-12 07:10
可以,文档在这里 https://www.home-assistant.io/do ... tions/#or-condition
还可以像这样把 and 和 or  ...

我按你给的代码出错,然后按文档的也出错。。请问我上面的代码,如何改才对?能按我的改看参考吗?
回复

使用道具 举报

32

主题

1066

帖子

4952

积分

论坛元老

Rank: 8Rank: 8

积分
4952
金钱
3871
HASS币
90
发表于 2023-2-12 22:46:44 | 显示全部楼层
本帖最后由 relliky 于 2023-3-3 05:44 编辑
gdxinge 发表于 2023-2-12 15:22
我按你给的代码出错,然后按文档的也出错。。请问我上面的代码,如何改才对?能按我的改看参考吗? ...

你好像在自创语法啊。。所有非template的condition都需要condition关键字,而且你还混用了template,and和or ,个人建议在把最基础的语法学明白之前不要用template(即一开始不要用任何 is_state, state_attr)。


我给你举个例子
你写的
- or:
       - "{{ is_state('switch.zhu_wo_deng_switch_1','on') }}"
       - "{{ is_state('switch.zhu_wo_deng_switch_1_2','on') }}"
       - "{{ is_state('switch.zhu_wo_deng_switch_2','on') }}"

应该改成
      - condition: or
        conditions:
          - entity_id: switch.zhu_wo_deng_switch_1
            condition: state
            state: "on"
          - entity_id: switch.zhu_wo_deng_switch_1_2
            condition: state
            state: "on"
          - entity_id: switch.zhu_wo_deng_switch_2
            condition: state
            state: "on"            


这些都有代替的,上面就是代替is_state的,要判断state_attr可以用类似的来判断

condition:
  condition: numeric_state
  entity_id: climate.living_room_thermostat
  attribute: temperature
  above: 17
  below: 25

这个也好debug一些。把这个学清楚了,还有yaml的语法,建议再去学template,template的debug会更麻烦一些。

官方文档里有更多的例子。 我的HA自动化里也有很多例子,你有兴趣也可以看看https://github.com/relliky/Tais_ ... ree/master/packages

----------------------------EDIT--------------------
纠正一下,刚刚开官方文档发现好早就支持缩写的or和and了,是我孤陋寡闻了



我家全屋智能的HA设置 https://github.com/relliky/Tais_Home_Assistant_Config
回复

使用道具 举报

18

主题

165

帖子

986

积分

高级会员

Rank: 4

积分
986
金钱
821
HASS币
0
发表于 2023-6-7 22:03:48 | 显示全部楼层
你好,最后问题解决了吗?想问下怎么实现的?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 13:48 , Processed in 0.081059 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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