2016-07-15 12 views
1

Hallo all Ich möchte mehrere esp8266-Geräte an meinen Router anschließen und eine mobile App erstellen, die diese Geräte finden und ihnen Nachrichten über udp senden kann. Derzeit ist geplant, dass esp-Geräte einen Port hören und dann würde meine App eine Nachricht an diesen Port senden, esp würde antworten und die App wird die IP speichern.So finden Sie alle an einen Router angeschlossenen esp8266

Gibt es einen besseren Weg, das zu tun? Ein Freund von mir sagte mir, dass dieser Ansatz fehlschlägt, wenn Routers Gateway geändert wird. Ist es wahr?

Ich rufe gerade WiFi.begin (Ssid, Passwort); mit wifi.conf() eine Verbindung zum WLAN herstellen, ohne Änderungen vorzunehmen.

Ich verwende Arduino SDK.

+0

Wird sich die mobile App im Netzwerk oder im Internet befinden? – leetibbett

+0

@leetibbett Die mobile App wird im Netzwerk sein. –

Antwort

1

Eine Möglichkeit besteht darin, alle Mac-Adressen im Netzwerk zu überprüfen. Die ersten 6 Ziffern sind der eindeutige Code für das Unternehmen, das den Wifi-Dongle erstellt hat.

Vorausgesetzt, Sie haben keine anderen Geräte im Netzwerk, die denselben Dongle verwenden, und sind nicht das, wonach Sie suchen.

Sie können alle Mac-Adressen in einem Netzwerk finden, indem Sie für jede IP eine ARP-Anfrage durchführen.

Aber alle Geräte müssten im selben Subnetz sein.

Wenn Sie Geräte sind Remote, dann würde ich mit Ihrem ursprünglichen Plan gehen, aber Ihr Freund ist richtig, wenn das Gateway ändert dies würde etwas ein wenig robuster erfordern. Verwenden Sie einen dynamischen DNS-Dienst zusammen mit einem Domänennamen. Das dynamische DNS aktualisiert Ihre DNS-Einträge in fast Echtzeit, wenn sich Ihre Gateway-Adresse ändert.

1

Ihr Freund möglicherweise mehr Details Ihrer Lösung, aber IMO das Gateway hat nichts damit zu tun. Wenn sich alle Clients und der Server im lokalen Netzwerk des Routers im selben Subnetz befinden, spielt das Gateway keine Rolle.

Ich würde eine UDP Multicast tun. Ihre mobile App müsste nur eine Anfrage senden und dann einige Sekunden lang auf Antworten von den ESPs warten.

+0

Ist es möglich, das Multicast-Paket von Windows PC zu senden? Ich habe Bojour-Drucker etwas auf meinem Windows 10 installiert. Aber ich weiß nicht, wie ich weitermachen und überprüfen kann, ob mein Gerät auf die Multicast-Anfragen reagiert oder nicht. –

+0

Bonjour ist mDNS, es hilft Ihnen, Dinge nach Namen zu finden. Auf Android können Sie [versuchen Sie eine App wie folgt] (https://play.google.com/store/apps/details?id=com.anubisg1.multicast_new&hl=de) – leetibbett

0

Geben Sie Ihr Esp8266 Geräten eine statischen IP-Adressen, so dass der mobile App im Voraus wissen, wo sie ‚gefunden‘ werden könnten:

IPAddress ip(192,168,1,xx);    // desired static IP address 
IPAddress gateway(192,168,1,yy);   // IP address of the router 
IPAddress subnet(255,255,255,0); 

WiFi.begin(ssid, password); 
WiFi.config(ip, gateway, subnet); 

while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
    Serial.print("."); 
} 

und verwenden dynamischen DNS-Dienst (wenn Sie eine statische IP-Adresse) mit Port-Weiterleitung, um auf jeden der ESPs zuzugreifen. Sie können die Ports 8266, 8267, 8268, 8269, ... oder andere über 1024 wählen und dann die Portweiterleitung in Ihren Routereinstellungen festlegen, so dass der Port 8266 an die IP-Adresse Ihres ersten ESP und Port 80 weitergeleitet wird andere), 8267-Port an die IP-Adresse Ihres zweiten ESP und Port 80 usw. wie http://xx.xx.xx.xx:8266, http://xx.xx.xx.xx:8267, http://xx.xx.xx.xx:8268, http://xx.xx.xx.xx:8269, sucht

Danach können Sie Zugriff auf Ihre ESPs von mobilen App (oder Internet) mit URLs weitergeleitet werden ... oder mit dynamischem DNS-Dienst mit: http://myhome.something.com:8266, http://myhome.something.com:8267 usw. Oder Sie können auf sie von Ihrem lokalen Netzwerk durch bekannte statische IP-Adressen zugreifen. Das heißt - Ihre mobile App muss feststellen, ob sie sich im lokalen Netzwerk befindet oder nicht. Oder Sie können immer über Proxy auf ESPs zugreifen - in diesem Fall hängen die URLs nicht davon ab, ob Sie sich innerhalb oder außerhalb des lokalen Netzwerks befinden.

Verwandte Themen