我正在做的事情的一些背景。我有一个自制的智能恒温器,已连接到我的 WiFi。该设备托管一个用于控制一切的网站。我主要的提示是通过主机名访问设备是多么不可靠(特别是在 android 中,它将成为主 Controller )。我正在尝试找到一种在不知道 IP 地址的情况下可靠地访问设备的方法。
我正在考虑两种选择,但想了解一下是否有更好的方法,或者我的想法是否存在其他可能的缺陷。
外部网站
- 配置 WiFi 后,设备打开并将其内部 IP 发送到外部服务器
- 外部服务器获取请求并记录外部 IP 和关联的内部 IP
- 用户访问外部网站:my.thermostat.com
- 网站根据请求查找外部 IP,确定内部 IP
- 网站将页面重定向到内部 IP
因此,访问 my.thermostat.com 将重定向到内部 IP。
缺点:
- 需要访问互联网
- 多个设备具有相同的外部 IP?
Android/iOS 应用程序
- 启动应用
- 应用扫描设备的当前子网
- 向每个 IP 发送请求:http://x.x.x.x/isThermostat.html
- 收到预期响应后,启动浏览器访问该 IP
缺点:
- 需要应用访问控制面板
- 如果您想通过电脑访问该怎么办?依赖主机名?
应用程序路线似乎是最不复杂的,但我喜欢能够使用任何设备访问恒温器的想法,因此在计算机上仍然有点棘手。
如有任何想法,我们将不胜感激!
编辑
提供有关硬件本身的更多信息,它是一个 arduino yun,可以通过以太网或 wifi 连接。我不想使用静态配置或设置静态 DHCP 租约。我想制作一些这样的东西送给 friend 之类的,所以用户设置越少越好。
最佳答案
你能给一个静态内部IP吗?
通常在您的家庭路由器中,您可以选择为给定的 MAC 地址提供静态 IP,或者您可以定义设备来设置静态 IP。
我认为您的两个解决方案对于简单的事情来说都是复杂的。
关于javascript - 将网站重定向到未知的内部地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609393/