Di recente ho acquistato un paio di relè wifi da Xiaomi. Finora sono stati solidi, non mi piace molto l'app di Xiaomi. Ma mi piace l'idea che funzioni davvero sia in LAN che su Internet. Quando sono in LAN sono molto veloci da accendere e spegnere, considerando che i server di Xiaomi sono in Cina.
Quindi voglio lanciare il mio relè basato su ESP8266 (so che posso avere l'hardware pronto, quindi questo è un bonus). Il mio problema è: come posso rilevare automaticamente i relè sulla mia rete da una pagina Web?
Da una "App" ho potuto usare SSDP, mDNS-SD o UPNP per rilevare cose. Ma non ho trovato informazioni su ciò sia possibile dal browser web (Chrome su Android in pratica). Da quando ho cambiato la mia pagina web della stazione meteorologica per renderla un'app Web progressiva, mi sono appassionato. Mi piace molto l'idea che le cose siano solo pagine web e non app che devi installare. E i PWA riempiono anche il gap con la modalità offline.
È strano, tuttavia, che la parte "difficile" (attivazione e disattivazione dei relè dall'esterno della LAN) sia banale da risolvere tramite un server MQTT. Ma preferirei non fare affidamento sul server MQTT esterno. Se sono sulla LAN, voglio parlare direttamente con i relè. In caso contrario, inviare il comando tramite MQTT.
Ovviamente, potevo fare affidamento sul server per interrogare i relè, ma in quel caso avrei bisogno di una connessione Internet (se il mio server MQTT è sul "cloud") o di un server ospitato a casa. Ho un server a casa, e anche se non lo facessi, un lampone pi potrebbe facilmente colmare il vuoto. Ma l'ideale sarebbe non avere nemmeno bisogno di un server quando si parla ai dispositivi tramite LAN (Wifi in questo caso). Preferisco mantenerlo P2P il più possibile e uso MQTT solo come fallback per quando sono su WAN (MQTT risolve i problemi di CG-NAT e port forwarding).