天天看點

阿裡雲物聯網平台進階功能之NTP時鐘同步

概述

物聯網平台提供NTP服務,解決嵌入式裝置資源受限,系統不包含NTP服務,端上沒有精确時間戳的問題。

物聯網平台借鑒NTP協定原理,将雲端作為NTP伺服器。裝置端發送一個特定Topic給雲端,payload中帶上發送時間。雲端回複時在payload中加上雲端的接收時間和發送時間。裝置端收到回複後,再結合自己本地目前時間,得出一共4個時間。一起計算出裝置端與雲端的時間差,進而得出端上目前的精确時間。

本文通過MQTT.fx模拟裝置端進行功能測試,工具接入請參考

MQTT.fx接入物聯網平台使用說明

使用說明

  • 相關Topic
  1. /ext/ntp/${YourProductKey}/${YourDeviceName}/request

  2. /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:

    /ext/ntp/${YourProductKey}/${YourDeviceName}/request

    發送一條QoS=0的消息,payload中帶上裝置目前的時間戳,機關為毫秒。

    {"deviceSendTime":"1592361428000"}

阿裡雲物聯網平台進階功能之NTP時鐘同步
  • 裝置端收到服務端回複的消息

    {"deviceSendTime":"1592361428000","serverSendTime":"1592366463548","serverRecvTime":"1592366463548"}

阿裡雲物聯網平台進階功能之NTP時鐘同步
  • 裝置端計算出目前精确的unix時間

    裝置端收到服務端的時間記為${deviceRecvTime},則裝置上的精确時間為:(${serverRecvTime} + ${serverSendTime} + ${deviceRecvTime} - ${deviceSendTime}) / 2

官方文檔

請參考:

NTP服務

繼續閱讀