我有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
。当我在家时,它应该“自动”检测到手机与URL位于同一网络中,并直接打开192.168.10.25/do_something
……当我在外面时,它应该“自动”检测到并启动http://my_custom_name.some_Free_dynamaic_dns.com:8080/do_something
。
关键部分是,即使我所在的ISP宕机,主机名没有解析,也不应该有任何影响,因为所有内容都是本地的。
我该怎么做呢?