Ich verwende NodeMCU (mit ESP8266-E) mit einer aktualisierten Firmware. Alle grundlegenden Befehle funktionieren perfekt, aber es gibt ein Problem.ESP8266, NodeMCU, Soft-AP - UDP Server-ähnlicher Soft-AP, unabhängiger Zugriffspunkt
Ich wollte einen unabhängigen Zugangspunkt erstellen, der ein Verhalten wie ein UDP-Server haben könnte. Das bedeutet, ohne direkte Verbindung zu anderen Access Points. Ein einfacher UDP-Server wie ein Soft-AP.
Ich folgte diesen Schritten:
- ich eine neue Firmware auf NodeMCU hochgeladen haben.
- Ich habe ESPlorer für bessere Arbeit mit NodeMCU heruntergeladen.
- Ich habe den Quellcode unten hochgeladen.
- Ich habe mit dem NodeMCU Access Point auf meinem Desktop verbunden.
- Ich habe einige Zeichenfolgen an die NodeMCU mit einem Java UDP-Client-Programm gesendet.
- Ich habe die Nachrichten auf ESPlorer angeschaut.
- NodeMCU hat keine solchen Zeichenfolgen empfangen.
-
print("ESP8266 Server")
wifi.setmode(wifi.STATIONAP);
wifi.ap.config({ssid="test",pwd="12345678"});
print("Server IP Address:",wifi.ap.getip())
-- 30s timeout for an inactive client
srv = net.createServer(net.UDP, 30)
-- server listens on 5000, if data received, print data to console
srv:listen(5000, function(sk)
sk:on("receive", function(sck, data)
print("received: " .. data)
end)
sk:on("connection", function(s)
print("connection established")
end)
end)
Als ich versuchte, eine Nachricht mit einer Java-Anwendung zu senden, gab es keine Veränderung in esplorer. Nicht einmal, als ich versuchte, eine Nachricht mit dem Hercules-Programm (tolles Programm für TCP, UDP-Kommunikation) zu senden.
Ich vermute, dass es vielleicht die falsche IP-Adresse sein wird. Ich verwende die IP-Adresse des AP und nicht die IP-Adresse der Station.
Mit anderen Worten verwende ich diese Adresse: wifi.ap.getip()
und nicht diese Adresse wifi.sta.getip()
für Verbindungen mit dem UDP-Server. Aber sta.getip()
gibt ein Nil-Objekt zurück. Wirklich, ich weiß es nicht.
Ich werde mich für jeden Hinweis freuen.
Vielen Dank.
Ich habe meine Frage repariert. Danke – Luke
Vielen Dank. Ich habe herausgefunden, dass es endlich perfekt funktioniert. Der Grund, warum es nicht funktioniert, war mein falsches Verständnis des UDP-Protokolls. Als ich mit Hercules versuchte eine Saite zu senden, passierte nichts. Aber nachdem ich mehr Strings/Nachrichten gesendet habe, habe ich herausgefunden, dass der UDP-Server alles richtig empfangen hat. Mit anderen Worten, das UDP-Protokoll ist ein unzuverlässiges Protokoll :) – Luke
"UDP-Protokoll ist ein unzuverlässiges Protokoll" - oh ja, [sehr gut] (https://en.wikipedia.org/wiki/User_Datagram_Protocol#Reliability_and_congestion_control_solutions). –