设备时间同步(NTP)

更新时间:

设备时间同步(NTP)

物联网平台提供NTP服务,为资源受限的嵌入式设备,解决无法实时地获取服务端时间的问题。

原理介绍

物联网平台的NTP服务,借鉴NTP协议原理,将物联网平台作为NTP服务器。高精准度的时间校正流程如下:

  1. 设备端通过指定Topic向物联网平台发送消息,会携带发送时间deviceSendTime

  2. 物联网平台接收设备端消息后,回复消息中,会增加接收消息的时间serverRecvTime和回复消息的时间serverSendTime

  3. 设备端接收到物联网平台回复,会根据本地时间,给出接收回复的时间deviceRecvTime

  4. 根据以上出现的4个时间,计算设备端与物联网平台的时间差,得出设备端获取到的,服务端当前的精确时间Time

重要

仅当设备端成功接入物联网平台后,才能通过NTP服务进行时间校准。

若嵌入式设备未接入物联网平台,设备上电后,无法通过NTP服务进行时间校准,则TSL建连过程中,证书时间校验会失败。

通信的Topic

上行(Alink JSON)。

设备向云端请求获取时间戳

请求Topic:/ext/ntp/${ProductID}/${HardwareID}/request

响应Topic:/ext/ntp/${ProductID}/${HardwareID}/response

其中,${ProductID}${HardwareID}是设备证书中的ProductID和HardwareID,您可在物联网平台控制台设备详情页面获取。

请求数据格式:

{
    "deviceSendTime":"1571724098000"
}

响应数据格式:

{
    "deviceSendTime":"1571724098000",
    "serverRecvTime":"1571724098110",
    "serverSendTime":"1571724098115"
}

如何使用

  1. 设备端计算出服务端当前精确的Unix时间。

假设基于请求的时延和响应的时延相同,设备端收到服务端的时间即${deviceRecvTime},则设备上的精确时间为:(${serverRecvTime}+${serverSendTime}+${deviceRecvTime}-${deviceSendTime})/2

  1. 如果设备端无时间戳,可以发送一个空请求设备空对象请求。

设备空对象请求。

{
}

平台返回时间戳。

{
    "serverRecvTime":"1571724098110",
    "serverSendTime":"1571724098115"
}

如果设备对时间精度要求不高(允许10ms~30ms的误差),可以直接使用serverRecvTime或serverSendTime