物联网设备接收其网络设置的好方法是什么?

物联网 无线上网 ESP8266 阿杜伊诺
2021-06-16 23:08:56

我正在使用 ESP8266 构建物联网设备。该设备最终将包含几个电机,我想使用 MQTT 控制这些电机。我想让设备尽可能便宜,所以我想避免使用显示器和键盘之类的东西。

因此,当设备转动时,它应该连接到本地 WiFi,然后连接到 MQTT 代理。但是它如何知道要连接的本地 SSID,以及用户名和密码呢?由于设备没有显示器或键盘,因此无法输入这些东西。用户如何知道设备是否能够连接?对于故障排除,如果设备至少有某种方式来指示可能存在的问题,那就太好了。

我想到的解决方案是在设备上设置一个按钮和一个 LED。该按钮将被标记为“配置”或类似的。按下按钮后,设备将开始作为具有预定义 SSID 的 WiFi 接入点运行。它将有一个网络服务器,因此用户可以用笔记本电脑或手机连接到这个预定义的接入点,并输入本地网络设置(SSID、用户名和密码)以及 MQTT 代理的地址。LED 将用于指示操作模式,也用作错误指示。例如,当 LED 稳定发光时,一切都已连接,长闪表示处于配置模式,短闪表示存在错误或类似情况。

我的问题是,当涉及到这个问题时,我提出的解决方案是一种标准的做事方式吗?即用户会觉得它是一个熟悉的流程,还是有其他更好的方式?在做了一些搜索之后,我发现了这个,这似乎是一个类似的用户流程。是否仍然有兴趣听听您对此有何经验,以及您将如何解决?

如果事实证明这是解决此问题的好方法和有用的方法,并且由于它是一种通用解决方案,那么最好不要过多地重新发明轮子。我在想可能有一个图书馆可以做到这一切。该库将配置按钮的输入引脚和 LED 的输出引脚,然后处理其余部分。它可以基于PubSubClient库和教程ESP8266: Connecting to MQTT broker 构建那么是否有一个图书馆可以做到这一点或类似的东西?如果没有,我会尝试创建自己的,但想先了解一下那里有什么。

谢谢!

2个回答

您所描述的实际上是解决将 WiFi 物联网设备集成到本地 LAN 问题的一种非常常见(最常见?)的方法。

例如,根据我的经验,Amazon Echo Devices是通过这种方式设置的或各种智能开关/智能插头(例如Shelly 设备)。

根据您的要求,您也可以在没有 LED 和按钮的情况下离开。
这是一个包含技术细节解决方案,它将尝试连接到配置的网络,如果不成功,则打开一个接入点进行配置。
在 AP 模式下使用强制门户的第二个实现

MQTT PubSub 部分以及按钮和 LED 到相应草图中的实现应该相当简单。

替代方案:
有关使用 AP 模式进行配置的可能替代方案,请查看Wi-Fi 保护设置 (WPS)设备配置协议的技术

还有luftdaten.info项目,它是一个带有自己固件的开源粒子传感器。他们做的事情与您建议的类似,只是没有配置按钮。他们这样做,默认情况下会在设备开机时启动 Web 服务器。在某个阈值(我认为它在 3-10 分钟之间)之后,内部 Web 服务器将关闭 - 因此在下一个电源循环之前无法进行更多配置。

对于某些情况,此解决方案可能过于不安全,但您可能仍然想知道。

编辑:

要在设备中进行初始配置,请执行以下步骤:

当设备启动时,它会尝试访问配置的 WLAN(第一次启动时没有配置的 WLAN)。如果它无法连接到预先配置的 WLAN,它会设置一个静态 IP 并跨越它自己的无线网络,无需密码,人们可以通过静态 IP 地址连接到并进行初始配置。