将应用程序连接到设备的正确方法是什么?目前,我有一个可以控制电力的树莓派3和我创建的iPhone应用程序。每当应用程序进入前台时,它都会发送UDP广播消息,当应用程序从树莓派收到响应时,它将使用该IP地址(在IP标头中)使用我在集线器中创建的Web服务。每次运行该应用程序时,都会执行此UDP进程。这是物联网设备通常做什么?我认为树莓派IP迟早会更改。
我的一位同事告诉我另一种方式:第一次获得IP地址后,而不是每次运行该应用程序时都使用UDP广播消息,而是使用ICMP ping先前保存的IP地址以查看它是否在响应。在这种情况下,我将使用具有该IP地址的Web服务,否则,请再次使用UPD广播消息。
我不明白这一点。基本上是因为使用ICMP的系统速度不快。 (UDP请求或多或少与ICMP请求一样快)。此外,也许其他设备现在开始使用该IP地址(例如智能电视或智能插头),因此,它不会回复该应用程序发送的网络请求。在这种情况下,该应用程序无法恢复,因为它认为它已连接到正确的设备。据我了解,ICMP是用于诊断而非设备发现的协议。
您怎么看? Alexa,Philips Hue,智能插头等设备使用什么过程来解决通过其应用发现设备的问题? 飞利浦HUE似乎正在使用SSDP,它在后台使用UDP广播消息。每次您运行该应用程序以发现IP地址时都使用它吗? (我稍后将通过wireshark进行检查)
感谢您的建议。
答案 0 :(得分:1)
您可以通过以下方式在本地网络上访问Raspberry Pi的主机名:
要启用它,您需要通过安装 Avahi mDNS守护程序(实现Apple的Zeroconf体系结构)在Raspberry Pi上安装 Bonjour 支持:
$ sudo apt-get install avahi-daemon
更新启动启动:
$ sudo insserv avahi-daemon
重新开始应用新配置:
$ sudo /etc/init.d/avahi-daemon restart