首页 > 解决方案 > 在没有远程服务器的情况下使用 PWA 进行安全的本地 IoT 设备发现

问题描述

我正在寻找一种管理和控制 IoT 设备的方法,而无需(持续)需要远程服务器参与其中,并且使用 PWA 而不是管理设备上的本机应用程序。最终的目标是物联网设备在产品最终过时(不再运行/分配服务器)时继续工作,并且拥有具有 PWA 优势的应用程序,例如始终保持最新、易于复制和廉价托管在 S3 等设备上.

例如,假设我有一个或多个不同类别的物联网设备,例如 ESP8266 和 Raspberry Pi。就像任何新的物联网设备一样,我想将其添加到网络中,并从那里通过应用程序管理其状态。在这种情况下,应用程序是 PWA,而不是完整的原生应用程序。

1) 传统上,在初始设置中,本机应用程序会扫描 wifi 网络,自动连接到具有正确名称的网络。使用 PWA,我们仅限于网络的“状态”。因此,用户必须手动切换到新连接的物联网设备的网络。这没关系。

2) 接下来,用户需要输入他/她的 wifi 凭据。可能有一些方法可以使用本机应用程序自动设置它,但我不相信 PWA 就是这种情况。这也可以。

3)然后设备重启,尝试连接到(2)中设置的网络。如果设置正确,它应该使用 DHCP 获取其 IP。现在事情变得困难了。我想从我的 PWA 中“发现”该网络。曾经有一种方法可以使用WebRTC API从设备中检索 IP 。但这已更改为显示解析为 localhost的混淆 mdns 。ip 泄漏将允许基于浏览器的网络扫描,但这不再可能。我一直希望 Android 默认使用用户路由器作为 DNS 服务器,但事实并非如此。结果是简单地使用 mDNS 也不是一种选择。我不希望用户必须检查他们的路由器、安装像 fing 这样的应用程序或做任何其他从 UX 角度破坏流程的事情。

每次应用程序启动时都需要运行第 (3) 步,因此您需要一些可靠的东西。使用 PWA 无法扫描设备,所以我需要找到另一种方法。我正在考虑类似 Docker 容器可以在网络之间找到彼此的方式(例如,参见 etcd),使用在安装期间共享的预定义密钥。问题在于,它需要远程服务器来存储附加到该密钥的 IP。我不想要那个。

非常感谢有关如何解决此问题的想法!我希望能够提供一种即使在 WAN 不可用时也能正常工作的解决方案。话虽如此,我知道如果最终用户想要启用任何语音助手或想要从 WAN 控制设备,则需要连接到远程服务器。

标签: progressive-web-appsiot

解决方案


推荐阅读