Ich habe es jetzt mal ausprobiert.
Ich habe dabei auf eine Netzwerkadresse direkt gesendet xxx.xxx.x.1 und auf Broadcast xxx.xxx.x.255. Als Testtool habe ich Packet Sender installiert. UDP-Adresse 58817.
Beim Deep Sleep habe ich einen Wert von 128 eingesetzt. Das sind Abstände von ca. 6 Sekunden in denen er schläft, aufwacht (Reset) und Paket sendet.
Die Pause vor einem Deep Sleep habe ich mit "delay(5000)" gemacht.
Jedes Paket kommt an.
Das Versenden der Pakete dauert durchaus, mit Anmelden am Netzwerk, ein paar Sekunden. Geht das nodeMCU zu schnell in Deep Sleep, wird kein Paket versendet.
Ich habe auch ein nodeMCU, das rumspinnt, weil es ständig Ausnahmefehler produziert und also immer neu startet. Ich habe dann ein anderes nodeMCU genommen, gleiche Sorte (hatte 5 bestellt), das funktioniert scheints einwandfrei.
Jedenfalls, bei diesem ersten Test jetzt kann ich nicht erkennen, dass nichts ankommt, das Gegenteil ist der Fall.
Ich habe die FritzBox Cable 6360.
Ich habe die Sleep-Zeit auf ca. 1min verlängert:
Ich sehe, ob alle Pakete ankommen, weil ich immer nur ein Paket verschicke. Nicht mit mehreren Versuchen (zig Pakete bis eins ankommt).
MfG
PS:
Code:#include <ESP8266WiFi.h> #include <WiFiUDP.h> #define PORT 50000 //ab 50000 ist mir sicherer, habe ich irgendwann mal ausspioniert, untenrum muss man bei Portnummern ggf. mit Kollisionen anderer Programme rechnen WiFiUDP udpServer; const char* ssid = "xxxxxxx"; //SSID WLAN Netz const char* password = "xxxxxxxxxxxxxxxxxxxxxxx"; //Passwort des WLAN Netzes const char* ziel = "192.168.0.255"; //Empfänger Broadcast-Adresse xxx.xxx.x.255 ! void setup() { Serial.begin(115200); delay(10); Serial.println(); Serial.println(); Serial.print("Verbinde mich mit Netz: "); Serial.println(ssid); WiFi.begin(ssid, password); WiFi.config(IPAddress(192,168,0,xx), IPAddress(192,168,0,x), IPAddress(255,255,255,0), IPAddress(192,168,0,x)); //richtige Konfiguration - 192,168,0,x : IP-Adresse der FritzBox //und 192,168,0,xx : IP-Adresse dieses nodeMCU //255,255,255,0 : Subnetzmaske while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi Verbindung aufgebaut"); Serial.print("Eigene IP des ESP-Modul: "); Serial.println(WiFi.localIP()); // UDP Server starten udpServer.begin(PORT); delay(500); if(udpServer.beginPacket(ziel, 58817)==1)Serial.println("beginPacket - ok"); //Zielport muss natürlich stimmen, nicht irgendwo hin schicken - ziel ist hier Broadcast-Addresse (s.o.) //Port: >50000 udpServer.write("Hallo"); udpServer.endPacket(); } void loop() { delay(5000); //extremst wichtig - UDP-Paket muss erst sicher versendet sein! ESP.deepSleep(60*1000000); }







Zitieren


Lesezeichen