NTP时间同步
约 457 字大约 2 分钟
2025-03-03
简介
在物联网领域中,NTP时间同步的主要目的是确保物联网系统中的各个设备具有高度准确和一致的时间。它旨在解决分布式系统中的时间同步问题,因为不同设备的时钟可能会由于内部时钟误差、网络延迟、时钟漂移等原因而产生差异。NTP通过提供精确的时间参考源,使得网络中的设备可以校准自己的时钟,以保持统一的时间标准。
时钟校准及纠正
NTP使用算法来估算网络延迟和时钟漂移,并调整设备的时钟以与参考时间源同步。它通过测量网络延迟和时钟漂移来计算校正因子,然后应用这些因子来调整本地时钟。
校准时间公式推导
deviceSendTime标记为t1,t2、t3、t4类似,如下:
deviceSendTime(t1) -> serverRecvTime(t2)
deviceRecvTime(t4) <- serverSendTime(t3)消息链路上的延迟:
delay = [(t4-t1) - (t3-t2)] / 2设备端使用如下公式校准时间:
设备校准后时间 = t4 + offset
= t3 + delay
= (t4 + t3 + t2 - t1) / 2
= (deviceRecvTime + serverSendTime + serverRecvTime - deviceSendTime) / 2参数说明
- {productID}:产品ID。
- {deviceName}:设备ID。
- 通用请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| msgToken | String | 是 | 用于上下行消息配对标识 |
| sys.noAsk | bool | 否 | 云端是否回复设备 |
| sys.retMsg | bool | 否 | 是否返回错误信息,字段为msg |
| 示例: |
{
"method": "reportInfo",
"msgToken": "1234567",
"sys": {
"noAsk": false,
"retMsg": true
}
}消息格式
设备NTP时间同步上行请求
Topic: $ext/up/ntp/{ProductID}/{DeviceName}
{
"msgToken": "xxxxx",
"method": "getNtp",
"timestamp": 1571724098000
}云端NTP时间同步下行响应
Topic: $ext/down/ntp/{ProductID}/{DeviceName}
{
"method": "getNtpReply",
"msgToken": "xxxxx",
"timestamp": 1687764280156,
"code": 200,
"msg": "成功",
"data": {
"deviceSendTime": 1571724098000,
"serverRecvTime": 1687764280142
}
}更新日志
2025/12/28 18:01
查看所有更新日志
bddea-docs: 更新文档结构、添加新内容并优化现有文档于706e5-doc于ded7d-doc于6fa0c-doc于80b39-doc于d4fa0-doc: 更换皮肤到最新版于82830-doc于4066c-doc: 完善文档于8794f-feat: 完善项目`于df9b4-初始化于
