Ответ был дан более подробно на сайтах Arduino и Интернет вещей StackExchange. В итоге:
В целях безопасности сложно установить соединение с устройством в другой локальной сети. Устройства в сетях WiFi защищены от Интернета брандмауэром, который обычно настроен на возврат ответов на запросы, отправленные устройствами, но блокирует все нежелательные сообщения. Даже если брандмауэр разрешает входящее соединение через заданный порт, «переадресация портов» или другие пользовательские конфигурации необходимы для того, чтобы неожиданные сообщения могли попасть на одно из нескольких устройств в сети (устройства обычно используют один и тот же общедоступный IP-адрес сети и сообщения внешних систем не могут достигнуть правильного локального адреса без пересылки маршрутизатором).
Любое устройство, подверженное нежелательным запросам, подобным этому, может подвергнуться атаке и может представлять опасность для других систем в сети. Таким образом, безопаснее оставить брандмауэр тем же и вместо этого заставить устройство подписаться на внешний веб-сервер, который действует как почтовый ящик для входящих сообщений. Затем вы можете отправлять запросы на сервер с любого устройства, подключенного к Интернету, и сервер будет хранить их и передавать их на ESP8266 всякий раз, когда запрашивает ESP. Протокол MQTT, использующий программу-посредник на стороне сервера, такую как Mosquitto , и клиент, такой как PubSubClient на вашем ESP8266, может работать для такого рода модели публикации-подписки, а учебные пособия и объяснения MQTT доступны как для как на сайтах инструментов, так и на сайтах стеков.