Среди других устройств у меня есть переключатель Belkin WeMo и 3M WiFi-термостат. Оба имеют приложения для Android. Когда я открываю приложение, когда дома (телефон в той же подсети WiFi, что и устройства), приложение говорит, что устройства являются «локальными» или что приложение подключено «напрямую» к устройству. Любое изменение, которое я делаю, прямо отражается на устройстве.Как приложения Internet-Of-Things обнаруживают, является ли устройство локальным или нет?
Если я подключаюсь из любой точки моего дома, это как-то «знает», что устройство не является локальным. Если я правильно понял, он затем где-то обновляет свой собственный сервер, и в конечном итоге устройство дома получает обновление.
Как это сделать приложение? Я хочу воспроизвести эту функциональность.
В принципе, у меня есть малина Pi, скажем, что-то делает с GPIO, и я могу вызвать это действие, посетив веб-страницу. В моей домашней сети веб-страница доступна по адресу http://192.168.10.25/do_something
... Вне моей домашней сети веб-страница доступна по адресу http://my_custom_name.some_free_dynamic_dns.com:8080/do_something
. Я установил свой маршрутизатор для порта 8080 на WAN до 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
.
Ключевая часть здесь заключается в том, что когда дома, даже если мой провайдер недоступен, имена хостов не разрешаются, это не имеет значения, потому что все локально.
Как мне это сделать?