Недавно я купил пару Wi-Fi реле от Xiaomi. Пока они были солидными, мне действительно не нравится приложение Xiaomi. Но мне нравится идея о том, что он действительно работает как в локальной сети, так и через Интернет. Когда в локальной сети они очень быстро включаются и выключаются, учитывая, что серверы Xiaomi находятся в Китае.
Поэтому я хочу запустить свое собственное реле на основе ESP8266 (я знаю, что могу подготовить аппаратное обеспечение, так что это бонус). Моя проблема в том, как я могу автоматически обнаружить реле в моей сети с веб-страницы?
Из «приложения» я мог использовать SSDP, mDNS-SD или UPNP для обнаружения вещей. Но я не нашел информации о том, возможно ли это из веб-браузера (Chrome на Android в основном). Поскольку я изменил свою веб-страницу с метеостанцией на Progressive Web App, меня зацепило. Мне действительно нравится идея, что веб-страницы - это не приложения, которые нужно устанавливать. И PWAs заполнить пробел в автономном режиме тоже.
Странно, однако, что «сложная» часть (включение и выключение реле вне локальной сети) тривиальна для решения через сервер MQTT. Но я бы предпочел не полагаться на внешний сервер MQTT. Если я нахожусь в локальной сети, я хочу поговорить с реле напрямую. Если нет, то отправьте команду через MQTT.
Конечно, я мог бы положиться на сервер для запроса реле, но в этом случае мне понадобится подключение к Интернету (если мой сервер MQTT находится в «облаке») или домашний сервер. У меня дома есть сервер, и даже если бы я этого не сделал, малиновый пи мог бы легко заполнить пробел. Но в идеале не нужно даже использовать сервер при общении с устройствами по локальной сети (в данном случае Wifi). Я предпочитаю сохранять P2P настолько, насколько это возможно, и использовать MQTT только как запасной вариант, когда я нахожусь в WAN (MQTT решает проблемы CG-NAT и переадресации портов).