跳到主要内容

RainMaker 固件能否处理时区和夏令时偏移?

可以。ESP RainMaker 通过时间服务处理时区和夏令时 (DST)。UTC 通过 SNTP 获取;RainMaker 随后使用配置的时区转换为本地时间,并自动应用 DST 规则。定时服务使用该本地时间,因此在 DST 变化后仍能保持正确。

在固件中配置时区:

  • 位置字符串(推荐——包含 DST 规则):
    esp_rmaker_time_set_timezone("America/Los_Angeles");
  • POSIX TZ 字符串:
    esp_rmaker_time_set_timezone_posix("PST8PDT,M3.2.0,M11.1.0");
  • 编译时默认值:在 menuconfig 中设置 CONFIG_ESP_RMAKER_DEF_TIMEZONE="Asia/Shanghai"

由应用在运行时更改: 启用 esp_rmaker_timezone_service_enable(),使节点暴露 TZ 和 TZ-POSIX 参数。手机应用可根据用户账号设置时区;这些值会存储在 NVS 中,重启后仍然有效。

要正确使用时区和 DST:(1)启用时间同步,(2)设置时区,(3)可选启用时区服务以支持应用驱动的更新,(4)如有需要则启用定时服务。更多详情请参见时间服务使用指南。

信息

时间服务和时区处理在所有 RainMaker 示例中默认启用。配网完成后,手机应用会立即将节点时区内部设置为与用户时区一致。你可以在应用的节点详情页查看已配置的时区。