【阿里云IoT+YF3300】2.阿里云IoT云端通信Alink协议介绍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yefanqiu/article/details/92589781

如果单单只有MQTT协议,也许很难支撑起阿里这个IoT大厦。Alink协议的出现,不仅仅是数据从传感端搬到云端,它就如基因图谱,它勾画了一个大厦的骨架,有了它,才有了IoT Studio,才有了大数据分析,才有了后续的一切可能。

MQTT从我的角度来说,相当于以前编程思想中的面向过程,而Alink 的出现,则把编程思想由原来的面向过程带到了面向对象的时代。

最早了解Alink协议是在2017年年底,那个时候Alink协议才0.6版,仅有比较核心的功能,并且有些协议描述的,当时平台上还没有支持完善。不过不到一年多的时间,Alink协议越来越完善了,功能也越来越强大了。

最新的Alink协议,在阿里云物联网平台上的帮助页面,有比较详细的描述:https://help.aliyun.com/document_detail/90459.html?spm=a2c4g.11186623.6.660.4b969bb89pkGOd

为了便于初次接触Alink协议的人理解,我这里还是简要做一些说明。

在官方文档,Alink有一个比较明确的定义: Alink协议是针对物联网开发领域设计的一种数据交换规范,数据格式是JSON,用于设备端和物联网平台的双向通信,更便捷地实现和规范了设备端和物联网平台之间的业务数据交互。

关于Alink协议有几个很重要的概念和内容需要熟悉。

第一个最最重要的概念就是“三元组”。我们要是在阿里平台上创建一个物模型,并且把数据上传到对应的实例。我们第一步需要创建一个“产品”。产品包含属性、事件和服务(这个后续的文章中,我们会比较详细的介绍这部分内容)。产品有名称,也有一个叫产品秘钥(ProductKey)的自动生成的字符串。基于这个产品,我们就可以创建若干个设备了。设备有名称(DeviceName)和设备秘钥(DeviceSecret)。产品和设备的关系,类似面向对象编程语言的类和类实例的关系。

其中,ProductKeyDeviceNameDeviceSecret这三者,就是著名的三元组。三元组和实际的一个物理设备一一对应。 万一现实中出现几个三元组一样的设备,那么后上网的设备,会让前一个设备下线。同时仅有一个这样的设备在线。

我们知道了三元组的概念,那么接下来我们有两个名词需要解释一下了。

第一个就是“一机一密”,顾名思义,就是一个设备(机器)一个秘钥。也就是一个设备嵌入唯一的三元组信息。产品秘钥标识产品的类型,设备名称和设备秘钥对应具体的一个云端设备。这样的模式是安全,每个设备对应唯一的秘钥,缺点是,每个设备必须要预先写入这唯一的三元组信息,对设备的量产带来了不方便。

针对量产的设备,为了便于大量设备生产出来不需要专门一一写入对应的三元组信息。提出了第二个名词“一型一密”,同理,顾名思义,一型一密,就是一种产品型号一种秘钥。这个时候只要是一种产品就只写入产品秘钥即可。大量的设备写入的信息是一样的,有利于设备的大批量生产。

“一型一密”的设备数据上传的时候要稍微麻烦一些,设备的名称必须是相对唯一的,可以自定义的信息,比如MAC地址或者MCUID号之类,把这个设备名称上传到阿里云IoT平台,服务端会自动下发设备的秘钥,这个过程称之为“动态注册”,动态注册其实值需要一次,可以把获取的信息进行保存,下次上电就不需要动态注册了。最后设备凑齐三元组信息,然后进行正常的登录即可。

第二个比较重要的概念是“透明传输”。为什么把“透明传输”作为第二个比较重要的概念呢,其实未来轻量级的设备或者其他异构设备,很难说一上来就直接支持Alink协议的。透明传输+云端脚本共同构成了一个桥,完成了到Alink协议的嬗变。好处是把硬件层面的问题转换为云端脚本的问题,此外就是透明传输大都是二进制协议,通信的数据量也相对少了,通信比较快捷,也省流量了。

第三个概念就是“属性、事件和服务”,其实这是三个概念,不过我们这里一起说了,后续的文章会分别进行详细的阐述。属性、事件和服务,完全对应了“类”的属性、事件和方法的概念。

属性有上传和下发,设备可以把设备中采集的各种传感器数据上传到云端IoT平台,也可以在IoT平台去操作一些属性,比如一些继电器属性,可以远程控制继电器的闭和开。

事件相对简单,可以自定义各种类型,从设备中根据必要的条件进行上传,比如设备电量不够了,或者其他报警类信息等等。

服务,其实对应了一系列方法,有入参(也就是输入的若干参数),也有出参(返回的若干参数),这个服务远程下发到设备后,设备执行对应的方法(可以根据参数进行执行),执行完毕后,可以返回必要的数据。

此外需要了解的一个概念是“同步”和“异步”,配置服务的时候,可以配置服务的操作模式是“同步”还是“异步”。

想体验阿里云IoT平台的网友,可以单击如下链接:

https://dev.iot.aliyun.com/sale?source=deveco_partner_yefan

 

展开阅读全文

IoT协议: SharkMQTT 与MQTT

06-03

rn [b] [size=16px]MQTT协议[/size][/b]rnrn[b][size=18px]MQTT背景:[/size][/b]rnrn IBM公司的Andy Stanford-Clark博士以及Arcom公司的ArlenNipper博士于1999年发明了MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)技术。Andy Stanford-Clark博士称,MQTT将在未来呈现爆炸式的增长。rn MQTT的话题是Andy Stanford-Clark博士和ArlenNipper博士谈论开源物联网平台Pachube时提到的。Stanford-Clark认为Pachube很酷,但其不足之处是不具备真正的推送功能。你需要不断不断轮询才能得到即时数据。这正是MQTT能够实现的,他提到了使用推送通信系统的石油管道检测系统。rnrn[b][size=18px]MQTT简介:[/size][/b]rnrn MQTT是轻量级基于代理的发布/订阅的消息传输协议,它可以通过很少的代码和带宽与远程设备连接。例如通过卫星和代理连接,通过拨号和医疗保健提供者连接,以及在一些自动化或小型设备上,而且由于小巧,省电,协议开销小和能高效的向一和多个接收者传递信息,故同样适用于移动应用设备上。rnrn[b][size=18px]MQTT的特征:[/size][/b]rnrn •轻量级的 machine-to-machine 通信协议。rn •publish/subscribe模式。rn •基于TCP/IP。rn •支持QoS。rn •适合于低带宽、不可靠连接、嵌入式设备、CPU内存资源紧张。rn •是一种比较不错的Android消息推送方案。rn •MQTT将会成为物联网的重要协议。rnrn[b][size=18px]MQTT应用:[/size][/b]rnrn IBM和St. Jude医疗中心使用MQTT开发了一套Merlin系统,该系统应用了用于家庭保健的传感器。St. Jude医疗中心设计了一个叫做Merlin@home的心脏装置,这种无线发射器可以用来监控那些已经植入复律-除颤器和起搏器(两者都是基本的传感器)的心脏病人。该产品利用MQTT把病人的即时更新信息传给医生/医院,然后医院进行保存。这样,病人就不用亲自去医院检查心脏了,医生可以随时查看病人的数据,给出建议。这样,病人在家里就可以进行检查。IBM称该发射器包括一个大型触摸屏,一个嵌入式键盘平台,以及一个Linux操作系统。在未来几年,MQTT的应用会越来越广,值得关注。通过MQTT协议,目前已经扩展出了数十个MQTT服务器端程序,可以通过LSP,PHP,Java,Python,C,C#等系统语言来向MQTT发送相关消息。此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。据Cmstop主要负责消息推送的高级研发工程师称,随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来,MQTT将会进入到我们生活的各方面。如果需要下载MQTT服务器端,可以直接去MQTT官方网站点击software进行下载MQTT协议衍生出来的各个不同版本。rnrn[b][size=18px]MQTT特点:[/size][/b]rnrn MQTT协议是为大量计算,能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:rnrn1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;rnrn2、对负载内容屏蔽的消息传输;rnrn3、使用 TCP/IP 提供网络连接;rnrn4、有三种消息发布服务质量:“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。“至少一次”,确保消息到达,但消息重复可能会发生。“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。rnrn5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;rnrn6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;rnrn[b][size=18px]SharkMQTT协议[/size][/b]rnrn SharkMQTT是个专为嵌入式系统设计的非常紧凑的安全MQTT client 库。SharkMQTT与精简的嵌入式SSL库相结合,利用SSL证书为系统提供军事级的认证技术和数据加密技术。SSL证书为设备认证MQTT broker(MQTT服务器端的管理程序)和MQTT broker认证设备提供非常强大的认证机制——它比标准的MQTT认证方案更加强大。rnrn[img=https://img-bbs.csdn.net/upload/201606/03/1464944540_412439.png][/img]rn[img=https://img-bbs.csdn.net/upload/201606/03/1464944573_598815.png][/img]rnrn[size=18px]MQTT 移动应用:[/size]rnrn 1、 Facebook Messenger;rn 2、信息推送 (可给第三方处理数据);rn 3、与HTTP相比, 使用SharkMQTT进行信息推送功耗更低;rnrn 充分理解了MQTT原理后,SharkMQTT就很好理解了。实际上SharkMQTT就是个安全版本的MQTT Client,是在MQTT上集成SharkSS库,以确保加密通信链路是安全,可靠的。rnrnrn 论坛

没有更多推荐了,返回首页