401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLAir724UGA/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ZLAir724UGA/aly.html" width="100%"></iframe>

 

 

说明

这一节实现Android扫码绑定模组并通过阿里云物联网平台实现远程通信控制.

概要:

APP和单片机设备分别作为设备以动态注册方式连接阿里云物联网平台,然后通过规则引擎实现APP和设备之间通信.

此节教程是前面所有知识点的整合,希望用户按部就班的学习了前面的内容,然后再学习此节.

APP页面展示

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

云平台显示温湿度数据

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

测试准备

1.打开这节的APP工程和单片机工程

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

2. 登录自己的云平台点击产品的查看

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

3.打开动态注册按钮

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

4.查看自己产品的ProductSecret; ProductKey; 

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

5.修改单片机程序里面的参数 ProductSecret; ProductKey;

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

6.修改Android程序里面的参数 ProductSecret; ProductKey;

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

配置规则引擎

1.规则引擎 ,云产品流转,创建规则

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

2.选择编写 SQL

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

3.添加操作

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

4.注意①自己填写   ${TargetDevice}

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

5.启动规则

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

确认单片机工作正常

1.修改完成以后编译下载单片机程序,安装好手机卡和天线

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

2.如果日志看到订阅主题成功,说明已经自动注册并接入了平台

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

3.在平台上可以看到在相应的产品下面注册了设备

注:设备名字使用的是模组的IMEI号

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

确认Android工作正常

1.重新安装APP,运行APP会弹出注册页面.

注:接入的设备的名字做成了需要用户去填写

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

2.填写 111111(随意哈) 后点击 注册设备

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

3.注册成功将会跳转到主页(允许权限)

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

4.在平台上可以看到在相应的产品下面注册了设备

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

开始整体测试

1.点击APP右上方的菜单栏,选择 扫一扫

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

2.扫描模组上面的二维码

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

3.扫描成功以后将会在主页面添加一个设备

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

4.点击显示的设备,进入设备控制页面

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

5.点击右上角的开关控制继电器

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

6.用手拖动,可以看到板子上的灯随着拖动颜色的变化而变化

用手拖动,可以看到板子上的灯随着拖动颜色的变化而变化

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

整体通信流程说明

1,APP和设备通信协议(APP和设备通过自定义主题通信)

/*APP发送数据控制继电器*/ {"data":"switch","bit":"1","status":"-1"} //查询继电器状态 {"data":"switch","bit":"1","status":"1"}  //控制继电器吸合 {"data":"switch","bit":"1","status":"0"}  //控制继电器断开 //设备回复(根据继电器状态返回) {"data":"switch","bit":"1","status":"1"}  //控制继电器吸合 {"data":"switch","bit":"1","status":"0"}  //控制继电器断开

/*APP发送数据控制RGB灯*/ {"data":"rgb","red":20,"green":30,"blue":100} //控制RGB颜色

//APP查询所有数据(定时查询,直至查询到回复) {"data":"all"} //设备返回 {"data":"all","switch":{"bit":"1","status":"1"},"sensor":{"temperature":25,"humidity":75,"light":20000},"rgb":{"red":20,"green":30,"blue":100}}

 

2.通信流程详细说明

APP和单片机各自作为阿里云的设备接入阿里云服务器.

APP接入的名字为用户注册时填写的名字;

单片机接入的名字为模组的IMEI号;

APP 添加设备的时候添加的模组的IMEI号.

 

假设APP注册的设备的名字为: 111111

假设模组的IMEI为: 868591050594364

 

APP发布的主题: /a1m7er1nJbQ/111111/user/update

这个主题发给云平台以后,经过了转发规则里面的SQL语句

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

注: /a1m7er1nJbQ/+/user/update  (里面的 + 代表任意)

APP发布的主题为 /a1m7er1nJbQ/111111/user/update  所以,符合条件.便会提取这个主题里面的消息.

 

APP发布的消息为:(以控制继电器为例子)

{"TargetDevice":"868591050594364","DeviceName":"111111","data":"switch","bit":"1","status":"1"}

注:

TargetDevice 字段的值是APP添加的设备的名字

DeviceName 字段的值是APP本身设备的名字.

 

 然后下面的配置是对提取的消息进行操作

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

发布到另一个 Topic    /a1kalhdMH2Z/${TargetDevice}/user/get 

${TargetDevice}意思是提取消息里面字段为 TargetDevice 的字段值,然后替换上面的  ${TargetDevice}

咱的消息是 {"TargetDevice":"868591050594364","DeviceName":"111111","data":"switch","bit":"1","status":"1"}

所以最终消息转发给下面的主题(也就是单片机订阅的主题)

/a1kalhdMH2Z/868591050594364/user/get 

然后单片机就收到了消息 {"TargetDevice":"868591050594364","DeviceName":"111111","data":"switch","bit":"1","status":"1"}

 

单片机接收到消息以后,提取 "DeviceName":"111111"

然后用自己的发布主题发布消息  

发布的主题: /a1kalhdMH2Z/868591050594364/user/update

发布的消息: {"TargetDevice":"111111","DeviceName":"868591050594364","data":"switch","bit":"1","status":"1"}

 

TargetDevice 字段的值改为了 111111

DeviceName 字段的值为单片机设备的名字  868591050594364

 

消息发给了服务器,然后经过转发规则,同理 ,消息便会转发给了APP

最后APP 提取消息里面的数据,就完成了通信

 

单片机程序说明

1.注册,连接服务器

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

2.连接成功之后订阅主题

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

3.在MQTT回调函数里面接收处理和返回消息

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 4.如果继电器状态改变,上报继电器状态

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

5.定时上报温湿度数据(通过物模型主题上报到网页端)

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

单片机程序细节说明

1.为使设备可以同时和与其绑定的APP实现通信控制,代码中使用了 BufferRankOrder 记录APP设备名称

设备发送数据的时候轮训把数据发给和自己绑定的APP.

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

关于为啥要记录APP设备的信息?

因为如果多个用户同时在控制,设备必须把数据返回给每一个控制的APP.

如果谁控制就返回给谁数据,就会出现谁控制谁的页面有变化,其他人的控制页面没有变化的尴尬局面.

这对于产品而言就让用户难以接受.所以需要把数据返回给所有的APP.

 

但是也不能把所有的APP设备都记录下来,因为不合理.

需要把这些APP做个优先等级排序.经常控制的要靠前,不经常的靠后,基本上没影了的放到最后,直至丢弃

 

关于 BufferRankOrder  https://www.cnblogs.com/yangfengwu/p/14164215.html

假设有5个APP和单片机通信,APP设备的名字分别为: "111111","222222","333333","444444","555555"

假设这5个设备依次和单片机通信,1-5 (谁最后和单片机通信就把谁放到第一个位置.)

那么这些名字在BufferRankOrder内存里面的排序 "555555","444444","333333","222222","111111"

哪个APP不经常和设备通信,那么这个APP最终将会被挤掉.最终只留下经常和设备通信的.

 

 

 

Android程序详细说明

1.基本目录说明

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

1.控制页面

2.注册页面

3.sha计算mqtt密码

4.使用Litepal存储绑定的设备信息

5.正常运行时使用的MQTT程序

6.注册设备时使用的MQTT程序

7.存储注册的信息

 

2.如果APP没有注册,跳转到注册设备页面

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

3.点击按钮注册设备,并把注册信息存储以后跳转到主页面

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

4.获取注册的数据,组合MQTT参数,并执行连接

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

5.点击扫描二维码,进入扫描页面

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

7.扫码成功,携带着数据跳转到主页

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

8.MainActivity在onNewIntent中接收返回的数据

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 9.把数据存储到数据库,并刷新页面

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

 

10.点击设备,携带着提取点击的设备名字跳转到控制页面

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

10.获取APP设备的productKey和deviceName,并拼接其自定义的主题

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

11.获取传递进来的所点击的设备的名字,组合开关控制数据

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

13.APP订阅自身的自定义主题

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

14.定时请求设备数据

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

15.每隔300ms检测RGB是否需要调整

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 

16.点击按钮发送控制继电器指令

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

17.接收数据

401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

 

 401-STM32+Air724UG基本控制篇(阿里云物联网平台)-Android扫码绑定Air724UG并通过阿里云物联网平台实现远程通信控制

 

上一篇:002-STM32+Air724UG基本控制篇(阿里云物联网平台)-在阿里云物联网平台上一型一密动态注册设备(STM32+Air724UG)


下一篇:EVB_Air724UG_A13开发板使用指南