概述
物聯網平台提供NTP服務,解決嵌入式裝置資源受限,系統不包含NTP服務,端上沒有精确時間戳的問題。
物聯網平台借鑒NTP協定原理,将雲端作為NTP伺服器。裝置端發送一個特定Topic給雲端,payload中帶上發送時間。雲端回複時在payload中加上雲端的接收時間和發送時間。裝置端收到回複後,再結合自己本地目前時間,得出一共4個時間。一起計算出裝置端與雲端的時間差,進而得出端上目前的精确時間。
本文通過MQTT.fx模拟裝置端進行功能測試,工具接入請參考
MQTT.fx接入物聯網平台使用說明使用說明
- 相關Topic
-
/ext/ntp/${YourProductKey}/${YourDeviceName}/request
-
/ext/ntp/${YourProductKey}/${YourDeviceName}/response
- 時間戳格式
{"deviceSendTime":"1571724098000"}
說明
1.時間戳數字的格式,支援Long和String。預設為Long類型。
2.NTP服務目前僅支援QoS=0的消息。
示例
- 通過MQTT.fx模拟裝置成功和平台進行連接配接
阿裡雲物聯網平台進階功能之NTP時鐘同步 - 裝置端訂閱Topic:
/ext/ntp/${YourProductKey}/${YourDeviceName}/response
阿裡雲物聯網平台進階功能之NTP時鐘同步 - 裝置端向Topic:
發送一條QoS=0的消息,payload中帶上裝置目前的時間戳,機關為毫秒。/ext/ntp/${YourProductKey}/${YourDeviceName}/request
{"deviceSendTime":"1592361428000"}
- 裝置端收到服務端回複的消息
{"deviceSendTime":"1592361428000","serverSendTime":"1592366463548","serverRecvTime":"1592366463548"}
-
裝置端計算出目前精确的unix時間
裝置端收到服務端的時間記為${deviceRecvTime},則裝置上的精确時間為:(${serverRecvTime} + ${serverSendTime} + ${deviceRecvTime} - ${deviceSendTime}) / 2
官方文檔
請參考:
NTP服務