一、功能概述
·请求 Topic(用于发布):$sys/operation/${ProductId}/${DeviceName}。
·响应 Topic(用于订阅):$sys/operation/result/${ProductId}/${DeviceName}。
二、实现原理
物联网通信平台借鉴 NTP 协议原理,将平台作为 NTP 服务器。设备端向平台请求时,平台返回的 NTP 时间。设备端收到返回后,再结合请求时间和接收时间,一起计算出当前精确时间。
三、操作步骤
1. 设备端通过 MQTT 协议发布一条消息到$sys/operation/${ProductId}/${DeviceName},请求平台下发 NTP 时间,同时设备端记录请求时间 deviceSendtime,请求消息为 json 格式,内容如下:
{ "type": "get", "resource": [ "time" ]}
2. 平台通过$sys/operation/result/${ProductId}/${DeviceName}返回 NTP 时间,同时设备端记录接收时间 deviceRecvtime,返回消息为 json 格式,内容如下:
{ "type": "get", "time": 1621562342, "ntptime1": 1621562342773, "ntptime2": 1621562342773}
3. 通过设备端收到的 NTP 时间(${ntptime1} + ${ntptime2})、接收时间(${deviceRecvtime})和请求时间(${deviceSendtime}),一起计算精确时间,方法如下:
精确时间 =(${ntptime1} + ${ntptime2} + ${deviceRecvtime} – ${deviceSendtime}) / 2