首页 文章

如果设备是本地设备,物联网应用程序如何检测?

提问于
浏览
2

在其他设备中,我有一个Belkin WeMo开关和一个3M WiFi恒温器 . 两者都附带Android应用程序 . 当我在家打开应用程序时(手机与设备在同一个WiFi子网上),应用程序说这些设备是“本地的”,或者应用程序“直接”连接到设备 . 我所做的任何更改都会直接反映在设备上 .

如果我从家外的任何地方连接,那么有些人“知道”该设备不是本地的 . 如果我理解正确,它会在某处更新自己的服务器,最终家中的设备获得更新 .

应用程序如何做到这一点?我想要复制该功能 .

基本上,我有一个Raspberry Pi,让我们说比GPIO更有用,我可以通过访问网页来触发这个动作 . 在我的家庭网络上,可以通过 http://192.168.10.25/do_something 访问该网页...在我的家庭网络之外,可以通过 http://my_custom_name.some_free_dynamic_dns.com:8080/do_something 访问该网页 . 我已将路由器设置为在WAN上将8080端口转发到LAN上的192.168.10.25:80 . 这很有效 .

如何避免2页?我想写一个有效地向我显示 192.168.10.25/do_something URL 的应用程序 . 当我在家时,它应该"automatically"检测到手机与URL在同一网络上,并且直接打开 192.168.10.25/do_something ...当我在外面时,它也应该"automatically"检测到并启动 http://my_custom_name.some_Free_dynamaic_dns.com:8080/do_something .

这里的关键部分是,当在家时,即使我的ISP关闭并且主机名没有解析,它也不重要,因为一切都是本地的 .

我该怎么做呢?

1 回答

  • 1

    让您的应用程序首先尝试连接到Web服务器192.168.10.25(或您选择的任何本地地址) . 如果在合理的时间内没有答案(5秒应该足够),则连接到外部网络服务器 .

    为了安全起见,您可能希望确保192.168.10.25处的Web服务器实际上是您的Web服务器 . 您可以使用质询和响应以及公钥加密来完成此操作 . 如果你愿意,我可以提供更多细节 .

    您可以通过查看手机的IP地址来避免等待(不存在的)本地网络服务器 . 如果它不是192.168.x.y,您可以假设您不是本地的并直接访问外部网站 .

    如果您直接在应用程序中嵌入192.168.10.25,则无需进行主机查找 .

相关问题