Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 418|回复: 0

4.14-物联网篇(阿里云物联网平台)-Android和ESP8266连接阿里云...

[复制链接]

56

主题

56

帖子

224

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
224
发表于 2020-10-27 23:20:45 | 显示全部楼层 |阅读模式



实现的功能
Android和ESP8266连接阿里云平台,并实现Android和ESP8266之间通信控制.

819239-20201014211201281-784089535.png




819239-20201014211112126-1097104516.png



开通阿里云物联网平台
https://www.aliyun.com/
1.搜索阿里云物联网平台(如果没有开通请自行开通)

819239-20200824115309833-653558195.png



创建产品(并在产品下面添加设备)
1.创建产品

819239-20200824115432900-159903433.png


2.设置下产品的名称
819239-20201014215842417-1073497064.png


819239-20201014220137785-192013053.png




3.添加设备,设备名字我写的是ESP8266
819239-20201014220233683-1193238413.png



819239-20201014220253309-475442956.png



4.点击查看
819239-20201014220330199-1817678232.png



819239-20201014220659486-415685996.png




819239-20201014221058386-527288947.png



注意地域!后面有说明!



5.打开ESP8266源码,并修改上面的三个参数
819239-20201014220812936-1413254266.png



819239-20201014221832874-202574248.png



6.关于地域,请参考
819239-20201014221355390-495906741.png




7.我的是上海,所以填写的是  cn-shanghai
819239-20201014221417108-17865381.png




8.修改连接路由器的信息
819239-20201014221534685-800889133.png



9.下载并查看打印
打印连接成功,并在每个一段时间发布消息.
然后后台上面显示上线
819239-20201014222037380-1436188282.png



819239-20201014222323300-360855722.png



再添加一个设备,作为Android接入
1.添加设备,设备名字我写的是 Android
819239-20201014222423969-392550887.png



819239-20201014222442491-1150938136.png


2.点击查看
819239-20201014222506976-1533807148.png



819239-20201014222541877-1894159124.png


3.打开本节Android源码,并修改上面相应的参数
819239-20201014222611909-775503157.png



819239-20201014222735409-1240078043.png



4.安装到手机并打开,如果日志打印有 Connect Success
说明已经接入了阿里云
819239-20201014222956285-444937223.png





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

819239-20200912031959374-192547514.png

819239-20201014223349475-294972895.png



2.选择编写 SQL
819239-20201014223511824-744694506.png




819239-20201014223752495-914346206.png



3.添加操作
819239-20201014223821532-1082743446.png




4.注意①自己填写   ${TargetDevice}
819239-20201014224030572-751526023.png



5.启动规则
819239-20201014224157303-724515269.png



819239-20201014224215486-1576624154.png





819239-20201014224237907-1036495858.png




点击APP右上角菜单,选择添加设备
1.点击添加设备
819239-20201014224555929-769251197.png




2.输入WiFi模块程序中使用的注册的设备的名字
819239-20201014224632487-37457354.png



3.然后点击确定,页面上将添加一个设备,点击这个设备
819239-20201014225031006-111477891.png



4.控制页面会显示当前ESP8266采集的温湿度数据,还有开关状态
819239-20201014225145710-967803854.png




5.控制继电器
819239-20201014225351255-2095507127.png     819239-20201014225427140-793756903.png







819239-20201014225549249-2114456000.png    819239-20201014225603223-1023803207.png







源码说明
1.基础的知识请用户看前面的4.10 - 4.13章节学习
2.根据用户填写的阿里云的设备信息,组合计算MQTT各个参数
819239-20201014231455440-1610276429.png


注意:MQTT的ClientID 计算方式是拼接的ESP8266的MAC地址
819239-20201014231652568-1462737292.png



3.APP添加设备以后发送给WiFi模块的数据格式如下:
发布的主题:/a1kalhdMH2Z/Android/user/update
{"data":"switch","bit":"1","TargetDevice":"ESP8266","DeviceName":"Android","status":"-1"} //询问开关状态
{"data":"TH","bit":"1","TargetDevice":"ESP8266","DeviceName":"Android","status":"-1"} //询问温湿度
{"data":"switch","bit":"1","TargetDevice":"ESP8266","DeviceName":"Android","status":"1"} //控制继电器吸合
{"data":"switch","bit":"1","TargetDevice":"ESP8266","DeviceName":"Android","status":"0"} //控制继电器断开

所有的数据里面都有 "TargetDevice":"ESP8266","DeviceName":"Android"
字段 TargetDevice 后面跟的是所添加设备的名字
819239-20201014232432292-383778022.png



819239-20201014232342735-1735655204.png



字段 DeviceName 后面跟的是Android自身的设备的名字
819239-20201014232410447-590475908.png



4.关于规则引擎,云产品流转
1.编写SQL 里面的SELECT为 * 代表所有消息
里面的FROM设置的是  /a1kalhdMH2Z/+/user/update  里面的 + 代表任意字符串
意思是提取发布主题 /a1kalhdMH2Z/+/user/update  里面的所有消息

APP发布的主题为 /a1kalhdMH2Z/Android/user/update
符合: /a1kalhdMH2Z/+/user/update  (+代表任意的字符串都可以,所以主题中的Android也不例外)
所以会提取这个主题里面的所有消息
819239-20201015110714031-988757304.png


2.编辑操作里面写的是 发布到另一个 Topic
下面就是转发给 /a1kalhdMH2Z/${TargetDevice}/user/get 这个主题
里面有一个 ${TargetDevice}
意思是提取消息里面字段为 TargetDevice 的字段值,然后替换上面的  ${TargetDevice}
APP发送的消息是  {"data":"switch","bit":"1","TargetDevice":"ESP8266","DeviceName":"Android","status":"-1"}
所以提取消息里面的字段为 TargetDevice 的字段值 ESP8266
然后转发的主题就变为了
/a1kalhdMH2Z/ESP8266/user/get  
819239-20201015111230588-1482331863.png






5.WiFi模块 本身就订阅了这个主题.所以APP发送的消息发给了WiFi模块
819239-20201015111625997-762785996.png


819239-20201015111651952-1517566205.png



6.解析数据并上报数据
注:APP发送的消息是  {"data":"switch","bit":"1","TargetDevice":"ESP8266","DeviceName":"Android","status":"-1"}

ESP8266发布的主题为  /a1kalhdMH2Z/ESP8266/user/update
ESP8266要想发送数据给APP,那么消息里面 TargetDevice 字段后面跟的就应该是 APP使用的设备的名字  Android
然后APP为了便于区分是哪个设备发来的数据,那么DeviceName字段就需要跟上自身设备的名字
8266上报的数据为
{"data":"switch","bit":"1","TargetDevice":"Android","DeviceName":"ESP8266","status":"1"}
819239-20201015111925273-1187834811.png


7.经过规则引擎之后
经过SQL提取了/a1kalhdMH2Z/ESP8266/user/update 里面的所有消息
然后提取消息里面TargetDevice字段值 Android
最后消息就转发给了 /a1kalhdMH2Z/Android/user/get  

8.APP本身就订阅了这个主题
819239-20201015112927068-1190467578.png


819239-20201015113003316-1233469270.png


819239-20201015113020301-1613524893.png


819239-20201015113047011-1155645784.png



9.APP循环发送查询继电器和温湿度指令
819239-20201015113153038-8397582.png


10.APP解析数据
819239-20201015113249861-688991419.png



关于MQTT
1.组合计算MQTT参数
819239-20201015113453936-900952339.png


819239-20201015113523956-927845693.png


计算密码
819239-20201015113604997-476647654.png


2.APP添加设备,把设备名称存入数据库,和ListView
819239-20201015114431444-2143156513.png




3.点击设备,跳转页面的时候携带着所点击设备的名称
819239-20201015114531647-1697323479.png


4.控制页面获取这个设备名字,并把这个名字放到消息里面
819239-20201015114633323-1293817554.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2020-11-30 22:45 , Processed in 0.093307 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表