ESPHOME Time组件

ESPHome的TimeComponent允许配置基准时间,包括指定ID、时区和自动化。on_timeTrigger支持以cron语法定时运行任务,例如每5分钟、工作日早晨开启设备。on_time_syncTrigger在时间同步后触发,可用于更新硬件时钟。示例展示了不同时间间隔和事件的自动化配置。
摘要由CSDN通过智能技术生成

ESPHOME地址:Time Component

基准时间配置

  • id (可选, ID): 指定在lambdas中使用的时间ID。
  • timezone (可选, string): 手动告诉ESPHome使用该格式的时区,时区名称通过TZ database name获得,ESPHome尝试根据运行ESPHome的计算机的时区自动推断时区字符串,但这* 可能并不总是准确的。
  • on_time (可选, Automation): 使用类似cron的语法以特定间隔运行的自动化。详见on_time Trigger.
  • on_time_sync (Optional, Automation): 同步时间源时运行的自动化。 详见on_time_sync Trigger.

on_time Trigger

这种自动化可以用于在一天的特定时间以特定的间隔运行自动化。
有两种方法可以指定时间间隔:使用如下所示的seconds:, minutes,或者使用类似于cron的表达式,如* /5 * * * *。
esphome的cron有6个字段(seconds,minutes,hours,dayofmonth,month,dayofweek)。

time:
  - platform: sntp
    id: my_time
    timezone: Asia/Shanghai
    on_time:
      # Every 5 minutes
      - seconds: 0
        minutes: /5
        then:
          - switch.toggle: my_switch

      # Every morning on weekdays
      - seconds: 0
        minutes: 30
        hours: 7
        days_of_week: MON-FRI
        then:
          - light.turn_on: my_light

      # Cron syntax, trigger every 5 minutes
      - cron: '00 /5 * * * *'
        then:
          - switch.toggle: my_switch
  • seconds (可选, string): 指定自动化将在每分钟的哪几秒触发。默认为"*"(所有秒)。取值范围为0 ~ 59。
  • minutes (可选, string): 指定自动化将在一小时的哪几分钟触发。默认为*(所有分钟)。取值范围为0 ~ 59。
  • hours (可选, string): 指定自动化将在一天中的哪个小时触发。默认为*(所有小时)。取值范围为0 ~ 23。
  • days_of_month (可选, string): 指定自动化将在一个月的哪一天触发。默认为*(所有天)。取值范围为1 ~ 31。
  • months (可选, string): 指定要在一年中的哪个月份触发。默认为*(所有月份)。月份名称JAN到DEC会被自动替换。取值范围为1(一月)~ 12(十二月)。
  • days_of_week (可选, string): 指定要触发一周中的哪几天。默认为*(所有天)。名称SUN到SAT被自动替换。范围为1(星期日)到7(星期六)。
  • cron (可选, string): 可以指定一个完整的cron表达式,如* /5 * * * *. 请注意年份和一些特殊字符,比如 L, #目前不支持.此外,星期几字段的解释类似于days_of_week变量 (range from 1 (Sunday) to 7 (Saturday)) 而不像其他cron实现那样(范围从0 (Sunday)到7 (Sunday))。

在seconds:, minutes:,…字段中可以使用以下操作符:

seconds: 0

像0或30这样的整数将使自动化仅在当前秒分别恰好为0或30时触发。

seconds: 0,30,45

可以用运算符组合多个表达式。这个操作符使得,如果用逗号分隔的表达式中有一个为真,就会触发自动操作。例如,如果当前秒为0、30或45,将触发。

days_of_week: 2-6
# same as
days_of_week: MON-FRI
# same as
days_of_week: 2,3,4,5,6
# same as
days_of_week: MON,TUE,WED,THU,FRI

-(连字符)操作符可用于创建一个值范围,使用操作符可列出所有值的简写。

# every 5 minutes
seconds: 0
minutes: /5

# every timestamp where the minute is 5,15,25,...
seconds: 0
minutes: 5/10

/操作符可用于创建步长值。例如/5表示minutes:仅当小时的分钟为0或5、10、15、…时触发自动触发。/前面的值指定应用该步长的偏移量。

# Every minute
seconds: 0
minutes: '*'

最后,*运算符匹配每个数字。在上面的例子中,*可以用0-59代替。

注意

请注意,由于没有设置秒变量,以下自动化将在0、5、10、15分钟内每秒钟触发一次,而不是每5分钟触发一次:

time:
  - platform: sntp
    # ...
    on_time:
      - minutes: /5
        then:
          - switch.toggle: my_switch

on_time_sync Trigger

此自动化在时间源成功检索当前时间后触发。请参阅DS1307配置示例,了解来自home assistant服务器的网络时间同步触发写入外部硬件实时时钟芯片的场景。

on_time_sync:
  then:
    - logger.log: "Synchronized system clock"

example

time:
  - platform: sntp
    id: my_time
    timezone: Asia/Shanghai
    on_time:
      - seconds: "*"
        then:
          lambda: |-
            static int cnt = 0;
            ESP_LOGW("time", "%d", cnt);
            cnt++;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新程序猿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值