设置无头设备以连接到wifi网络

时间:2019-05-22 14:01:12

标签: android wifi iot chromecast

我有一个没有屏幕的设备+一个微控制器+一个wifi模块。

到目前为止很好,但基本上我想设置设备以使其可以连接到wifi网络,所以我制作了一个应用来实现这一目的。

策略是:

  • 使用自定义ssid(例如“设备XXXX”)将设备置于wifi AP模式
  • 连接到此ssid“设备XXXX”
  • 向用户询问其家庭wifi凭据
  • 将凭据发送到设备(例如,使用http)-> POST http://x.x.x.x/wifi_creds "Home" "homepassword"
  • 轮询设备以检查其是否可以连接到“家庭”网络-> GET http://x.x.x.x/conn_status
  • 连接后,停止AP模式-> POST http://x.x.x.x/wifi_ap_mode 0

这很好用,但是需要用户手动连接到“ Device XXXX” ssid。 实际上,在Android上,我可以通过自动连接到该ssid来使事情变得更加轻松,但是我需要先找到ssid。

所以我的想法是扫描所有ssid,并连接到与模式/^Device [0-9a-zA-Z]{4}/相匹配的第一个(例如Device 1234)。

但是,这似乎不是查找热点的好方法,并且可能会有更好的方法。 另外,我不想给它一个默认名称,因为它可能与另一个ssid冲突。

有没有其他方法可以找到我的设备(或我的设备ssid)而没有这个窍门?

我知道Google home能够连接到Chromecast,允许您在Chromecast处于AP模式时使用看起来像“ Chromecast XXXX”的ssid进行配置(禁用蓝牙时 ),我不确定他们是怎么做到的

1 个答案:

答案 0 :(得分:-2)

**我(可能是错误地)认为您的无头设备基于Android。如果它是Android且具有蓝牙,尤其是低功耗蓝牙并且高于Android 5.0:

您可以让该设备充当蓝牙信标,并不断广播其SSID。

因此,您的应用程序首先扫描蓝牙信标-信标有效载荷可以是任意数据-也许是一些已知的硬编码GUID,以确保您正在与正确的蓝牙信标通信,并且还嵌入了SSID。

现在去扫描SSID并连接到它。

有关如何执行此操作的详细信息,请参见此library

我相信您甚至可以配置一种'geofence',以便一旦进入信标范围,您的应用就会唤醒并进行配对。