wifi类物联产品配网前言

2023-11-18

对于做iot物联网产品来说,联网是必须的。
联网方式可以选wifi(esp8266和esp32),网口,4G等。
如果采用网口,4G方式,设备初始化后,即插即用(网线插路由器或4G插上sim卡就会自动获取和分配ip了);但对于wifi方式就要考虑如何将要配置的wifi ap和wifi password传递给设备,让设备联网。

wifi类物联文章,大多数都是将wifi信息直接在设备中写死,只讲解mqtt控制,很少有涉及到配网这个层面的。所以也萌生了我计划写这类文章的想法。

下边简要提下wifi(esp8266和esp32)配网有哪些,后期会陆续详细介绍各种方式和具体实现(可能也会涉及部分代码)。

1. SmartConfig配网(仅支持2.4G)

  1. wifi设备初始化进入smartConfig模式

  2. 用户通过乐鑫提供的EspTouch工具,发送ssid和密码给设备进行配网。

    image-20221230121536917

  3. 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;

  4. 用户端,等待配网完成(验证设备是否上线)

2. web方式配网

  1. wifi设备初始化进入AP模式,热点ap信息我这设置的是ip:192.168.4.1;ssid:qytech;password:12345678,注ssid和password可以随意。启动http服务器,监听get和post请求;

  2. 用户连接上边的qytech后,在浏览器端输入192.168.4.1,然后在返回的页面中输入wifi名称,密码点击提交

    image-20230213092045813

  3. 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;

  4. 用户端,等待配网完成(验证设备是否上线)

3. 一键配网(BLE、传统蓝牙和wifi)

主要思路是:借助BT或者wifi自身将要配置的wifi ap和wifi password传递给设备,设备返回设备ID给用户程序;

这里涉及的工作主要有两点:

一是设备端要编写配网程序,主要启动BT或wifi ap,收发配网数据;

二是用户程序编写,主要自动搜索BT或wifi热点,自动连接,传递wifi信息给设备和接收返回的设备ID;

具体的实现这里不做描述。以下界面是我这边已经实现的配网控制android app,这里简称为配网app,以便下文引用;

image-20230712144336412

3.1.BLE方式

这种方式与传统蓝牙方式,设备端程序和用户端程序都是有差异的。

以esp32c3的芯片为例,该芯片BT+WIFI双模,仅支持BLE方式

  1. wifi设备初始化,启动BLE,名字:qytBLE,等待支持ble设备连接;
  2. 用户打开配网app,填写wifi信息,选择BLE,点击添加后,设备进入配网中(自动搜索BT,自动连接,传递wifi信息给设备和接收返回的设备ID)
  3. 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
  4. 用户端,等待配网完成(验证设备是否上线)

3.2.传统蓝牙方式

这种方式与BLE方式,设备端程序和用户端程序都是有差异的。

以esp32 wroom为例,该芯片BT+WIFI双模,支持传统蓝牙和BLE方式。这里选择传统蓝牙配网

  1. wifi设备初始化,启动BT,名字:qytBT,等待支持BT设备连接;
  2. 用户打开配网app,填写wifi信息,选择传统蓝牙,点击添加后,设备进入配网中(自动搜索BT,自动连接,传递wifi信息给设备和接收返回的设备ID)
  3. 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
  4. 用户端,等待配网完成(验证设备是否上线)

3.3.wifi方式

这种方式与web方式类似,指示减少用户交互,增加用户体验,看似一键配网。

以esp8266为例,该芯片仅支持wifi;

  1. wifi设备初始化进入AP模式,热点ap信息我这设置的是ip:192.168.4.1;ssid:qytech;password:12345678,注ssid和password可以随意。启动http服务器,监听get和post请求;
  2. 用户打开配网app,填写wifi信息,选择wifi,点击添加后,设备进入配网中(自动搜索wifi热点,自动连接,传递wifi信息给设备和接收返回的设备ID)
  3. 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
  4. 用户端,等待配网完成(验证设备是否上线)

3.4. 4G、网口或其他直连设备

用户端只需要输入产品包装上的设备ID,等待配网完成(验证设备是否上线)即可。

3.5. 其他配网方式

增加额外硬件,来传输配网或其他信息,如nfc,蓝牙,声波等通信模块。需要注意的是,这种方式会增加额外的硬件成本。

4. 总结

配网是wifi类物联产品不可或缺的一环,好的配网方式,能有效的提高用户体验,增加用户粘性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wifi类物联产品配网前言 的相关文章

  • 搜索插入位置 JavaScript

    在有序数组中查找 无则插入 元素 返回索引 题目详情 https leetcode cn com problems search insert position description 遍历数组查找 插入 查找比较简单 插入时会麻烦一些 如

随机推荐

  • Java中的String用法

    新手Java程序员了解String类型 1 String是什么数据类型 String在定义上是java lang包下的一个类 它不是基本的数据类型 String是不可变的 JVM使用字符串池来存储所有的字符串对象 2 创建String对象的
  • 阅读书源最新2020在线导入_最最最最最好用的小说神器,全网书源免费用!

    今天给大家分享的是小说软件 为了满足所有小伙伴的需求 今天安卓和苹果都安排上了 一款Android应用 一款iOS应用 两款应用都十分相似 都是可以自行添加书源的软件 几乎覆盖全网小说 阅读 Android 软件本身是没有任何资源的 如果不
  • elasticsearch心得体会

    1 聚合搜索的字段如果是求和的情况下 字段不能为string类型 那么排序时字段要求是不是也一样呢
  • Qt中带token的Http请求

    详细代码 get请求 QTimer timer timer setInterval 5000 设置超时时间 timer setSingleShot true 单次触发 if m pGetManager delete m pGetManage
  • gstreamer中tee如何实现动态增减支路(预览+截图+录像)

    系列文章目录 Gstreamer中获取帧数据的方式 gstreamer中如何使用probe 探针 获取帧数据 gstreamer拉流rtsp使用appsink获取帧数据 预览 截图 gstreamer中如何使用fakesink获取帧数据 预
  • Vue3/ Vue3 生命周期 钩子函数 总结 、Vue3 内 主要 钩子函数 、Vue2 和 Vue3 生命周期钩子函数对比

    一 Vue3 生命周期 钩子函数 总结 1 介绍 Vue组件简介 Vue是组件haul编程 从一个组件诞生到消亡 会经历很多过程 这些过程就叫做生命周期 例如 生命周期就是人出生到入土是一样的 有少年时期 青年时期 中年时期 老年时期 每个
  • Requests

    REQUESTS的基本操作 参考崔庆才爬虫 GET请求 import requests r requests get http www gdsgj com r encoding r apparent encoding 根据从返回内容中解析的
  • 构造函数不能被继承

    构造函数不同于其他类方法 因为他创建新的对象 而其他类方法只是被现有的对象调用 这是构造函数不被继承的原因之一 继承意味着派生类对象可以使用基类的方法 然而 构造函数在完成工作之前 对象并不存在 构造函数不能是虚函数 创建派生类对象时 将调
  • springboot项目获取真实用户ip(不是虚拟ip)

    最近在工作中遇见一个业务场景是获取用户真实的ip地址 就跟现在网上评论展示ip一样的业务场景 然后自己就去了解了一下 1 pom依赖配置
  • 数据库模式分解(应该比较易懂吧)

    数据库模式分解 部分函数依赖 函数依赖的确定 1对1的关系时 有两个函数依赖 1对多时 有一个函数依赖 多对多时 没有函数依赖 函数依赖类型 右 边 不 为 左 边
  • DVWA-XSS (Reflected)

    大约 跨站点脚本 XSS 攻击是一种注入问题 其中恶意脚本被注入到原本良性和受信任的网站上 当攻击者使用 Web 应用程序发送恶意代码 通常以浏览器端脚本的形式 时 就会发生 XSS 攻击 给其他最终用户 允许这些攻击成功的缺陷非常普遍 并
  • 机器学习论文总结

    作者简介 洪亮劼 Etsy数据科学主管 前雅虎研究院高级经理 长期从事推荐系统 机器学习和人工智能的研究工作 在国际顶级会议上发表论文20余篇 长期担任多个国际著名会议及期刊的评审委员会成员和审稿人 责编 何永灿 欢迎人工智能领域技术投稿
  • csgo修改服务器时间,csgo热身时间参数指令 热身时间怎么改

    反恐精英 全球攻势 简称CS GO 是一款由VALVE与Hidden Path Entertainment合作开发的第一人称射击游戏 游戏中可以更改相关控制命令 下面带来csgo热身时间参数指令 热身时间怎么改方法 csgo热身时间参数指令
  • 多系统集成:vue大型项目之分模块运行/打包

    本文以vue cli3 为例 实现多系统集成下的分模块打包 分模块打包方式多种多样 下文可适用于多系统之间互不干扰 主系统可集成各子系统 各子系统又可单独运行的业务场景 一 目标 我们要实现什么 所谓分模块打包 那么各个模块内就必须得有自己
  • 使用Arthas排查问题

    简介 Arthas 是Alibaba开源的Java诊断工具 深受开发者喜爱 当你遇到以下类似问题而束手无策时 Arthas可以帮助你解决 这个类从哪个 jar 包加载的 为什么会报各种类相关的 Exception 我改的代码为什么没有执行到
  • ThreadLocal详解

    如果有兴趣了解更多相关内容 欢迎来我的个人网站看看 瞳孔空间 一 基本介绍 ThreadLocal类能提供线程内部的局部变量 这种变量在多线程环境下访问时能保证各个线程的变量相对独立于其他线程内的变量 ThreadLocal实例通常来说都是
  • 关于java.lang.UnsatisfiedLinkError的小案例

    在许多项目中我们都会用到第三方动态库 so文件 但是往往会引来很多烦恼 比如 java lang UnsatisfiedLinkError 06 17 15 52 08 097 7876 7916 com ishow scan E Andr
  • 前端js和jq中select下拉框

    获取select选中的option的值 ddlRegType find option selected val 获取select选中的text ddlRegType find option selected text 获取select选中的
  • 03-postgresql报错ERROR: operator does not exist: numeric = character varyin

    现在要把数据库换成postgresql 但在转换过程中发现postgresql对传入的参数类型匹配相当严格 如select from user where a b 假设a类型为numeric 而传入的b为string的话postgresql
  • wifi类物联产品配网前言

    文章目录 1 SmartConfig配网 仅支持2 4G 2 web方式配网 3 一键配网 BLE 传统蓝牙和wifi 3 1 BLE方式 3 2 传统蓝牙方式 3 3 wifi方式 3 4 4G 网口或其他直连设备 3 5 其他配网方式