阿里云IoT套件中MQTT协议的使用

嘎子 其他开发 2017-05-28 6,583 次浏览 , 没有评论

今天,阿里云给我发来邮件,说我申请的IoT套件已经可以申请了,虽然我不记得自己什么时候申请过了,但请我试用就试用一下呗。我看这个阿里云的这个东东有两个节点,一个是“华东2节点”,还有一个是“杭州节点”。这两个节点的接入方法好像有什么不太一样,但具体自己也没有搞太清楚,由于自己是分配在了“华东2节点”,所以自己只研究了华东2节点。

至于建产品,建设备什么的我就不说了,官方的文档这些还是说的挺清楚的,我想说的主要问题是aliyun的MQTT协议与公开的MQTT协议有什么不同。在阅读此文章之前,我默认的认为读者是有一定的MQTT协议的认知的,如果对这个协议还不太清楚,请参照MQTT。MQTT是一种公开的协议,大家都知道连接到一个MQTT的Broker上,一般需要5点信息:主机,端口,clientID,userName和password(当然,部分服务器并不对clientID、userName和password中的一项或几项进行约束)。

不同的报务商提供服务时一般都在这5点的做文章。比方说,在文章通过Paho客户端接入OneNet中就介绍了中国移动的MQTT协议是使用固定的主机和端口,然后用产品、设备的id或鉴权信息来填充clientID、userName和password。OneNet的这种做法是一种比较常见,比较简单的解决方案。但其也存在一定的信息泄漏的风险。而阿里去采用了一种相对更加安全的方案。

阿里云的接入分成了两步走,分别叫做设备认证和接入协议。

一、设备认证

设备认证的过程在本质上就是通过控制台上的productKey、deviceName、diviceID和deviceSecret来获取上面我所说的5项内容的过程。具体细节请参照:设备认证_设备基于MQTT接入_设备端接入手册。从参考文章上看,通过https请求就可以得到上面5个参数中的4个,而对clientID没有进行特别的要求。但在给出的SDK代码中,看到官方给出的对clientID的处理方式是:

既然文档中没有明确要求clientID,应该是可以任意设置的,但在没有特殊要求的时候建议使用官方的方式。

二、接入协议

有了第一步的铺垫,第二步就相当简单了,这里不再多说。

三、阿里云使用此种方法的优劣

优势主要有两点:

1、安全性的提高。多了一次设备认证的过程,安全性有明显提高。

2、便于服务器升级。如果连接服务器,端口,userName,password更改甚至都不需要升级程序,只要升级设备认证服务器即可。

劣势:

程序的通用性降低,因为多了一次设备认证,多了一次请求。

四、阿里云现在的SDK支持

刚才又仔细的看了一下“华东2节点”的SDK支持,可以说是非常不完善的,毕竟是刚上线的,可能后期还会再更新。

现在的SDK只支持linux C和Java,而这两种对我们来说是远远不够的,主要是需要在单片机中的支持才更好。

当然,他的“杭州节点”里面SDK支持的平台更多一些,也支持了一些主流的嵌入式操作系统。依此来看,以后阿里云肯定会实现这些SDK的,毕竟现在还在测试阶段,正式发布相信会好很多。但“杭州节点”也没有实现自己最喜欢的mbed平台,看后期正式上线后有没有支持吧,如果没有,我会想办法移植一个给大家使用。现在平台还没有完全稳定,所以先不着急。

原创文章,文章首发于:Riley Ge (@rileyge) — Steemit

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: 阿里云IoT套件中MQTT协议的使用

相关主题

说点什么

您将是第一位评论人!

提醒
avatar
回顶部