【问题标题】:Setup a headless device to connect to a wifi network设置无头设备以连接到 wifi 网络
【发布时间】:2019-10-09 01:12:08
【问题描述】:

我有一个没有屏幕的设备 + 一个微控制器 + 一个 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

这很好用,但它需要用户手动连接到“设备 XXXX”ssid。 实际上,在 Android 上,我可以通过自动连接到这个 ssid 来让事情变得更简单,但我需要先找到 ssid。

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

不过,这看起来不是找到热点的好方法,可能还有更好的方法。 另外,我不想给它一个默认名称,因为它可能与另一个 ssid 冲突。

有没有其他方法可以在没有这个技巧的情况下找到我的设备(或我的设备 ssid)?

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

【问题讨论】:

  • 你看过Wi-Fi P2P(Wi-Fi Direct™,不要与自组织网络混淆)吗?

标签: android wifi iot chromecast


【解决方案1】:

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

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

因此,您的应用首先会扫描蓝牙信标 - 信标负载可以是任意数据 - 可能是一些已知的硬编码 GUID,以确保您正在与正确的蓝牙信标通话并嵌入 SSID。

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

请参阅此library,了解如何执行此操作的详细信息。

我相信您甚至可以配置一种“地理围栏”,这样一旦您进入信标范围,您的应用就会唤醒并进行配对。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2015-05-20
    相关资源
    最近更新 更多