Device本地时间 | Server时间 | |
Device发送 | 1000(deviceSendTime) | 1543475762985 |
Server接收 | 1025 | 1543475763010(serverRecvTime) |
Server发送 | 1035 | 1543475763020(serverSendTime) |
Device接收 | 1060(deviceRecvTime) | 1543475763045 |
同步后 | 1543475763045 | 1543475763045 |
原理图
注:误差存在于发送和接收传输过程时延不等
2.IoT平台设备端和服务端时钟同步实现
2.1 设备端Pub Topic
Topic格式 /ext/ntp/${productKey}/${deviceName}/request设备上报Payload内容: { "deviceSendTime":"1543475663000" }
2.2 设备端收到Sub Topic
Topic格式 /ext/ntp/${productKey}/${deviceName}/response云端响应Payload内容: { "deviceSendTime":"1000", "serverRecvTime":"1543475763010", "serverSendTime":"1543475763020" }
2.3 设备端接收到Sub的本地时间戳
"deviceRecvTime":1060
2.4 设备端与服务端时钟同步后时间
deviceTime = serverTime = (serverRecvTime + serverSendTime + deviceRecvTime - deviceSendTime) / 2即 1543475763045=(1543475763010+1543475763020+1060-1000)/2