justion 发表于 2023-1-21 13:33:57

ha重启如何避免自动化执行

我有一个自动化是开关空调的,但是每次ha重启,ha会判断小爱的conversation是否还是“打开空调/关闭空调”,如果是的话又会执行一次,最近看到有大佬的天气预警的启发,为了避免这样的情况发生加了一个环境条件,但是还是不行,不知道要怎么解决好。
alias: 【宿舍】【舒适】开关空调
description: ""
trigger:
- platform: state
    entity_id:
      - sensor.xiaomi_l05c_fd84_conversation
    to:
      - 打开空调
      - 关闭空调
    not_from: unavailable
    alias: 宿舍小爱=打开空调or关闭空调
condition:
- condition: template
    value_template: >-
      {{trigger.to_state.attributes.timestamp !=
      trigger.from_state.attributes.timestamp}}   #这部分是近期加的,但是也起不到作用
action:
- if:
      - condition: state
      entity_id: sensor.xiaomi_l05c_fd84_conversation
      state: 打开空调
      - condition: numeric_state
      entity_id: sensor.ble_temperature_a4c138ecaa60
      above: 25
    then:
      - service: climate.turn_on
      data: {}
      target:
          entity_id: climate.miir_ir02_3248_ir_aircondition_control
      - service: climate.set_temperature
      data:
          temperature: 25
          hvac_mode: cool
      target:
          entity_id: climate.miir_ir02_3248_ir_aircondition_control
      - service: switch.turn_on
      data: {}
      target:
          entity_id: switch.tong_duan_qi_switch_1
      - stop: 空调已启动
    alias: 温度>25,开制冷25°
- if:
      - condition: state
      entity_id: sensor.xiaomi_l05c_fd84_conversation
      state: 关闭空调
    then:
      - service: climate.turn_off
      data: {}
      target:
          entity_id: climate.miir_ir02_3248_ir_aircondition_control
      - service: switch.turn_off
      data: {}
      target:
          entity_id: switch.tong_duan_qi_switch_1
      - stop: 空调已关闭
    else: []
    alias: 关闭空调
- if:
      - condition: state
      entity_id: sensor.xiaomi_l05c_fd84_conversation
      state: 打开空调
      - condition: numeric_state
      entity_id: sensor.ble_temperature_a4c138ecaa60
      below: 25
    then:
      - service: climate.turn_on
      data: {}
      target:
          entity_id: climate.miir_ir02_3248_ir_aircondition_control
      - service: climate.set_temperature
      data:
          temperature: 22
          hvac_mode: heat
      target:
          entity_id: climate.miir_ir02_3248_ir_aircondition_control
      - service: switch.turn_on
      data: {}
      target:
          entity_id: switch.tong_duan_qi_switch_1
      - stop: 空调已启动
    alias: 温度<25,开制热22°
mode: single

dscao 发表于 2023-1-21 21:18:50

本帖最后由 dscao 于 2023-1-21 22:41 编辑

我感觉理论上这两个中有一个应该都能解决问题,但实际上却没解决问题,也是奇怪了,等懂的大佬解答吧。
not_from: unavailable

value_template: >-
      {{trigger.to_state.attributes.timestamp !=
      trigger.from_state.attributes.timestamp}}
示例中的:
      not_from:
      - "unknown"
      - "unavailable"
      to: "on"

我按上面的方法做了一个小爱语音指令的自动化测试了一下,重启时不会执行这个自动化,语音指令时正常执行。

alias: 小爱同学语音指令
description: ""
trigger:
- platform: state
    entity_id:
      - sensor.xiaomi_lx01_0dc2_conversation
    not_from: unavailable
condition: []
action:
- choose:
      - conditions:
          - condition: template
            value_template: "{{'小汽车位置' in states(\"sensor.xiaomi_lx01_0dc2_conversation\")}}"
      sequence:
          - service: script.1611078163529
            data: {}
      - conditions:
          - condition: template
            value_template: >-
            {{'打开' in states("sensor.xiaomi_lx01_0dc2_conversation") and '空调'
            in states("sensor.xiaomi_lx01_0dc2_conversation")}}
      sequence:
          - service: climate.turn_on
            data: {}
            target:
            entity_id: climate.wo_shi_kong_diao
            enabled: true
      - conditions:
          - condition: template
            value_template: >-
            {{'关闭' in states("sensor.xiaomi_lx01_0dc2_conversation") and '空调'
            in states("sensor.xiaomi_lx01_0dc2_conversation")}}
      sequence:
          - service: climate.turn_on
            data: {}
            target:
            entity_id: climate.wo_shi_kong_diao
            enabled: true
mode: single


用 in 模板这样可以适应多种口令,只要小爱训练中创建了能到hass中就可以。 比如打开空调,可以说打开空调、打开卧室空调、把空调打开等。
小汽车位置,可以说“发送小汽车位置”,“播报小汽车位置”,“把小汽车位置告诉我”。

应该更适合语音控制吧。







sikai 发表于 2023-1-21 23:44:27

判断uptime

sikai 发表于 2023-1-21 23:48:48

加一个环境条件 当前时间 > uptime + 3min

cjnt007 发表于 2023-1-22 09:39:11

学会用HA自带的功能检查问题出在哪里?
1、自动化编辑里,在图形界面-环境条件右侧三个点里,有“测试”功能,自己检测下
2、可以把环境条件里的条件代码复制到“开发者工具-模板”里测试,实时查看它的值

justion 发表于 2023-1-23 19:37:16

cjnt007 发表于 2023-1-22 09:39
学会用HA自带的功能检查问题出在哪里?
1、自动化编辑里,在图形界面-环境条件右侧三个点里,有“测试”功 ...

使用trigger.to和from好像没办法这样测试,代码没有报错

justion 发表于 2023-1-23 20:11:23

sikai 发表于 2023-1-21 23:48
加一个环境条件 当前时间 > uptime + 3min

uptime是指ha运行时间,+3以后就是刚刚启动3分钟内不会执行是吗?确实也是个方法。

justion 发表于 2023-1-23 20:37:41

dscao 发表于 2023-1-21 21:18
我感觉理论上这两个中有一个应该都能解决问题,但实际上却没解决问题,也是奇怪了,等懂的大佬解答吧。

示 ...

大佬果然大佬,用你的代码把自己的改了,确实就好了,不会重启执行了,而且又学到了用in的方法,谢谢,我要去把我的各种自动化改一改了:lol

sikai 发表于 2023-1-27 21:50:49

justion 发表于 2023-1-23 20:11
uptime是指ha运行时间,+3以后就是刚刚启动3分钟内不会执行是吗?确实也是个方法。 ...

uptime指的是HA启动时的时间点

lichao622 发表于 2024-1-24 22:51:23

dscao 发表于 2023-1-21 21:18
我感觉理论上这两个中有一个应该都能解决问题,但实际上却没解决问题,也是奇怪了,等懂的大佬解答吧。

示 ...

大佬,这个加条件了吗
页: [1]
查看完整版本: ha重启如何避免自动化执行