Ich habe eine Arduino-Karte mit einem Wifi-Netzwerk verbunden, die Internetzugang haben. Ich möchte, dass ich dieses Arduino-Board von einem anderen Netzwerk aus kontaktieren kann, ohne die Portweiterleitung im Heimnetzwerk von Arduino zu unterstützen. Momentan mache ich es so, dass der Arduino alle zwei Sekunden einen Ping an meinen Webserver sendet, was meiner Meinung nach nicht praktikabel ist.
Wie stellen Geräte wie Smart WiFi-LED-Leuchten eine Verbindung zum Internet her? Wir können sie mit unserem Mobiltelefon ohne Portweiterleitung oder andere Anpassungen der Routerkonfiguration bedienen, oder? Wie machen Sie das?
Antworten:
Um zu vermeiden, dass Sie sich in einem Netzwerk befinden müssen, das eingehenden Datenverkehr ermöglicht, müssen Sie eine Verbindung zu einem Server herstellen, der Anforderungen von Clients weiterleitet, die auch ausgehende Verbindungen zu diesem Server herstellen.
Dies ist im Wesentlichen wie das Modell eines Kommunikationssatelliten. Sowohl der Computer oder das Telefon des Benutzers oder was auch immer, als auch das IoT-Gerät unterhalten Verbindungen zu diesem Server in der Cloud, und jede Nachricht, die auf der einen Seite eingeht, wird auf der anderen Seite gesendet und umgekehrt.
Es gibt viele Möglichkeiten, einen solchen Server zu implementieren. Derzeit ist es angesagt, ein MQTT-Broker zu werden . In MQTT stellen Clients (sowohl das IoT-Gerät als auch Benutzergeräte) ausgehende Verbindungen zum Broker her, und die fehlerhaften Freigabenachrichten, die von einem Client zu einem Thema veröffentlicht wurden, werden an alle Clients gesendet, die dieses Thema abonniert haben "Thema.
Da bereits eine Verbindung hergestellt wurde, kann der Broker unerwünschten Datenverkehr ohne Wartezeit für Abfrageintervalle senden
Um die Verbindungen aufrechtzuerhalten, wird gelegentlich Keep-Alive-Verkehr gesendet
Wenn die Verbindung unterbrochen wird, gibt es Regeln für den Versuch, sie wiederherzustellen
Im Wesentlichen tritt eine merkliche Wartezeit nur auf, wenn der Broker versucht, eine Nachricht nach unten weiterzuleiten, und die Verbindung sich als unterbrochen und noch nicht repariert herausstellt. In diesem Fall würde die Nachricht verzögert, bis die erneute Verbindung hergestellt ist. (Es gibt Optionen zum Speichern, Ablegen usw.).
quelle