通过app让无界面的wifi音箱连上网是怎么实现的

fevedy 2017-11-14 11:20:27
新买的wifi音箱,没有连接过任何路由器。在手机app上输入wifi的账号和密码,点击“使音箱联网”,然后在音箱上按了个按钮,过了一段时间之后,音箱就连上网了。实现这个功能的大致思路是什么?
...全文
2301 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
mLee79 2017-11-15
  • 打赏
  • 举报
回复
如果上面说的是 Wifi-direct 的话, 本来这东西是蛮好的, 不过现在的方案几乎就没支持的, 并且各个平台支持程度差别太大, 基本没见有用的 .. 如果是让设备先处于 STATION + Soft AP 模式完成配置的话, app先连接设备的热点完成配置, 这个流程太捉急, 并且不是所有平台都可以随意获取足够的权限的, 有些过程得人工参与, 配置过程特别繁琐, 花的时间得特别长, 不好用 ... 前面还有不少设备通过把 WIFI 配置信息调制的几个特定频率的声音上进行配置的, 像叮咚音箱啥的, 实际上蛮好的, 速度也蛮快, 不过没话筒的设备没法用, 前不久我也研究过, 用一个特定的扩频序列把 WIFI 配置信息调制到声音上, 设备通过话筒拾音, 做 FFT, 再从中恢复出WIFI配置信息, 也不算麻烦, 不过让 M0 M3 级别的片子跑 FFT 压力还是比较大, 还是在处理能力比较强的设备上跑比较好 ... 剩下的一大波设备都是用 混杂模式抓取 UDP 广播/多播的方式完成配置, 并且越来越流行, 这个实现起来更简单些, 代码也不要几行, 比较方便, 腾讯, 阿里啥的都在推, 在网络不是特别糟糕的时候蛮不错的, 基本上几秒设备就能收到配置信息呢, 就是网络糟糕的时候真很难连上 ...
  • 打赏
  • 举报
回复
802.11标准本身就支持对等连接(点对点连接),所谓的ad hoc模式,可以设备间自组网,支持最多9个设备自组网(也可能新标准增加了,我没有确认),不需要AP。商业实现一般叫wifi direct、wlan direct、wifi p2p等等,很多手机、打印机都支持这东西,可以手机直接打印到打印机,手机之间对传文件。具体协议实现没有仔细研究,大致是发起者广播一个EAP消息,里面包含身份鉴别请求,接收到消息的设备如果可以直连就会给它回复一个响应消息,然后双方进一步协商决定能不能互联,比如楼主的手机APP,应该识别本家wifi音箱,如果一个打印机回复它,它应该不理,也不会把wifi用户名密码发给对方。 安卓源码中就有wifi p2p的代码,有兴趣的可以研究一下。
mLee79 2017-11-15
  • 打赏
  • 举报
回复
卖 1K 的东西人家就用 30 块做 MCU 啊, 如果人家产品定义不需要 蓝牙什么事, 无聊的多搞个模块干嘛.. 发 UDP 广播进行配置这事 都这么成熟了, 当然不需要啥后台服务器 ...
Sandrer 2017-11-15
  • 打赏
  • 举报
回复
引用 28 楼 mLee79 的回复:
低成本的 WIFI 模块没有蓝牙, 像 ESP8266, RTL8710 啥的, 有蓝牙的价钱贵一大截, 并且没蓝牙的还省电啊 ...
这个成本对于几十上百的产品可以忽略了, 一个蓝牙芯片也才2~5块左右的批发价, 而且说省电的话肯定比wifi省 wifi 每时每刻都在收数据包, 还不包括单片机芯片的程序执行消耗和电路板各元件的耗电........ 如果这产品真有后台服务器来维护联网, 那这个成本更贵
mLee79 2017-11-15
  • 打赏
  • 举报
回复
低成本的 WIFI 模块没有蓝牙, 像 ESP8266, RTL8710 啥的, 有蓝牙的价钱贵一大截, 并且没蓝牙的还省电啊 ...
真相重于对错 2017-11-15
  • 打赏
  • 举报
回复
引用 26 楼 Sandrer 的回复:
又广播又啥的感觉很复杂 既然手机是使用app来发送包的 为啥app就不直接控制手机蓝牙与音箱蓝牙自动配对 然后把ap信息发过去不就完事了
我估计是成本问题。
Sandrer 2017-11-15
  • 打赏
  • 举报
回复
又广播又啥的感觉很复杂 既然手机是使用app来发送包的 为啥app就不直接控制手机蓝牙与音箱蓝牙自动配对 然后把ap信息发过去不就完事了
真相重于对错 2017-11-15
  • 打赏
  • 举报
回复
引用 41 楼 mLee79 的回复:
[quote=引用 35 楼 hdt 的回复:] 嗯,不知道这样的东西的安全性怎么样,比如家里有个无线摄像头,隔壁老王用app连进来会怎样?
一般 配置前会要求用户用某个姿势按某些按键的, 如果你们实在是心有灵犀, 那连进来就连进来呗 .. [/quote] 心胸开阔,赞一个
mLee79 2017-11-15
  • 打赏
  • 举报
回复
模块厂家也要给认证费, 如果他们实现了这功能给你用, 应该不会为了逃这点钱不去过认证, 这钱最后还是得做设备的给... 看了下 WIFI 联盟上写的价钱, 好像集成已经经过认证的 WIFI 模块, 每种设备要 4000 米刀, 写 WLAN Direct 应该能省这笔钱 ... 像写 uPnP 不写 DLNA 么 ....
  • 打赏
  • 举报
回复
需要认证费还不知道,我理解只是在产品上使用Wi-Fi Direct标记/宣传需要认证,技术本身不需要,所以某些手机里写的是WLAN Direct。
mLee79 2017-11-15
  • 打赏
  • 举报
回复
引用 42 楼 DelphiGuy 的回复:
[quote=引用 37 楼 u010165006 的回复:] @DelphiGuy mLee79说的"用 混杂模式抓取 UDP 广播/多播的方式完成配置",是指智能设备wifi模块自己事先工作在混杂模式吧。
这样只能用于配置简单设备,像手机-打印机、手机-手机直连这种就不行了。 [/quote] 你要的就是 Wifi Direct 吧, 那东西好像认证费用不低, 相对于蓝牙好处也很有限, 在便宜点的设备里应该没啥人愿意花这钱 ... 加个蓝牙模块做的还是不少, 选 WIFI Direct 的应该现在还很少 ... 实际上 蓝牙 / WIFI Direct 建立连接应该更简单些吧, 就是要多花钱钱 ...
  • 打赏
  • 举报
回复
引用 37 楼 u010165006 的回复:
@DelphiGuy mLee79说的"用 混杂模式抓取 UDP 广播/多播的方式完成配置",是指智能设备wifi模块自己事先工作在混杂模式吧。
这样只能用于配置简单设备,像手机-打印机、手机-手机直连这种就不行了。
mLee79 2017-11-15
  • 打赏
  • 举报
回复
引用 35 楼 hdt 的回复:
嗯,不知道这样的东西的安全性怎么样,比如家里有个无线摄像头,隔壁老王用app连进来会怎样?
一般 配置前会要求用户用某个姿势按某些按键的, 如果你们实在是心有灵犀, 那连进来就连进来呗 ..
mLee79 2017-11-15
  • 打赏
  • 举报
回复
贴一个简单的 混杂模式抓到的包头例子, 这个是在 ESP8266 上抓到的一个 UDP 包, ... AA AA AA .... 这个是目标的 MAC 地址, 如果你发 UDP 广播, 这儿应该是 FF FF FF FF FF FF, 如果你发 UDP 多播 这个就应该是 01 00 5E XX XX XX ... BB BB BB .... 这个是 AP 的 MAC 地址, CC CC CC ... 这个是发送者的 MAC 地址, 这些你都控制不了, 还有其他很多地的内容你都控制不了 ... 你能控制的是 偏移 50 的那个 EA 05, 那个是加密以后的长度域, 各种不同的加密算法后, 同样长度的 UDP 包长度是 不确定的, 但他们的差值是确定的, 也就是长度 2 的UDP 包, 加密后长度也总是比长度 1 的包大1字节 ... B1 0E EA 55 00 00 00 00 E2 00 00 00 88 42 30 00 ...U.........B0. AA AA AA AA AA AA BB BB BB BB BB BB 88 25 93 AC .mA..F.%.....%.. EF CF F0 B9 00 00 A8 2B 00 20 00 00 64 00 31 0C .......+. ..d.1. 01 00 EA 05 F0 B9 CC CC CC CC CC CC .......%....
  • 打赏
  • 举报
回复
这样啊,那应该是可行的。
mLee79 2017-11-15
  • 打赏
  • 举报
回复
上位机/手机不用处于混杂模式, 只需要按时序发送特定长度的 UDP 包就可以了, 是最终设备处于混杂模式啊... 那些设备一般连 OS 都没有, 一般就个 timer 驱动的分时系统, 你想咋搞还不就咋搞, 设置混杂模式还不就一句话的事情 ... 实际上 Win/Linux 让网卡处于混杂模式大部分时候也是可以的, 最多就要个过滤驱动, 服务器版本可能限制严格点, 好像也基本上没问题... 那些给 AP 设置个弱密码, 靠MAC地址过滤还以为很安全的注意下, 你那基本上就是邀请别人来蹭网的 ...
ooolinux 2017-11-15
  • 打赏
  • 举报
回复
@DelphiGuy mLee79说的"用 混杂模式抓取 UDP 广播/多播的方式完成配置",是指智能设备wifi模块自己事先工作在混杂模式吧。
  • 打赏
  • 举报
回复
标准解决方案肯定是wifi direct这种,毕竟是802.11标准中就支持的功能,就我实测,用电脑无线网卡、手机直连HP-4538打印机是可以的,当然要先在打印机前面板启用wifi direct。 至于mLee79说的"用 混杂模式抓取 UDP 广播/多播的方式完成配置",虽然我没有试过,相信技术上是可行的,但是这个方案最大的问题在于APP能否把设备的无线网卡设置为混杂模式,很多驱动,尤其是windows版驱动,出于安全方面的考虑,是不支持设置无线网卡工作在混杂模式的,需要用修改版驱动或者自己写驱动,手机系统还需要root权限才能设置成功,对应用环境要求太高,从逻辑上来讲,商业产品应该不太会采取这种方案(我个人的理解)。
真相重于对错 2017-11-15
  • 打赏
  • 举报
回复
嗯,不知道这样的东西的安全性怎么样,比如家里有个无线摄像头,隔壁老王用app连进来会怎样?
CT8100 2017-11-15
  • 打赏
  • 举报
回复
要不直接买个收发器?单片机上的那种
加载更多回复(25)

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧