Ich bin (überraschend) ein bisschen vorangekommen. Mal sehen, wie es weiter geht. Näheres kommt noch.
Mal ne VorSCHAU.
Ich bin (überraschend) ein bisschen vorangekommen. Mal sehen, wie es weiter geht. Näheres kommt noch.
Mal ne VorSCHAU.
Geändert von oberallgeier (23.07.2023 um 19:01 Uhr)
Ciao sagt der JoeamBerg
Schau doch bitte mal in die Konsole der Arduino-IDE.
Die ESP spucken einiges an Meldungen aus- wenn dort immer wieder (mit geringem zeitlichen Abstand) das Gleiche erscheint, dann bleibt er hängen und rebootet.
Du kannst in deinem Code dann gut platzierte Debug-Meldungen unterbringen, um rauszufinden, wo er hängen bleibt.
Falls es sowas ist, das ist lösbar...das hatte ich auch etliche Male, hab es aber immer hingekriegt.
Und ja, wie gesagt: die Dinger haben ein gewisses...Eigenleben.
Nicht alles ist dokumentiert.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Ja, das war eine der Ursachen mit denen ich kämpfte. Hatte allerlei Meldungen eingefügt (hatte ja wirklich keine Ahnung was da läuft . .) und damit nur das Chaos vergrößert. Langsam komm ich auf den Grund meiner Probleme... wenn dort .. dann bleibt er hängen .. Debug-Meldungen.. wo er hängen bleibt ..
Na ja, ich weiß manchmal g arnicht wonach ich suchen soll - mal ehrlich geschrieben... Nicht alles ist dokumentiert.
Danke für die Hinweise.
Ciao sagt der JoeamBerg
Setzt mal an irgendeine Stelle in die Hauptschleife ein yield().
Das ermöglicht dem ESP, Hintergrundprozesse abzuarbeiten (das ganze WLAN-Gedöns ist so einer).
Bringt oft Stabilität.
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Hi,
versuch bei der einen Platine doch mal den Quellcode der vorher funktioniert hat.
Als Passwort 1234 zu nehmen wird wohl nicht funktionieren. Das ist zu kurz.
Darin sind sich alle Quellen einig die ich habe finden können.
Oder teile wirklich mal deinen Quelltext.
Crypi
Problem: Ein Server ist vom Client nicht ansprechbar; Basis ESP8266... versuch .. den Quellcode der vorher funktioniert hat .. Oder teile .. deinen Quelltext. //Crypi
Projekt:
Eine WLAN-Server-Client-Kombination aus zwei ESP8266 soll die Information eines im Briefkasten angekommenen Poststücks in einen Wohnraum weiterleiten und da anzeigen. Im Wohnraum wird ein ESP8266 als AP (alternativ, eigener Versuch: soft-AP) eingerichtet mit dem Programm FLAG. Im Briefkasten wird mit einem gleichen ESP und einem Sensor der Client mit dem Programm "Pbox" eingerichtet. Durch den Einwurf von Post wird der Client resettet, aus dem "Tiefschlaf" geweckt, meldet das dem Server und geht wieder in den Tiefschlaf. Der Server zeigt durch Einschalten eines Signals den Empfang dieser Nachricht, die vom eingeworfenen Postgut ausgelöst wurde. Das Projekt ist in dem "ESP8266-Projektbuch" beschrieben; Autor Martin Mohr. "ESP" meint hier eine kleine Platine mit ESP8266 12-F, USB-Buchse, 5Vzu3,3V-Wandler etc.
Abbildung ESP-Projektbuch.JPG
Realisierung
Dieses Projekt "Briefkasten-is-was-drin-Sensor" mit "Signalausgabe" habe ich nach der Beschreibung in der ebook-Ausgabe "Das ESP8266-Projektbuch" angefangen. Die beiden Programmteile "FLAG" für Signalausgabe im Wohnbereich und "PBox" für Briefkasten+Sensor wurden ausgelesen (schlechte PDF, leider viele Lese-, Schreib- und daraus Compilier-Fehler) und als separate *ino-Codes abgelegt. Arbeitsbasis Arduino IDE 2.1.1 mit core ESP8266 3.1.2.
Abbildung ArduinoIDE2-1-1.JPG
Nach compilieren und flashen der beiden Programme ist die WLAN-SSID nicht bzw. nicht zuverlässig zu finden. Im folgenden Code sind Zeilen aus dem Originaltext blau markiert. Wenn die blauen Zeilen (alt, original) durch die roten (neu erstellt) ersetzt werden (Kommentarmarken!) wird ein WLAN-Server (Abbildung) aufgebaut und feststellbar.Code:..FLAG.. // Programm Flag-ESP aus "ESP8266 Das Projektbuch", Seiten 27ff ... korr 08072023 /* Beginn: bearbeitet am 20.07.2023 00:44; Board #01, Einstellg >>FLAG<< auf . . . . . . . Aktuell bearbeitet 27 07 2023 13h30 übernommen aus D:\..\A2_00\Etest1\AZ..6h14.txt */ #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "NodeKTM"; // Empfänger ist hier FLAG ! ! <<< Aufrufer = Postbox ! ! //## const char* pass = "12345678"; // // / / / / / / Neue/geänderte Deklrarationen etc const char* password = "12345678"; //Enter Password here IPAddress local_ip(192,168,1,119); // \ \ \ \ \ \ Neue/geänderte Deklarationen etc IPAddress ip(192,168,1,120); IPAddress gateway(192,168,1,1); // 22072023-1810 geändert von 1 auf 100 >>>>> nutzt nix, zurück auf 1 IPAddress subnet(255,255,255,0); // String inString; ESP8266WebServer server(80); // -------------------------- void handleRoot() { server.send(200, "text/plain", "ESP Flag Server"); } // -------------------------- void handleFlag() { server.send(200, "text/plain", "Flag is up"); delay(1500); } // ------------------------------------------------------- void setup() // ssid = "FLAG"; { // Sequenz setup Start Serial.begin(115200); Serial.println("\r\n") ; // -------------------------- Beginn "alter" WiFi-Beginn aus "..Projektbuch.." // WiFi.begin(ssid, password); // im Original (-buch) steht "pass" // WiFi.config(ip, gateway, subnet); // -------------------------- Ende "alter" WiFi-Beginn // -------------------------- Beginn "neuer" WiFi-Beginn aus "..Simpl..Srvr-01.." WiFi.softAP(ssid, password); WiFi.softAPConfig(local_ip, gateway, subnet); delay(100); // -------------------------- Ende "neuer" WiFi-Beginn aus "..Simpl..Srvr-01.." delay( 1000); while (WiFi.status() != WL_CONNECTED) //#### "FLAG"=Anzeige { delay( 500); Serial.print("."); } // Serial.println("") ; Serial.print("Datei ESPtst1.ino für FLAG. "); Serial.print("Verbunden mit "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()) ; delay(1500); server.on("/",handleRoot) ; server.on("/flag/", handleFlag); server.begin(); Serial.println("HTTP server started"); } // Sequenz setup Ende void loop(void) { server.handleClient(); }Abb NodeKTM-WLAN-IPv4-x121-17h17.JPGCode:..Pbox.. // Programm Postbox-ESP aus "ESP8266 Das Projektbuch", Seiten 35ff ... korr 08072023 /* bearbeitet am 20.07.2023 23:46 => hh:mm setup mit delay(1500) vor+nach Serial.println . . . . aktuell bearbeitet 27 07 2023 11:04 Code für Pbox aus "..Projektbuch.." übernommen/kontrolliert 27 07 2023 11h30 >> geändert nur ssid > "NodeKTM" und pass > "12345678" 27 07 2023 14h00 >> und geändert: delay nach "serial.begin" / / / / */ #include <ESP8266WiFi.h> const char* ssid = "NodeKTM"; // Dies hier ist Postbox (Empfänger ist FLAG/2) const char* pass = "12345678"; // //## const char* serverIp = "192,168,1,119"; // wie FLAG geändert auf 20 am 24.07.2023-17h46 const char* serverIp = "192,168,1,122"; // 29.07.2023-16h28 neu; laut WLAN-Daten von Board#01/NodeKTM // Versuche: 16h45: 117, 16h46 118, 16:53 119, 17:00 120, 17:17 121, 17h26 122 int serverPort = 80; WiFiClient client; // -------------------------- void setup() { Serial.begin(115200); delay( 1000); Serial.println("\r\n"); // Anmelde"text"; Pbox #02, Zeilenvorschub WiFi.begin (ssid, pass); // while (WiFi.status() != WL_CONNECTED) { delay( 500); Serial.print("."); } delay( 1000); Serial.println(""); Serial.print("Pbox verbunden mit "); Serial.print(ssid); Serial.print(", IP address: "); Serial.println(WiFi.localIP()); if ( !client.connect(serverIp, serverPort) ) { Serial.println("connect fail"); } client.print("GET /flag/"); client.println(" HTTP/1.1"); client.print("Host: "); client.println(serverIp); client.println("Connection: close"); client.println(); client.stop(); delay(1500); // ESP.deepSleep(0); } void loop() { }
Problem:
Der Server ist vom Client nicht ansprechbar. Seine IPv4-Adresse *.121 ist nicht erreichbar, siehe Terminaldarstellung. Variation der serverIp im Programm Pbox von 192,168,1,117 bis *.122 zeigten keinen Erfolg.
Abb Terminal_28072023-23h52.JPG Abb Terminal_29072023-17h42.JPG
Kennt jemand dieses Problem? Bitte um Hilfe.
Wo sind meine Fehler? Sind die angezeigten IPs, siehe Bild "NodeKTM-WLAN..", richtig? Muss für die Kommunikation eine andere erstellt/angesprochen werden? Welche?
Danke im Voraus
Geändert von oberallgeier (30.07.2023 um 10:16 Uhr) Grund: Fehler beseitigt
Ciao sagt der JoeamBerg
das wäre für mich ein grund sich ein andres beispiel zu suchen...
EDIT:
der hier schreibt zwar, dass sein projekt noch nicht so funktioniert wie es sollte, allerdings ist die Suche nach dem fehler vermutlich einfacher als in einem vom pdf eingescannt code. Man müsste das aufbauen und schauen warum es nicht funktioniert. Und er arbeitet ja auch dran. Übrigens ist das das erste mal, dass ich so einen hinweis sehe. bemerkenswert!
Geändert von inka (30.07.2023 um 17:26 Uhr)
gruß inka
also, ich weiss nicht ob das was ich hier schreibe nun deinen vorstellungen entspricht, hoffe es aber:
btw: ich verwende linux, unter windows kann das alles ein bischen anders aussehen...
--------------------------------------
- ich habe zwei jungfräuliche ESP8266 genommen
- auf eines den code "post_box_ESP.ino" unverändert geflasht
- auf das andere den folgenden "soft_AP_KTM.ino" code geflasht:
der AP NodeKTM erscheint nun auf dem PC unter den netzwerken, in den eigenschaften des netzwerkes habe ich die IP und anderes eingetragen:Code:// board nodeMCU 1.0 #include <ESP8266WiFi.h> IPAddress ip (192, 168, 1, 92); IPAddress local_ip (192, 168, 1, 92); IPAddress gateway (192, 168, 1, 250); IPAddress subnet (255, 255, 255, 0); void setup() { Serial.begin(115200); delay( 1000); Serial.println(""); Serial.println(""); Serial.println("- - - -"); delay( 1000); Serial.println("sett Serial.println(""); Serial.println(""); Serial.println("- - - -"); delay( 1000); Serial.println("setting up softAPtst; n01 05082023 16h40"); Serial.println("AP testen: NodeKTM, 12345678"); boolean result = WiFi.softAP("NodeKTM", "12345678"); delay( 2000); if (result = true) { Serial.println("ready! Step: '1' ca 2sec"); } else { Serial.println("failed!"); } } void loop() { Serial.printf("station connected = %d\n", WiFi.softAPgetStationNum()); delay( 1000); ing up softAPtst; n01 05082023 16h40"); Serial.println("AP testen: NodeKTM, 12345678"); boolean result = WiFi.softAP("NodeKTM", "12345678"); delay( 2000); if (result = true) { Serial.println("ready! Step: '1' ca 2sec"); } else { Serial.println("failed!"); } } void loop() { Serial.printf("station connected = %d\n", WiFi.softAPgetStationNum()); delay( 1000); }
nun kann ich mich in diesem AP mit dem PC, smartphone anmelden und auch der zweite ESP8266 mit dem "PostBox" code meldet sich nach einem reset für ein paar sekunden an. Ist das so ok, oder habe ich es völlig falsch verstanden?
gruß inka
Danke für Deine Mühe! Du hast das meiste schon richtig vestanden. Großer Dank für den Hinweis zu den Netzwerkeigenschaften: nun habe ich da etliches zusätzlich gelernt . . . das freut mich... linux, unter windows kann das .. anders aussehen .. der AP NodeKTM erscheint nun auf dem PC unter den netzwerken, in den eigenschaften des netzwerkes habe ich die IP und anderes eingetragen .. oder habe ich es völlig falsch verstanden?
Deinen Code hatte ich aufgespielt (leicht modifiziert - 2 loops und so), unter Netzwerkeigenschaften von meinem PC aus Netwerk und dessen Eigenschaften gellöscht (in der shell). Danach (rundum gewechselt alle drei Platinen: FLAG, Pbox und softAD..) eine der Platinen das Netzwerk anmelden lassen und danach wie Du den Rest gestartet. Ja, wie schon früher berichtet (mit Code und Bildern) wird ein Netzwerk erstellt und die Meldung auf der Platine "softAP.." zeigt an, dass eine, manchmal zwei "station connected=.." sind. Auch die Pbox meldet sich am "NodeKTM" an - und bringt, wie bisher immer ihr "..connect: fail". Kein Wunder, wie immer sind leider inwischen die Netzwerkadressen verändert. Und das ist mir unverständlich, ich bekomme es auch nicht wieder gerichtet. Teilweise - wie nach Aufspielen des Codes von Dir, in einem Testlauf - ist die vorgegebene IP 192.168.1.1 eingerichtet, aber es wird von z.B. der Postbox die 192.168.4.2 gezeigt.
Ich gebs auf - ich kriegs nicht hin. Schade.
Muss mich mal nach nem passenden Messenger umsehen, vielleicht finde ich irgendwo nen sauberen, funktionierenden Code für die Geschichte mit dem Senden von eMails - vielleicht krieg ich das hin.
Danke für die Mühe
Ciao sagt der JoeamBerg
Im Original spielen ja zwei andere Softwarepaketchen zusammen: "Postbox" als Sensorik "Post ist da" und "Flag" als Empfänger des Sensoriksignals und Anzeige. Aber - huiii - da war mir eingefallen . . .
Im Umkreis meines Projektchens sind ja vermutlich keine namensgleichen WLANstationen. Also reicht die Kombination Pbox und SoftAP. Letztere mal für Testzwecke etwas stärker *gg* modifiziert - und aktuell (Start direkt vor diesem Post) läuft ein Lanzeittest (ca. 30000 *2 sec, das sind rund neun Stunden). >> Software modifizieren, auf die MiniPlatinchen (Format ca. 2x ESP9266-blank) flashen. Und - nix. Also identische Software auf eine NodeMCU flashen - und es läuft! (mehrere Wechsel der Platinen - Fazit die "kleine" läuft nicht als "Anzeige", die NodeMCU schon).
Hier die anfängliche Anzeige von eben (nu gehts in die Kletterwand *gg*) und die soll noch die paar Stunden mal laufen. Weiter dann bis in zwei, drei Tagen. Es muss ja noch die "Flag"funktion implementiert werden, wiederholt getestet im Laboraufbau - und dann mal sehen ob das aus dem Briefkasten auch funzt.
Ciao sagt der JoeamBerg
Lesezeichen