lwIP TCP/IP 协议栈笔记之二十一: 百度天工物和阿里云物联 IOT接入平台
目录
1. 百度天工物接入
1.1 物接入简介
物接入(IoT Hub)是面向物联网领域开发者的全托管云服务,通过主流的物联网协议(如MQTT)进行通信,可以在智能设备与云端之间建立安全的双向连接,快速实现物联网项目。支持亿级并发连接和消息数,支持海量设备与云端安全可靠的双向连接,无缝对接天工平台和百度云的各项产品和服务。物接入分为设备型和数据型两种项目类型,我们在这里使用数据型项目类型,传输一些温湿度数据,同时可以无缝对接时序数据库TSDB、物可视等,将数据实时显示出来,同时我们采用MQTT 协议与云端进行通讯。
1.2 使用 IOT HUB
最好的使用指导莫过于官方帮助文档,因此,在此简要说明。
详见官方文档:https://cloud.baidu.com/doc/IOT/index.html
在使用物接入服务前,必须要创建一个百度云账号用于管理我们的设备,所有的设备信息都是在云端后台进行管理的,地址:https://console.bce.baidu.com/iot2/hub/。
在使用IoT Hub 之前应先创建计费套餐并设定每个月收发消息的流量额度,每个用户只能创建一个计费套餐,所有项目将共享该套餐的额度,目前IoT Hub 的计费是很便宜的,每个月的前1000000 条消息是免费的,更多的消息数量请自行参考IoT Hub 的收费说明。
登录后主界面
1.2.1 创建项目
IoT Hub 是用于物联网设备的后台管理的,将设备接入IoT Hub 的第二步就是创建一个项目,每个项目会对应一个接入点(endpoint),一个项目就表示一个完整的物接入服务,首先登录物接入控制台页面:https://console.bce.baidu.com/iot2/hub/project/list,点击“创建项目”,填写需要创建 IoT Hub 服务的项目名称、选择项目类型为数据型,并提交即可,创建的项目,默认具有多种通信方式,我们暂时只关注TCP 连接方式即可,采用MQTT 协议与云端交互的,端口号是1883 。
补充说明一点:通过项目可以将不同项目的设备进行隔离和管理,一个项目下允许有多个用户(设备),用户与身份进行绑定,而每个身份需要绑定一个策略,而策略下可以创建多个不同的主题,因此一个设备可以订阅多个不同的主题,并且同一个项目下的主题是共享的,所有的设备均可进行订阅。
1.2.2 创建策略
点击“endpoint01”,进入项目里面,首先创建一个策略(简单来说就是主题),输入对应的名称与主题,选择发布与订阅权限,当创建完成后,项目下的设备就可以订阅这个主题。
1.2.3 创建身份与创建用户
身份是设备连接IoT Hub 的重要途径,这里面包含了秘钥,标识着设备能否通过IoT Hub 的验证,这也是安全保障的主要操作,首先点击“身份列表”,再点击“创建身份”,然后根据自己的信息进行填写,在这里要注意的是需要勾选密码验证,再选择之前我们创建的策略进行绑定(如果没有则必须创建),当身份创建完成时候生成的秘钥是用于开发板连接IoT Hub 的必要条件,记住不能丢失,如果丢失了就找不回来了,在创建的时候就把它保存好。
在创建用户的时候,只需要把用户名设置好,然后再绑定身份即可,这样子一个设备就对应到云端了,并且可以向策略中设置的主题发布消息和订阅主题.
当所有的东西都创建完成,我们点击身份操作中的“测试连接”,在网页上测试一下我们能不能正常进行MQTT 通信、发布与定阅主题,在页面中输入刚刚保存的秘钥,点击“connect”进行连接测试,如果前面的步骤全部做完,并且秘钥是正确的 ,就可以发现我们的连接是正常的,然后我们订阅一下之前创建策略时候的主题名字,再向这个主题发送一个消息,消息的内容由自己定义.
1.2.4 MQTT 软件测试连接
MQTT.fx 是一款基于Eclipse Paho,使用Java 语言编写的MQTT 客户端工具,支持通过Topic 订阅和发布消息。打开软件,点击设置,来配置客户端的基本信息,填写用户名与密码,进行连接.
官方下载链接:http://mqttfx.jensd.de/index.php/download
配置完成之后,可以尝试连接,点击Connetc,当连接成功后,下面的Publish 与Subscribe 等选项是可以选择的,那么我们点击订阅选项Subscribe,输入订阅的主题,然后点击subscribe,可以发现已经成功订阅 。
但是此时还未有消息,因此我们需要去Publish 选项中向这个主题发布消息,当发布成功后,订阅的主题就会回显出服务器发送给客户端的消息。
1.2.5 MQTT 软件测试连接
不做太多说明,可以参考MQTT移植及JSON,数据通过JSON发到IOT HUB。
1.2.6 IOT HUB的规则引擎和数据可视化
什么是规则引擎?简单来说就是一个中间层,它在软件上的实现能省去很多if/else 等判断的嵌套。但是我们现在说的IoT Hub 规则引擎是为了让业务逻辑更加清晰,从海量的物联网数据筛选出适合的数据,并将其进行储存、转发、汇报等操作,让业务规则也变得更加简单,因为在物联网中,数据量是非常巨大的,业务规则更是多种多样,IoT Hub 规则引擎就是需要将海量的数据与千奇百怪的业务规则变得简单,以适应业务规则的多样性,我们只需要在后台设置一些规则,就能让数据产生不同的作用。而物联网产品会产生大量的数据上报到云端,这些数据往往对应着不同的应用分析场景,如监控厂区的温度湿度监控点,每分钟都会有温度和湿度数据传往云端,对于这些数据,我们往往希望它们发挥不同的作用,并且实时性要非常好,以便在出现问题的时候第一时间能得到告警作用,例如以下应用场景:
1. 实时告警异常的数据,如温度湿度过高或者过低;
2. 分析数据,统计两个小时内的温度最大最小和均值等;
3. 将全部的数据做冷备份以便查询;
4. 对去除异常数据之后的正常数据做数据分析和预测等等。
而规则引擎就是通过灵活的设定规则,将设备传上云端的数据,送往不同的数据目的地(如监控告警设备、时序数据库TSDB、Kafka、对象存储BOS 等)以达到不同的业务目标。
详细使用见官方文档。
数据可视化,顾名思义,了解一下,详细见官方文档。
2. 阿里云物联
既然懂得专门连接百度天工物接入,那么连接阿里云物联其实也是一样的,因为都是基于MQTT 协议进行通信的,首先打开阿里云物联:https://iot.console.aliyun.com/product,创建账号并登陆,而且阿里云物联是需要通过实名认证才能使用的。相对于百度天工物接入,阿里云物联的安全性更好,因为即使是客户端连接服务器都需要各种验证,还使用哈希加密算法进行加密。
2.1 使用阿里云物联
首先在“产品”信息中创建一个产品,每个产品下允许有多个设备,产品就是设备的集合,通常是一组具有相同功能定义的设备集合。例如:产品指同一个型号的产品,设备就是该型号下的某个设备。操作步骤“创建产品”->“高级产品”->填写产品信息,联网方式选择“以太网”,这样子一个产品就创建完成。
然后在“设备”选项中添加一个设备,比如我们添加一个“dev_temp_hum”设备,是开发板的温湿度数据采集设备,在创建完成后,会有设备证书,这个一定要保存好,丢失了就找不回来了 .
最后我们定义一个主题(Topic 类列表),让设备能对这个主题进行订阅或者发布操作,回到“产品”选项,选择“Topic 类列表”,定义“Topic 类列表”,再填写“Topic 类列表”的信息即可,注意选择设备的操作权限“发布和订阅”,这点很重要,如果没有权限,设备是无法对这个主题进行操作的,至此,一个产品与设备就创建完成了,当然,为了更好调试,我们可以尝试创建多个设备,以备在后续进行调试。
2.2 MQTT FX连接测试
在创建完成后,可以通过MQTT 软件来测试一下能否正常连接,在这一步之前必须已在物联网平台控制台中创建产品和设备,并获取设备证书信息(ProductKey、DeviceName和DeviceSerect)。
参数看起来很简单,但是它的组成却不简单,简单介绍,详细见官方文档。
小工具链接:https://download.****.net/download/xiewinter/11838002
把信息全部填写完毕,可以测试连接,点击Connect,然后在订阅选项Subscribe 中,输入订阅的主题“/a1MZHjK2SCF/fire_temp_hum/user/temp_hum”,这个主题可以在“设备”选项中的“Topic 列表”得到,然后点击subscribe,可以发现已经成功订阅,然后对这个主题进行发布操作,我们就能看到订阅已经收到发布的消息,表明MQTT 通信成功 .
2.4 阿里云物联的规则引擎
与百度的规则引擎作用是一样的,可以将收到的消息进行不同的业务处理,比如我们也利用规则引擎监控开发板的稳定数据。首先,打开规则引擎设置页面:https://iot.console.aliyun.com/rule/list,点击创建一个规则,填写基本的规则信息,并且选择数据的格式是JSON 格式.
详情见官方文档。在此不做赘述。
链接阿里云例程:https://download.****.net/download/xiewinter/11838011
注:随着IOT 发展,各种物联平台很多,但大同小异。