Android开发配网8266的封装SDK开源使用
提 示很久没有发表一些干货了,最近在忙些自己的事情,还有档机智云的Android对接视频教学,为了弥补下大家。决定把自己上个月整理出来的8266安卓一键配网的代码封装拿出来,包括源码到集成使用。
觉得喜欢,点个赞,回复下,获取源码!不喜勿喷!谢谢支持!
非官方人员机智云发烧友:小徐
一. 前言。
之前逛gitHub,有人问过是否支持自定义回调8266的信息,我想应该可以把?所以,一直想动手搞上位机的配网封装,因为太忙了,这几天临近过年有点时间,终于搞好了。
因为本人姓徐,所以命名为XSmartConfig , 顾名思义原理和smartConfig一样,只是再封装一次。
二. 特点。
①、继承了乐鑫8266的一键配网 smartConfig , 保留了其功能。
②、支持多个设备配网的功。
③、支持隐藏的SSID配网。
④、目前V1.0版本仅仅支持配网成功后的UDP回调接收,具体的协议请自定义。
三. 集成方法与使用。
为了兼顾 Eclipse 开发,同时缩短周期,我就不放在 jCenter 了,打包成jar架包大家使用吧。jar包下载地址回复即可获取。
①、所需的权限:
[*]<uses-permission android:name="android.permission.INTERNET" />
[*]<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
[*]<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
[*]<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
[*]<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
[*]
复制代码
②、xEspTouchTask.java 类,是对外的API接口。详细使用方法,请到Demo查看。
这是我们平时用的smartConfig一键配网代码
[*]
[*]xEspTouchTask espTouchTask = new xEspTouchTask.Builder(this) //初始化
[*] .setSsid(apSsid) //设置路由器的名字
[*] .setPassWord(apPassword)//设置路由器连接的密码
[*] .creat(); //创建对象
[*] espTouchTask.startSmartConfig();//开始执行,不带UDP的普通配网
复制代码
这是我们smartConfig一键配网后执行UDP接受过滤此设备的自定义一键配网
[*]
[*]xEspTouchTask espTouchTask = new xEspTouchTask.Builder(this) //初始化
[*] .setSsid(apSsid) //设置路由器的名字
[*] .setPassWord(apPassword)//设置路由器连接的密码
[*] .creat(); //创建对象
[*] espTouchTask.startSmartConfig(30, 8989);;//开始执行带UDP协议的 一键配网,30是超时时间,8989是本地端口
复制代码
③、设置监听接口 EspTouchTaskListener()。
code状态码message信息回调说明
0表示成功配网,接着看message的信息,为一个包含设备的Mac地址和网关地址的Json一键配网成功回调
1为多个配网信息,还在配网中,其中message是刚刚配对成功的设备只有设置了指定的个数配网设备才有回调
2null表示一键配网配网失败
3表示成功接受到设备的UDP发来的自定义信息仅当设置了端口号和超时时间才生效
4null表示超过了设置超时时间,未接受到设备的UDP信息
示范:
[*]espTouchTask.setEspTouchTaskListener(new xEspTouchTask.EspTouchTaskListener() {
[*] @Override
[*] public void EspTouchTaskCallback(int code, String message) {
[*] switch (code) {
[*] case 0:
[*] //一键配网成功...
[*] break;
[*] case 1:
[*] //为多个配网信息,还在配网中,其中message是刚刚配对成功的设备
[*] break;
[*] case 2:
[*] //表示配网失败;
[*] break;
[*] case 3:
[*] //配网成功后,UDP广播后获取到的信息:message
[*] break;
[*] case 4:
[*] //表示超过了设置超时时间,未接受到设备的UDP信息
[*] break;
[*] }
[*] }
[*] });
复制代码
四. 关于如何自定义设备成功连接路由器后的信息回调;
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 。
[*]void udp_client_init(void) {
[*]
[*] wifi_set_broadcast_if(0x01); //设置 esp8266 发送 UDP广播包时,从 station 接口发送
[*] user_udp_espconn.proto.udp = (esp_udp *) os_zalloc(sizeof(esp_udp));//分配空间
[*] user_udp_espconn.type = ESPCONN_UDP; //设置类型为UDP协议
[*] user_udp_espconn.proto.udp->local_port = 2000; //本地端口
[*] user_udp_espconn.proto.udp->remote_port = 8989; //目标端口
[*] const char udp_remote_ip = { 255, 255, 255, 255 }; //目标IP地址(广播)
[*] os_memcpy(user_udp_espconn.proto.udp->remote_ip, udp_remote_ip, 4);
[*]
[*] espconn_regist_recvcb(&user_udp_espconn, user_udp_recv_cb); //接收
[*] espconn_regist_sentcb(&user_udp_espconn, user_udp_sent_cb); //发送
[*] espconn_create(&user_udp_espconn); //建立 UDP 传输
[*] getUDPSendMessage();
[*]
[*] os_timer_disarm(&sendDataTimer); //取消定时器定时
[*] os_timer_setfn(&sendDataTimer, (os_timer_func_t *) timerSendData,
[*] NULL); //设置定时器回调函数
[*] os_timer_arm(&sendDataTimer, 2500, 1); //启动定时器,单位:毫秒
[*]
[*]}
复制代码
**** Hidden Message *****
源码生成的APK下载体验!
https://raw.githubusercontent.com/xuhongv/XSmartConfig-master/master/Asset/app_V1.png
初来乍到:D:D:D:D:D 获取源码 拉拉
啦啦啦啦啦啦啦 您好,有几个问题能麻烦您帮忙解答一下吗?请问,自己要做一个APP,与云服务器信息交互,达到控制设备的目的(设备通过路由器与云服务器连接)。这样的APP要与云服务器连接需要什么协议?需要什么权限。用不用APP也与路由器连接。麻烦您了。 获取源码 :lol 看看效果先 小白前来学习 点个赞,一直不知道Android 要怎么发起配网,先学习下代码 您好,您可以通过机智云官网右下角→【咨询客服】选择技术客服→ 转人工服务,寻求技术帮助,或者将您的技术问题发送到技术组邮箱:club@gizwits.com,也可以加入机智云技术扣扣群与技术大拿讨论,扣扣群号为:289447077 .
欢迎各位宝宝使用机智云平台哦,https://www.gizwits.com/
页:
[1]
2