授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。但愿你们分享给你周边须要的朋友或者同窗,说不定大神成长之路有博哥的奠定石。。。android
若是以为有用,麻烦点赞收藏,您的支持是博主创做的动力。github
1.理论基础
参考博主线上博文:web
在前面的博文中,博主主要经过手动方式去建立设备。这种方式的缺点明显:json
人为手动控制,对于开发者来讲极度不友好;
若是设备数量不少,岂不是要手动操做很是屡次;
那么,如何实现设备自注册呢?所谓自注册就是设备连入网络后自动往OneNet云平台注册设备信息并获取设备Id。api
为了区分惟一性,咱们采用ESP-Mac地址的组合形式
同时为了操做方便,博主花了个周末的时间作了一个对应的app,理论上不限制ESP8266接入点的数量
本篇博文的目的就在于教会你们如何和app通讯,完成MQTT协议下的App远程控制LED灯,而且LED灯的数量能够随意接入,用户能够在app端修改设备名字以便方便操做。服务器
博主极度建议你们从第一篇看起,有个大概了解,由于本系列教程都是有相联系的
先上个概念图:
网络
2.远程控制LED,实现设备自注册
2.1 实验材料
ESP8266 NodeMcu
Android手机
OneNet平台
2.2 实验步骤
2.2.1 建立 ESP8266智能灯系统 产品(MQTT协议)
注意点:app
务必选择MQTT协议
建立完毕后,咱们点击查看具体的产品信息:svg
注意点:
须要记录产品ID,其用来区分产品惟一标识符,这个ID待会须要填入App
Master-APIkey,网络请求鉴权信息,接口调用须要带入,这个ID待会须要填入App
2.2.2 NodeMcu烧录代码 —— MQTT设备端
为了明确区分代码功能,博哥命名工程名为P_OneNet_Exam05:
P_OneNet_Exam05.ino文件:
/**
* 功能:ESP8266 Mqtt客户端自注冊功能,经过配套App控制Led消息,理论上能够接入无数个esp8266
* 做者:单片机菜鸟
* 时间:2019-10-27
* 描述:
* 1.初始化工做:初始化网络配置,Mqtt客户端自注冊,链接鉴权,订阅主题
* 2.订阅消息:获取发送过来的消息(json格式),解析消息,实现控制亮灭灯
*/
#include
#include
#include
#include
#include
#include
#include "H_project.h"
#define MAGIC_NUMBER 0xAA
int state;
WiFiClient espClient;
//声明方法
void initSystem();
void initOneNetMqtt();
void callback(char* topic, byte* payload, u