编程语言
首页 > 编程语言> > 006-微信小程序和ESP8266连接阿里云物联网平台,并通过云平台实现远程温湿度采集和继电器控制(预注册)

006-微信小程序和ESP8266连接阿里云物联网平台,并通过云平台实现远程温湿度采集和继电器控制(预注册)

作者:互联网

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/" 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/ESA2GJK1DH1K_A/" width="100%"></iframe>

 

 

实现的功能

微信小程序和ESP8266连接阿里云物联网平台,并实现Android和ESP8266之间通信控制.

 

 

 

 

前要

请先学习完上一节!并配置好规则引擎!

请先学习完上一节!并配置好规则引擎!

请先学习完上一节!并配置好规则引擎!

 

添加设备

1.上一节我添加了一个名字为 8266LUASDK的产品

然后在这个产品下注册了名字为Android 和 ESP8266 的设备

这一节咱再在这个产品下注册个名字为 Mini 的设备

这个设备作为给微信小程序接入使用

 

 

 

 

 

 

 

 

 

 

 4.点击查看

 

 

 

 

 

 

5.打开本节微信小程序源码,并修改上面相应的参数

如果日志打印有 connect 说明成功接入了阿里云平台

 

 

 

 

测试(单片机程序还是使用的上一节的单片机程序)

1.提醒

可以直接用开发软件测试,也可以用真机测试

测试的时候一次只能一个做测试! 否则就会相互挤掉连接.

如果用手机测试,可以把软件设置为离线.

 

2.选择添加自定义设备

 

 

 

3.输入单片机使用的设备的名字

 

 

 

4.点击这个设备进入控制页面

 

 

 

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

 

 

 

 

6.控制继电器

 

 

 

 

 

源码说明

我再解释下一个事情:

阿里云注册的一个设备就作为了一个mqtt客户端,你可以把这个设备作为单片机使用也可以作为APP使用.

一个设备的信息同一时间只能一个设备去用,如果同时使用,就会挤掉线!!!!

 

1.整体通信流程说明(就再叨叨这一遍)

 

微信小程序和单片机设备都是作为了阿里云注册的设备接入.

 

其实就是阿里云上面注册的两个设备通信.

 

这节的微信小程序使用的云端注册的设备名字为 Mini 的设备接入云平台

 

发布的主题是:  /{ProductKey}/{DeviceName}/user/update

 

即:/a1kalhdMH2Z/Mini/user/update

 

 

 

订阅的主题为:/{ProductKey}/{DeviceName}/user/get

 

即:/a1kalhdMH2Z/Mini/user/get

 

 

 

这节的单片机使用的云端注册的设备名字为 ESP8266 的设备接入云平台

 

发布的主题是:  /{ProductKey}/{DeviceName}/user/update

 

即:/a1kalhdMH2Z/ESP8266/user/update

 

 

 

订阅的主题为:/{ProductKey}/{DeviceName}/user/get

 

即:/a1kalhdMH2Z/ESP8266/user/get

 

 

 

微信小程序和单片机设备各自作为阿里云的设备接入阿里云服务器.

 

然后微信小程序 添加设备的时候是添加的单片机设备注册的名字

 

然后微信小程序发布的消息为:(以控制继电器吸合为例)

 

{"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}

 

 

 

TargetDevice 字段的值是 ESP8266,是微信小程序添加的设备的名字.

 

DeviceName 字段的值是 Mini ,是微信小程序本身设备的名字.

 

这条信息发给云平台以后,经过了转发规则

 

 

 

注:(提取数据)  /a1kalhdMH2Z/+/user/update  里面的 + 代表任意字符串

 

意思是提取符合主题 /a1kalhdMH2Z/任意/user/update  里面的所有消息

 

上面的就提取了  

 

{"TargetDevice":"ESP8266","DeviceName":"Mini","data":"switch","bit":"1","status":"1"}

 

 

 

 

 

 

 

 

 

 

注:(对数据进行操作)   发布到另一个 Topic    /a1kalhdMH2Z/${TargetDevice}/user/get 

 

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

 

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

 

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

 

/a1kalhdMH2Z/ESP8266/user/get 

 

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

 

 

 

 

 

 

 

 

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

 

然后用自己的发布主题发布消息  /a1kalhdMH2Z/ESP8266/user/update

 

消息为:

 

{"TargetDevice":"Mini","DeviceName":"ESP8266","data":"switch","bit":"1","status":"1"}

 

 

 

TargetDevice 字段的值改为了 Mini

 

DeviceName 字段的值为单片机自己的设备名字  ESP8266

 

 

 

消息发给了服务器,然后经过转发规则,同理 ,消息便会转发给了微信小程序

 

最后微信小程序 提取消息里面的数据,就完成了通信

 

2.微信小程序执行流程说明

1.作为阿里云的一个设备接入云平台

 

 

 

 

 

2.添加一个设备,并把添加的设备的名字存储到数据库

 

 

 

 

 

 

3.点击跳转到控制页面时把设备名字传递过去

 

 

 

4.控制页面获取设备名称并组合发送的消息

 

 

 

5.组合自己的自定义主题

 

 

 

 

 

6.发送消息

 

 

 

 

 

 

7.接收处理消息

 

 

 

单片机程序说明请看上一节

单片机程序说明请看上一节

单片机程序说明请看上一节

 

 

结语

用户也可以同时打开上一节的手机APP控制设备.

 

标签:DeviceName,ESP8266,温湿度,平台,单片机,user,微信,设备
来源: https://www.cnblogs.com/yangfengwu/p/13888785.html