阿里云物联网平台高级功能之NTP时钟同步-阿里云开发者社区

开发者社区> 云服务技术课堂> 正文
登录阅读全文

阿里云物联网平台高级功能之NTP时钟同步

简介: 由于部分嵌入式设备资源受限,且系统本身不包含NTP服务,导致了在端上没有精确时间戳。阿里云物联网平台提供了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模拟设备成功和平台进行连接
    image.png
  • 设备端订阅Topic:/ext/ntp/${YourProductKey}/${YourDeviceName}/response
    image.png
  • 设备端向Topic:/ext/ntp/${YourProductKey}/${YourDeviceName}/request 发送一条QoS=0的消息,payload中带上设备当前的时间戳,单位为毫秒。
    {"deviceSendTime":"1592361428000"}

image.png

  • 设备端收到服务端回复的消息
    {"deviceSendTime":"1592361428000","serverSendTime":"1592366463548","serverRecvTime":"1592366463548"}

image.png

  • 设备端计算出当前精确的unix时间
    设备端收到服务端的时间记为${deviceRecvTime},则设备上的精确时间为:(${serverRecvTime} + ${serverSendTime} + ${deviceRecvTime} - ${deviceSendTime}) / 2

官方文档

请参考:NTP服务

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

云服务技术课堂,各类技术课程、最佳实践输出,来好好听课吧!

官方博客