示例16:RTC时钟(系统NTP)
实验概述
系统时钟可通过网络时间服务同步,供设备配置页显示和每日定时规则使用;它与外接DS1302的日历是不同数据源。断电后不能把系统当前日期或联网状态当作已重新同步的证据。
本页按2026-10-04开发源码校对。统一候选门禁尚待终态,现场校时、时区展示和外接RTC断电保持均为 NOT_RUN。网络时间读取不证明服务器准确度。
查看系统时间
在“设备配置”查看时间及来源质量;默认时区为POSIX格式 CST-8(UTC+8),可配置其它受支持时区。页面显示使用实际生效的时区,保存的时区字段与当前生效状态应分别核对。
登录后的只读接口为 GET /api/device/time,重点查看:
| 字段 | 含义 |
|---|---|
data.timeValid、data.timeDisplayAvailable | 日历是否在有效范围、是否能按当前时区显示 |
data.synced、data.timeQuality | 当前来源记录是否仍有效、新鲜;不能仅看日期合理或网络已连接 |
data.timeSource、data.timeSyncAgeMs | 已记录来源及本次启动内的来源年龄;RTC来源表示距本次启动采用,不是RTC校准年龄 |
data.rtcBootStatus | RTC启动采用的结果,例如未启用、已采用、停走或配置不明确;不是走时精度证明 |
data.activeTimezoneAvailable、data.activeTimezone | 当前生效时区是否可确认 |
来源超过24小时未更新、观察到系统墙钟异常跳变或单调时钟异常时,质量会失鲜或失效。synced_unverified表示有当前同步记录,但来源传输未经认证;synced_tls也只说明已认证传输,不保证时间精度。
2026-10-04候选增加默认关闭、须显式启用的RTC启动采用。系统时间无效且配置唯一有效的DS1302与日历偏移时,启动可采用RTC日历;timeSource=rtc、timeQuality=rtc_unverified、synced=false。页面可显示日历,但不把它当作网络已同步;HTTPS时间请求仍须现有SNTP bootstrap成功,SD记录的wallEpochMs保持null,动作37也拒绝把RTC-only时间当校准反写。完整软件与现场仍待验收,详见RTC启动时间消费边界。
页面的手动同步调用 POST /api/device/time/sync 并可能修改系统时间。确认需要校时后再执行;结果同时核对 data.syncRequestSucceeded 和新的时间质量,顶层 success 不是“本次已经校时成功”的充分证据。
Web手动同步接口目前不直接发布ntp_synced事件,不能承诺按下按钮立即执行RTC写回规则。该事件可由后台接受的网络同步或符合请求匹配检查的MQTT时间响应触发;RTC启动采用不发这个事件,事件名字也不证明来源认证或精度。
每日定时规则
当前外设执行支持“间隔触发”和“每日时间点”,没有Cron表达式输入。每天06:00执行的配置方式:
- 在“外设执行”新建规则,初始保持禁用。
- 触发类型选择“定时触发”,定时模式选择“每日时间点”,执行时间填
06:00。 - 选择已配置的目标及其实际支持的动作,再核对输出极性、时区和现场条件。
- 现场确认后决定是否启用;执行轨迹、设备动作和物理反馈分别验收。
每日时间点使用系统本地日历,不直接读取DS1302,也不强制要求synced=true。显式启用RTC启动采用后,有效日历可能让已启用的每日规则开始匹配,须一并核对日程、时区和输出。这不代表来源质量或走时精度已经验收。每5分钟一次可使用间隔 300 秒;间隔仍按单调时钟触发,不保证与墙钟整5分钟对齐。
2026-10-04每日去重候选保留本次启动内每个日程已接纳的最大本地日期,只在更晚日期精确命中HH:mm时接纳。时钟回拨后重访同日不会重复,前跳错过分钟不补跑;资源/队列拒绝不消费日期,仍在分钟内可重试。接纳后的动作即使失败也不会自动重放。相同HH:mm的编辑/重排及停启保留水位;更改HH:mm、新建/重新加载规则或重新启动会建立新状态。
若曾在错误的未来日期接纳日程,时钟纠正后会抑制到超过该日期;不能自动忘记已接纳事实。需要重置时,先核对输出与执行轨迹,再明确重新启动或更改日程。此状态不持久化,不能提供跨重启永久一次保证;新增真实方法回归尚未集中运行,现场输出仍为NOT_RUN。
显示与外接RTC的边界
TM1637支持“显示数字”“显示文本”和“清屏”等动作。当前没有“显示时间”动作,也没有将系统时钟自动绑定到TM1637的配置;填写固定 12:34 仅显示给定内容,不会自动每秒更新时间或闪烁冒号。
外接RTC的接线与动作35/36/37见 DS1302 RTC示例。动作36可读取无时区日历并上报文本;动作37须明确选择复制系统本地时间,不会发起NTP,也不自动反向设置系统时钟。
注意事项
- 离线时系统可以继续计时,但时间来源会随年龄失鲜;断电、重启和后续恢复分别确认。
- 不提供未经目标板实测的±50ms或ppm精度保证。
- 本页无需额外RTC硬件;需要断电保持时,另行核对DS1302、电池类型与充电设置。

