Как правильно подключить приложение к устройству? На данный момент у меня есть raspberry pi 3, который управляет электричеством, и приложение для iPhone, которое я создал. Каждый раз, когда приложение переходит на передний план, оно отправляет широковещательное сообщение UDP, когда приложение получает ответ от raspberry pi, оно использует этот IP-адрес (в заголовке IP) для использования веб-сервисов, которые я создал в хабе. Этот процесс UDP выполняется все время, пока вы запускаете приложение. Это то, что обычно делают устройства IOT? Я предполагаю, что IP Raspberry Pi рано или поздно изменится.
Мой коллега рассказал мне другой способ: после того, как я впервые получил IP-адрес, вместо использования широковещательных сообщений UDP каждый раз, когда приложение запускается, используйте ICMP для проверки связи с ранее сохраненным IP-адресом, чтобы проверить, отвечает ли оно. В этом случае я использую веб-сервисы с этим IP-адресом, в противном случае снова использую широковещательное сообщение UPD.
Я не вижу в этом смысла. В основном потому, что система не работает быстрее, используя ICMP. (запрос UDP более или менее быстр, чем запрос ICMP). Более того, возможно, сейчас другое устройство начало использовать этот IP-адрес (например, смарт-телевизор или смарт-штекер) и по этой причине не будет отвечать на сетевые запросы, отправленные приложением. В этом случае приложение не может восстановиться, так как считает, что оно уже подключено к нужному устройству. Насколько я понимаю, протокол ICMP используется для диагностики, а не для обнаружения устройств.
Что вы думаете? Какой процесс используется такими устройствами, как Alexa, Philips Hue, Smart plugs... для решения проблемы обнаружения устройств их приложениями? Похоже, что Philips HUE использует SSDP, который внутри использует широковещательное сообщение UDP. Используется ли он каждый раз, когда вы запускаете приложение для обнаружения IP-адреса? (Я собираюсь проверить это позже с помощью wireshark)
Спасибо за предложения.