赞
踩
《基于ESP8266的智能家居控制系统》
功能:
1、采集环境数据:温度、湿度、烟雾检测、人体红外检测。
2、安防警报功能:烟雾阈值判断进行报警,人体红外检测判断外人入侵报警。
3、WiFi联网、MQTT协议
4、手机APP远程控制电器设备
5、手机APP远程监控家中环境数据
6、MQTT阿里云平台远程监控家中数据和电器设备
7、手机APP手动消除警报(应对家中宠物误触情况)
目录
我们之前有讲到使用的MQTT协议是发布/订阅的一种方式,就好比如公众号一样,我们只有关注了公众号,才能收到这个公众号发来的消息,其他人也关注了这个公众号的话,也可以同时收到这个新的消息,同时我们也可以向这个公众号发消息。在MQTT中主题就是公众号,订阅就是关注,我们要先订阅主题才能接收主题发来的消息。
其实在本项目中我们用到的主题就两种一个是属性上报主题,一个是自定义主题。esp8266端会向属性上报主题发消息,然后会订阅自定义主题(自定义主题用来接收云流转发来的消息)
手机APP端也向自己的属性上报主题内发消息,然后也订阅一个自定义主题。
也就是总共参与进来的就4个主题。整体规则如下图所示。云流转规则如何设置,会在下面进行讲解。云流转配置成转发的规则,可以实现将A设备主题内的数据转发到B设备的主题中。
做到这一步,需要你们首先在同一产品下,创建好手机APP要连接的设备,创建方式与前面讲的ESP8266设备一致即可,这里我就不在演示。属性就不用再次定义了,因为属性是一个产品的属性,同一产品下所有的设备属性一致。创建好之后如下图所示。同一个产品smarthome下有两个设备一个用来连接esp8266一个用来连接手机app,这样就不会导致同时连一个设备挤下线了。我的手机app设备名称起的不好,你们可以起个有标志性的比如就叫PhoneAPP之类的。
接下来我们讲解如何在产品中创建自定义主题
打开阿里云物联网平台,进入控制台界面,查看产品,操作如下。
选择Topic类列表,选择自定义Topic,点击定义Topic类
创建两个自定义主题如下图所示,复制下来主题名/k17gxDWtuCB/ESP8266/user/apptomcu(注意修改${deviceName}这个主题是app转发到esp8266所以填写app设备的名称ESP8266注意我这里手机app设备名称起的有问题,你们别混肴)/k17gxDWtuCB/mcu-device/user/mcutoapp
这里要创建两个云流转规则,一个esp8266传感器数据转发到手机app自定义主题/k17gxDWtuCB/mcu-device/user/mcutoapp,一个手机app数据转发到esp8266自定义主题/k17gxDWtuCB/ESP8266/user/apptomcu。
自定义主题定义好之后开始云流转配置,点击云产品流转,返回旧版
点击创建规则,规则名称和规则描述随便填,数据格式选择JSON格式,如下图所示。
创建后点击编写SQL如下图所示。
SQL设定按照下图4-1进行配置。
SQL定义好点击确定,点击添加操作,
操作按照下图来进行配置,这样就完成了esp8266数据转发到手机app的操作,接下来同理的操作,再创建一个规则用来将app的数据转发到esp8266,我不再讲解只放图片。
手机app属性上报数据转发到esp8266端自定义主题
最后回到云产品流转界面,将刚定义好的两个规则启动。启动之后,就会一直开启,除非你手动点击停止,不然就算你关闭网页,或者怎样都不停止。
至此,云产品流转设置结束。
我们知道只有订阅主题才可以接收这个主题发来的数据,我们想要esp8266端接收手机app端远程发来的控制电器设备的数据,就需要订阅这个主题。这个主题就是上面云流转的自定义主题/k17gxDWtuCB/ESP8266/user/apptomcu。
打开esp8266端总代码
里面的mqttCheckConnect()这个函数就是用来连接设备和订阅主题的。里面的client.subscribe()用来订阅主题,别忘了在代码开头进行修改,改成自己的自定义主题
这样就订阅成功了,会在连接设备成功后,自动订阅这个主题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。