ESP8266 SDK开发: 物联网篇-Android和ESP8266连接阿里云物联网平台,并通过云平台实现远程温湿度采集和继电器控制

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

 

实现的功能

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

 

 

 

 

 

 

 

 

开通阿里云物联网平台

https://www.aliyun.com/

1.搜索阿里云物联网平台(如果没有开通请自行开通)

 

 

 

 

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

 

1.创建产品

 

 

 

2.设置下产品的名称

 

 

 

 

 

 

3.添加设备,设备名字我写的是ESP8266

 

 

 

 

 

 

 

4.点击查看

 

 

 

 

 

 

 

 

 

 

注意地域!后面有说明!

 

 

 

5.打开ESP8266源码,并修改上面的三个参数

 

 

 

 

 

 

6.关于地域,请参考

 

 

 

 

7.我的是上海,所以填写的是  cn-shanghai

 

 

 

 

 

8.修改连接路由器的信息

 

 

 

9.下载并查看打印

打印连接成功,并在每个一段时间发布消息.

然后后台上面显示上线

 

 

 

 

 

 

再添加一个设备,作为Android接入

1.添加设备,设备名字我写的是 Android

 

 

 

 

 

2.点击查看

 

 

 

 

 

 

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

 

 

 

 

 

 

4.安装到手机并打开,如果日志打印有 Connect Success

说明已经接入了阿里云

 

 

 

 

 

配置规则引擎

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

 

 

 

 

 

2.选择编写 SQL

 

 

 

 

 

 

 

3.添加操作

 

 

 

 

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

 

 

 

5.启动规则

 

 

 

 

 

 

 

 

 

 

 

 

点击APP右上角菜单,选择添加设备

1.点击添加设备

 

 

 

 

2.输入WiFi模块程序中使用的注册的设备的名字

 

 

 

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

 

 

 

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

 

 

 

 

5.控制继电器

    

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

源码说明

1.基础的知识请用户看前面的4.10 - 4.13章节学习

2.根据用户填写的阿里云的设备信息,组合计算MQTT各个参数

 

 

注意:MQTT的ClientID 计算方式是拼接的ESP8266的MAC地址

 

 

 

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 后面跟的是所添加设备的名字

 

 

 

 

 

 

字段 DeviceName 后面跟的是Android自身的设备的名字

 

 

 

4.关于规则引擎,云产品流转

1.编写SQL 里面的SELECT为 * 代表所有消息

里面的FROM设置的是  /a1kalhdMH2Z/+/user/update  里面的 + 代表任意字符串

意思是提取发布主题 /a1kalhdMH2Z/+/user/update  里面的所有消息

 

APP发布的主题为 /a1kalhdMH2Z/Android/user/update

符合: /a1kalhdMH2Z/+/user/update  (+代表任意的字符串都可以,所以主题中的Android也不例外)

所以会提取这个主题里面的所有消息

 

 

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  

 

 

 

 

 

 

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

 

 

 

 

 

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"}

 

 

7.经过规则引擎之后

经过SQL提取了/a1kalhdMH2Z/ESP8266/user/update 里面的所有消息

然后提取消息里面TargetDevice字段值 Android

最后消息就转发给了 /a1kalhdMH2Z/Android/user/get  

 

8.APP本身就订阅了这个主题

 

 

 

 

 

 

 

 

 

9.APP循环发送查询继电器和温湿度指令

 

 

10.APP解析数据

 

 

 

关于MQTT

1.组合计算MQTT参数

 

 

 

 

计算密码

 

 

 

2.APP添加设备,把设备名称存入数据库,和ListView

 

 

 

 

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

 

 

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

 

 

posted on   广源时代  阅读(4660)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-10-14 单片机模块化程序: 单片机AT指令配置模块程序模板(非阻塞版)
2019-10-14 单片机模块化程序: 单片机AT指令配置模块程序模板(阻塞版)
2019-10-14 单片机模块化程序: 单片机发送数据之中断发送
2019-10-14 单片机模块化程序: 单片机接收数据之缓存管理,DMA
2019-10-14 单片机模块化程序: 单片机接收数据之环形队列
2019-10-14 单片机模块化程序: 单片机接收数据之空闲中断
2019-10-14 单片机模块化程序: 看看是不是你想要的按键处理

导航

支付宝 QQ群
点击右上角即可分享
微信分享提示