连接IOT设备(UDP或ICMP)的正确方法

问题描述 投票:1回答:1

将应用程序连接到设备的正确方法是什么?目前,我有一个覆盆子pi 3控制电力和我创建的iPhone应用程序。每次应用程序进入前台时,它都会发送UDP广播消息,当应用程序收到来自覆盆子pi的响应时,它会使用该IP地址(在IP标头中)来使用我在集线器中创建的Web服务。此UDP过程在您运行应用程序时始终完成。这是物联网设备通常做的吗?我假设树莓派IP迟早会改变。

我的一位同事用另一种方式告诉我:在我第一次获得IP地址后,每次应用程序运行时都不使用UDP广播消息,而是使用ICMP ping先前保存的IP地址以查看它是否正在响应。在这种情况下,我使用具有该IP地址的Web服务,否则,再次使用UPD广播消息。

我没有看到这一点。基本上是因为系统使用ICMP并不快。 (UDP请求或多或少与ICMP请求一样快)。此外,也许,另一台设备现在开始使用该IP地址(如智能电视或智能插头),因此,它不会回复应用程序发送的网络请求。在这种情况下,应用程序无法恢复,因为它认为它已经连接到正确的设备。据我所知,ICMP是用于诊断的协议,而不是用于设备发现。

你怎么看? Alexa,Philips Hue,Smart插头等设备使用的流程是什么来解决应用程序发现设备的问题?飞利浦HUE似乎正在使用SSDP,它在引擎盖下使用UDP广播消息。是否每次运行应用程序时都会使用它来发现IP地址? (我稍后会用wireshark检查这个)

谢谢你的建议。

udp iot icmp broadcasting ssdp
1个回答
1
投票

您可以通过以下方式在本地网络上启用Raspberry Pi的主机名:

http://raspberrypi.local

要启用它,您需要通过安装Avahi mDNS守护程序(实现Apple的Zeroconf架构)在Raspberry Pi上安装Bonjour支持:

$ sudo apt-get install avahi-daemon

更新启动启动:

$ sudo insserv avahi-daemon

重新启动以应用新配置:

$ sudo /etc/init.d/avahi-daemon restart
© www.soinside.com 2019 - 2024. All rights reserved.