收藏官网首页
查看: 1384|回复: 21

[代码] Android开发配网8266的封装SDK开源使用

发表于 2018-3-28 10:29:21 | 显示全部楼层 |阅读模式
汉枫LPB120模块
本帖最后由 半颗心脏 于 2018-3-28 12:02 编辑
                                                                                         提 示
            
          很久没有发表一些干货了,最近在忙些自己的事情,还有档机智云Android对接视频教学,为了弥补下大家。决定把自己上个月整理出来的8266安卓一键配网的代码封装拿出来,包括源码到集成使用。         
       觉得喜欢,点个赞,回复下,获取源码!不喜勿喷!谢谢支持!
                                                                                                                                                                                                                                                                                                           非官方人员机智云发烧友:小徐                                 

一. 前言。   

    之前逛gitHub,有人问过是否支持自定义回调8266的信息,我想应该可以把?所以,一直想动手搞上位机的配网封装,因为太忙了,这几天临近过年有点时间,终于搞好了。   

   因为本人姓徐,所以命名为XSmartConfig , 顾名思义原理和smartConfig一样,只是再封装一次


二. 特点
①、继承了乐鑫8266的一键配网 smartConfig , 保留了其功能。

②、支持多个设备配网的功。

③、支持隐藏的SSID配网。

④、目前V1.0版本仅仅支持配网成功后的UDP回调接收,具体的协议请自定义。

三. 集成方法与使用。

为了兼顾 Eclipse 开发,同时缩短周期,我就不放在 jCenter 了,打包成jar架包大家使用吧。jar包下载地址回复即可获取。


①、所需的权限:
  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  4. <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
  5. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
复制代码
②、xEspTouchTask.java 类,是对外的API接口。详细使用方法,请到Demo查看。


     这是我们平时用的smartConfig一键配网代码

  1. xEspTouchTask espTouchTask = new xEspTouchTask.Builder(this) //初始化
  2.                     .setSsid(apSsid) //设置路由器的名字
  3.                     .setPassWord(apPassword)  //设置路由器连接的密码
  4.                     .creat(); //创建对象
  5.            espTouchTask.startSmartConfig();  //开始执行,不带UDP的普通配网
复制代码

     这是我们smartConfig一键配网后执行UDP接受过滤此设备的自定义一键配网

  1. xEspTouchTask espTouchTask = new xEspTouchTask.Builder(this) //初始化
  2.                     .setSsid(apSsid) //设置路由器的名字
  3.                     .setPassWord(apPassword)  //设置路由器连接的密码
  4.                     .creat(); //创建对象
  5.               espTouchTask.startSmartConfig(30, 8989);;  //开始执行带UDP协议的 一键配网,30是超时时间,8989是本地端口
复制代码



③、设置监听接口 EspTouchTaskListener()。

code状态码 message信息回调 说明
0 表示成功配网,接着看message的信息,为一个包含设备的Mac地址和网关地址的Json 一键配网成功回调
1 为多个配网信息,还在配网中,其中message是刚刚配对成功的设备 只有设置了指定的个数配网设备才有回调
2 null 表示一键配网配网失败
3 表示成功接受到设备的UDP发来的自定义信息 仅当设置了端口号和超时时间才生效
4 null 表示超过了设置超时时间,未接受到设备的UDP信息


     示范:
  1. espTouchTask.setEspTouchTaskListener(new xEspTouchTask.EspTouchTaskListener() {
  2.             @Override
  3.             public void EspTouchTaskCallback(int code, String message) {
  4.                 switch (code) {
  5.                     case 0:
  6.                         //一键配网成功...
  7.                         break;
  8.                     case 1:
  9.                         //为多个配网信息,还在配网中,其中message是刚刚配对成功的设备
  10.                         break;   
  11.                     case 2:   
  12.                        //表示配网失败;        
  13.                         break;   
  14.                     case 3:                 
  15.                         //配网成功后,UDP广播后获取到的信息:message
  16.                         break;
  17.                     case 4:
  18.                        //表示超过了设置超时时间,未接受到设备的UDP信息
  19.                         break;
  20.                 }
  21.             }
  22.         });
复制代码

四. 关于如何自定义设备成功连接路由器后的信息回调


1、 我说出来了这样的话语,那肯定有我解决的方法,鉴于我的想法如下,需要有点通讯知识才会看懂哦!
2、 设备成功连接路由器获取IP之后,确定您的设备和手机在同一个网段,之后设备开启UDP广播包,指定的远程端口号,发送您的自定义信息!

3、如果考虑到UDP广播不安全,您可以使用TCP协议,还记得8266那个smartConfig有个手机的ip地址回调么?拿到这个地址之后,我们可以双方协议好,就好

4、但目前我仅仅做了UDP的。 如果您有想法,完全把我这份源码下载下来,做tcp协议。

    一句话概括:设备在配网成功获取IP之后,手机也会开启UDP接口来接受局域网的UDP信息包,这样就可以实现我们自定义的信息回调啦;
    很多人会问,这样有什么好处,比如我设备已经连接路由器,但是不知道是否成功连接了MQTT服务器,您完全可以在连接MQTT之后再发送UDP广播包,之后关闭。

- 为了照顾初学者,下面是我8266的部分UDP代码。UDP的地址为255,255,255,255;协议好的端口号 8989 。

  1. void udp_client_init(void) {

  2.         wifi_set_broadcast_if(0x01);         //设置 esp8266 发送 UDP广播包时,从 station 接口发送
  3.         user_udp_espconn.proto.udp = (esp_udp *) os_zalloc(sizeof(esp_udp));//分配空间
  4.         user_udp_espconn.type = ESPCONN_UDP;                           //设置类型为UDP协议
  5.         user_udp_espconn.proto.udp->local_port = 2000;                           //本地端口
  6.         user_udp_espconn.proto.udp->remote_port = 8989;                           //目标端口
  7.         const char udp_remote_ip[4] = { 255, 255, 255, 255 };                 //目标IP地址(广播)
  8.         os_memcpy(user_udp_espconn.proto.udp->remote_ip, udp_remote_ip, 4);

  9.         espconn_regist_recvcb(&user_udp_espconn, user_udp_recv_cb);                         //接收
  10.         espconn_regist_sentcb(&user_udp_espconn, user_udp_sent_cb);                         //发送
  11.         espconn_create(&user_udp_espconn);                           //建立 UDP 传输
  12.         getUDPSendMessage();

  13.         os_timer_disarm(&sendDataTimer);          //取消定时器定时
  14.         os_timer_setfn(&sendDataTimer, (os_timer_func_t *) timerSendData,
  15.         NULL);          //设置定时器回调函数
  16.         os_timer_arm(&sendDataTimer, 2500, 1);          //启动定时器,单位:毫秒

  17. }
复制代码

游客,如果您要查看本帖隐藏内容请回复


源码生成的APK下载体验!













1、机智云Adnroid开源框架QQ交流群: 434878850

QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随
 楼主| 发表于 2018-3-29 11:16:00 | 显示全部楼层
天英科技 发表于 2018-3-28 15:32
是不是0.3.4.6版本呢

忘了是哪个版本,你看看源码吧
1、机智云Adnroid开源框架QQ交流群: 434878850

QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随

0

主题

3

帖子

30

积分

新手上路

Rank: 1

积分
30
发表于 2018-5-5 21:15:24 | 显示全部楼层
不错哦,下载来学习学习

0

主题

2

帖子

60

积分

注册会员

Rank: 2

积分
60
发表于 2018-4-21 21:11:31 | 显示全部楼层
学习学习学习学习

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2018-3-28 15:32:34 | 显示全部楼层
是不是0.3.4.6版本呢

点评

忘了是哪个版本,你看看源码吧  详情 回复 发表于 2018-3-29 11:16

0

主题

1

帖子

138

积分

注册会员

Rank: 2

积分
138
发表于 2018-3-29 09:07:42 | 显示全部楼层
8266爱好者

0

主题

15

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
发表于 2018-3-29 23:05:47 | 显示全部楼层
干货,谢谢分享!

0

主题

2

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2018-4-3 17:40:18 | 显示全部楼层
汉枫LPB120模块
正在研究这个

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2018-4-4 13:59:07 | 显示全部楼层
8266新手上路

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2018-4-4 13:59:37 | 显示全部楼层
8266新手上路

1

主题

9

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2018-4-12 18:53:32 | 显示全部楼层
8266新手上路

0

主题

1

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2018-4-18 13:07:04 | 显示全部楼层
校园创客福利
看看,好用不

1

主题

3

帖子

40

积分

新手上路

Rank: 1

积分
40
发表于 2018-4-19 08:29:11 | 显示全部楼层
8266新手上路
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

© 2011-2017 Gizwits ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表