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

标题: 请教Esphome内部计数模板自动化 [打印本页]

作者: iamhyde    时间: 2022-3-30 11:51
标题: 请教Esphome内部计数模板自动化
本帖最后由 iamhyde 于 2022-4-1 11:17 编辑

想在EspHome内部做一个计数自动化,HA挂掉的话也不影响它
目标是统计开关1打开的次数,达到比如100次后清0并且运行打开开关2
计数也会同步到HA里
参考官方文档:https://esphome.io/components/number/template.html
大概写出了这个统计组件:
globals:  #全局变量
  - id: bubble_int
    type: int
    restore_value: no
    initial_value: '0'

number:
  - platform: template
    name: Number Of Bubble
    id: numberbubble
    min_value: 0
    max_value: 1000
    step: 1
    set_action:    #同步HA里操作
      then:
        - globals.set:
            id: bubble_int
            value: !lambda 'return x;'   
    on_value_range:      #次数超过5后设置清0,然后打开开关2
      above: 5
      then:
        - number.set:
            id: numberbubble
            value: 0   
        - switch.turn_on: relay2
遇到的问题是:
1.esphome重启后数量会清0,应该是全局变量那的起始数的问题
2.手动增加计数超过5后也不会清0和启动开关2
3.开关1打开的时候不会计数,应该是lambda代码有误
或者不用globals单纯用number组件的话也行,官方也没这方面的详细说明,谢谢

作者: 情非殇    时间: 2022-3-30 16:38
https://esphome.io/guides/automations.html

  1. # Example configuration entry
  2. globals:
  3.    - id: my_global_int
  4.      type: int
  5.      restore_value: no
  6.      initial_value: '0'

  7. # In an automation
  8. on_press:
  9.   then:
  10.     - lambda: |-
  11.         if (id(my_global_int) > 5) {
  12.           // global value is greater than 5
  13.           id(my_global_int) += 1;
  14.         } else {
  15.           id(my_global_int) += 10;
  16.         }

  17.         ESP_LOGD(TAG, "Global value is: %d", id(my_global_int));
复制代码

作者: iamhyde    时间: 2022-3-31 11:01
情非殇 发表于 2022-3-30 16:38
https://esphome.io/guides/automations.html

谢谢,我看这个是设置个全局变量,让它计数?不过看不到累计的数,用Number的话HA也能看
作者: 情非殇    时间: 2022-4-2 09:50
iamhyde 发表于 2022-3-31 11:01
谢谢,我看这个是设置个全局变量,让它计数?不过看不到累计的数,用Number的话HA也能看 ...

让你看看文档是怎么用lamb写加一动作的




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5