本文章是官方实例代码和自己的一些编写拼接而成,实现82601s在陌生的环境通过手机巴法云配网后就能实现控制开关,目前使用没有bug
第一,SmartConfig 协议
本程序使用arduino ide 开发,使用前需按照arduino esp8266开发环境:安装教程
SmartConfig 配网示例程序下载:点击下载
这里需要修改的三个变量确切说两个,一个设备类型aptype,一个通讯协议version=?mqtt?
这时设备状态已经通过配网出来的wifi账户和密码,处于联网状态。并调用结构体里的
char cuid[40]; char ctopic[32];变量赋值给函数外变量uid和aptopic。通过loop函数打印出密钥和主题。
这是实例代码一结尾部分,串口调试助手会打印出设备密钥和主题
这时设备状态已经通过配网出来的wifi账户和密码,处于联网状态。并调用结构体里的
char cuid[40]; char ctopic[32];变量赋值给函数外变量uid和aptopic。通过loop函数打印出密钥和主题。
第二,esp8266接入巴法云,通过mqtt控制。
下载地址:点击下载
需要修改的信息有WIF名称,WIFI密码,用户私钥UID,设备主题topic。
第三,你看能不能把这两个实例代码拼到一块,实现一个模块在陌生环境下配网后就能实现控制呢。
SmartConfig 配网示例可以得到wifi账号密码,又能自动生成主题和密钥。(其实它们通过配网出来储存在结构体struct config_type里面的。)
8266通过MQTT协议接入巴法云示例里需要修改参数(都在结构体里储存这)还包含开关灯函数能控制继电器的开关。
示例二中这4个变量(WIF名称,WIFI密码,用户私钥UID,设备主题topic) 变量都被示例代码一在配网的过程中自动储存了。 还有两个实例用的库以及包含的头文件,咱们一起合并到一块,把整个代码控制逻辑缕一缕。
一起来吧。
第四,实现代码的拼接过程。
1,用Arduino IDE打开三个窗口,拼接示例一和示例二中库和对象的部分。
这样我们就把示例一中包含的库和示例二中包含的库,去除重复包含部分,合并到了一块。
示例一二中8,9,10,11合并时候,把10删除,11该为
PubSubClient client(client_bemfa_WiFiClient);
用类声明一个对象作为参数通过MQTT通讯方式控制。至此拼接完毕。
(忽略示例二中client的粉色裱框;刚刚查找了一下client导致的。)
2,拼接变量和函数声明部分
页面中三个变量没有标注
( long lastMsg = 0; char msg[50]; int value = 0;)这三个变量在ap配网时候要用到,照样子放那里吧。
配网后四个变量自动储存在结构体所以舍弃,那个宏定义直接在下面代码里“ID_MQTT”调用结构体里的config.cuid变量代替就行,就是密钥。来继续.....
歇会......继续(砖块4中的控制引脚改为0,int B_led=0,从示例二搬过来的)
换个姿势
直接搬砖至示例一中 setup()函数里的 getuid()函数为止,暂停分析设备状态。
至此示例一全部代码搬砖执行完毕,
doSmartconfig()函数配网后得到wifi账号密码储存到结构体并自动连接上网络。getuid()函数通过巴法云api获得主题密钥储存在结构体,而且赋值给函数外变量APtopic和UID使用。
下一步改通过MQTT连接巴法云服务器监听信息执行开关灯函数了。
叉杠代码是示例二中设置wifi连接的直接扔掉,示例一中有自动连接网络的代码以搬砖过来了
继续..马上完了
至此拼接完成,目前826601s继电器模组用此代码无bug,可以控制灯开关实现智能化。以下是本人的付费连接下载后直接可以用,付点电费的,本up主不胜感恩感激感谢。里面有AP配网和SmartConfig配网以及必要驱动和软件优先推荐AP。请 点这里:付费链接
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。