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