Kürzlich habe ich ein paar WLAN-Relais von Xiaomi gekauft. Obwohl sie bisher solide waren, mag ich Xiaomis App wirklich nicht. Aber ich mag die Idee, dass es tatsächlich sowohl im LAN als auch über das Internet funktioniert. Im LAN lassen sie sich sehr schnell ein- und ausschalten, wenn man bedenkt, dass sich die Server von Xiaomi in China befinden.
Ich möchte also mein eigenes ESP8266-basiertes Relais rollen (ich weiß, dass ich die Hardware fertig machen kann, das ist also ein Bonus). Mein Problem ist, wie kann ich die Relais in meinem Netzwerk automatisch von einer Webseite erkennen?
Von einer "App" könnte ich SSDP, mDNS-SD oder UPNP verwenden, um Dinge zu erkennen. Ich habe jedoch keine Informationen darüber gefunden, ob dies über den Webbrowser möglich ist (Chrome unter Android im Grunde). Seit ich meine Webseite für Wetterstationen in eine progressive Web-App geändert habe, bin ich begeistert. Ich mag die Idee wirklich, dass Dinge nur Webseiten sind und keine Apps, die Sie installieren müssen. Und PWAs füllen die Lücke auch mit dem Offline-Modus.
Es ist jedoch seltsam, dass der "schwierige" Teil (Ein- und Ausschalten der Relais von außerhalb des LAN) über einen MQTT-Server trivial zu lösen ist. Ich würde mich aber lieber nicht auf den externen MQTT-Server verlassen. Wenn ich im LAN bin, möchte ich direkt mit den Relais sprechen. Wenn nicht, senden Sie den Befehl über MQTT.
Ich könnte mich natürlich darauf verlassen, dass der Server die Relais abfragt, aber in diesem Fall benötige ich eine Internetverbindung (wenn sich mein MQTT-Server in der "Cloud" befindet) oder einen zu Hause gehosteten Server. Ich habe einen Server zu Hause, und selbst wenn ich es nicht tun würde, könnte ein Himbeer-Pi leicht die Lücke füllen. Ideal wäre es jedoch, nicht einmal einen Server zu benötigen, wenn Sie über LAN mit den Geräten kommunizieren (in diesem Fall Wifi). Ich ziehe es vor, P2P so weit wie möglich beizubehalten und MQTT nur als Ersatz für WAN zu verwenden (MQTT löst die Probleme von CG-NAT und Portweiterleitung).