热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android网络开发回顾之旅②新年新气象,封装一个esp8266一键配网XSmartConfig,支持自定义回调。(附带Demo)

本系列博客学习由非官方人员半颗心脏潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改
  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

    • ① 对物联网爱不释手,在Android手机集成使用MQTT协议 ,实现搞掂移动控制硬件端。

    • ① 新年新气象,封装一个esp8266一键配网XSmartConfig , 支持自定义回调。




一. 前言。


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

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




二. 特点。


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

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

  • ③、支持隐藏的SSID配网。

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




③. 集成方法与使用。




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



  • ①、所需的权限:

<uses-permission android:name&#61;"android.permission.INTERNET" /><uses-permission android:name&#61;"android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name&#61;"android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name&#61;"android.permission.CHANGE_WIFI_MULTICAST_STATE" /><uses-permission android:name&#61;"android.permission.CHANGE_WIFI_STATE" />



  • ②、xEspTouchTask.java 类&#xff0c;是对外的API接口。详细使用方法&#xff0c;请到Demo查看。


//这是我们平时用的smartConfig一键配网代码xEspTouchTask espTouchTask &#61; new xEspTouchTask.Builder(this) //初始化.setSsid(apSsid) //设置路由器的名字.setPassWord(apPassword) //设置路由器连接的密码.creat(); //创建对象espTouchTask.startSmartConfig(); //开始执行&#xff0c;不带UDP的普通配网


//这是我们smartConfig一键配网后执行UDP接受过滤此设备的自定义一键配网xEspTouchTask espTouchTask &#61; new xEspTouchTask.Builder(this) //初始化.setSsid(apSsid) //设置路由器的名字.setPassWord(apPassword) //设置路由器连接的密码.creat(); //创建对象espTouchTask.startSmartConfig(30, 8989);; //开始执行带UDP协议的 一键配网&#xff0c;30是超时时间&#xff0c;8989是本地端口



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



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


espTouchTask.setEspTouchTaskListener(new xEspTouchTask.EspTouchTaskListener() {&#64;Overridepublic void EspTouchTaskCallback(int code, String message) {switch (code) {case 0://一键配网成功...break;case 1://为多个配网信息&#xff0c;还在配网中&#xff0c;其中message是刚刚配对成功的设备break; case 2: //表示配网失败; break; case 3: //配网成功后&#xff0c;UDP广播后获取到的信息&#xff1a;messagebreak;case 4://表示超过了设置超时时间&#xff0c;未接受到设备的UDP信息break;}}});



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




  • 我说出来了这样的话语&#xff0c;那肯定有我解决的方法&#xff0c;鉴于我的想法如下&#xff0c;需要有点通讯知识才会看懂哦&#xff01;

    • 设备成功连接路由器获取IP之后&#xff0c;确定您的设备和手机在同一个网段&#xff0c;之后设备开启UDP广播包&#xff0c;指定的远程端口号&#xff0c; 发送您的自定义信息。

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

    • 但目前我仅仅做了UDP的。 如果您有想法&#xff0c;完全把我这份源码下载下来&#xff0c;做tcp协议。




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




  • 下面是我8266的部分UDP代码。

    • UDP的地址为255&#xff0c;255&#xff0c;255&#xff0c;255
    • 协议好的端口号 8989 。

void udp_client_init(void) {wifi_set_broadcast_if(0x01); //设置 ESP8266 发送 UDP广播包时&#xff0c;从 station 接口发送user_udp_espconn.proto.udp &#61; (esp_udp *) os_zalloc(sizeof(esp_udp));//分配空间user_udp_espconn.type &#61; ESPCONN_UDP; //设置类型为UDP协议user_udp_espconn.proto.udp->local_port &#61; 2000; //本地端口user_udp_espconn.proto.udp->remote_port &#61; 8989; //目标端口const char udp_remote_ip[4] &#61; { 255, 255, 255, 255 }; //目标IP地址&#xff08;广播&#xff09;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); //启动定时器&#xff0c;单位&#xff1a;毫秒}



  • 工程源代码下载&#xff1a;https://github.com/xuhongv/XSmartConfig-master

    • Jar包下载&#xff1a;https://github.com/xuhongv/XSmartConfig-master/raw/master/Asset/XSmartConfig_V1.0.jar

    • APK下载体验&#xff1a;

等等


推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
  • ActiveMQ是java开发的消息中间件服务。可以支持多种协议(AMQP,MQTT,OpenWire,Stomp),默认的是OpenWire。而python与Act ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 将OpenVINOTM推理结果通过MQTT推送给EdgeX Foundry
    1.1常见的EdgeAI应用程序框架EdgeAI即常说的边缘智能,边缘智能包含两大核心功能:边缘负责将现实世界的各种物理量数字化,然后 ... [详细]
  • 原文:WhatEngineersNeedtoKnowaboutCommunicationProtocolsWhenChoosingIoTManagementSoftw ... [详细]
author-avatar
魏知染纪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有