Hallo.
Ich habe ein Projekt geplant, möchte aber erstmal klein Anfangen. Ich möchte über einen ESP über eine Website ganz einfach einen RGB LED Strip steuern.
Ich hab die Website fertig und diese wird mir auch wie gewünscht angezeigt, wenn ich mich mit der IP Adresse des ESP verbinde.
In der Website kann man 3 Regler für die Farbe verschieben und mit einem Button bestätigen.
Durch Javascript lasse ich diese 3 Werte beim klicken auf den Button in HEX umwandeln (z.B. #ff54e5) und verlinke diesen als href.
Im Serialmonitor wird mir diese Request auch angezeigt, doch mit ReadStringUntil() kann ich diese Request nicht "greifen".
Ich habe andere Möglichkeiten mit server.on() gesehen.
Jetzt zur Frage:
Wie kann ich durch server.on die Request "verarbeiten", bzw. diese erstmal in einem String speichern?
Danke schonmal 
Unirox:
... möchte aber erstmal klein Anfangen.
Dann fang doch erstmal mit einem Arduino und den Grundlagen an (Arduino-IDE->Datei->Beispiele). Was Du vorhast ist vieles, aber IMO nichts „Kleines für den Anfang“.
Gruß
Gregor
Mit z.B. server.on("/led1", handleLed1) kannst Du eine Funktion handleLed1 aufrufen, wenn
http://IP/led1
vom Browser geschickt wird.
Schau Dir mal die Beispiele in den ESP8266-Libs an.
Du kannst auch bei menem Weihnachsstern mal schauen, da verwende ich es auch oder beim Webserver mit AJAX. Dort siehst Du auch die Parameterauswertung.
Wie Gregor schon schrieb, es ist nicht unbedingt ein Anfängerprojekt.
Gruß Tommy
Unirox:
Wie kann ich durch server.on die Request "verarbeiten", bzw. diese erstmal in einem String speichern?
ich würde beim Slider mittels JavaScript einen onChange Event abfangen und an ein Seite senden die dann die Werte entsprechend sendet.
quasi im Slider:
onChange='fire(this.id, this.value)'
dann das Javascript mit den übergebenen Parametern (!) an den Server senden,
und im webserver bei dieser Seite die Parameter abfragen.
Als Parameter - nicht als ganze Seite!
Ich habe mal was ähnliches gemacht, lediglich erfolgt bei mir die Ausgabe an DMX.
Die Javascripts und den Webserver kannst dir ja mal ansehen, evtl. kannst du auch die DMX Ausgabe auf analogWrite ändern
http://werner.rothschopf.net/201712_arduino_esp8266_dmx_master.htm
gregorss:
Dann fang doch erstmal mit einem Arduino und den Grundlagen an (Arduino-IDE->Datei->Beispiele). Was Du vorhast ist vieles, aber IMO nichts „Kleines für den Anfang“.
Die basics kann ich ja, habe aber dieses eine problem.
Das was ich bis jetzt beschrieben habe ist nur ein kleiner Teil. Ich hab vor ein modulares smart-home zu basteln. Bestehend aus mehreren esp's die als client bzw. einer als server agieren.
Tommy56:
Mit z.B. server.on("/led1", handleLed1) kannst Du eine Funktion handleLed1 aufrufen, wenn
http://IP/led1
vom Browser geschickt wird.
Soweit war auch auch schon
die Sache ist die, das die URI variabel ist. Ich kann ja nicht für alle möglichen HEX Farbcodes eine server.on() abfrage schreiben.
Unirox:
... Die basics kann ich ja, habe aber dieses eine problem.
Das was ich bis jetzt beschrieben habe ist nur ein kleiner Teil. ...
Oh, dann habe ich das Ursprungsposting wohl falcsh interpretiert. Nuja, für irgendetwas sind Missverständnisse manchmal auch gut. Es gab/gibt hier jemanden, der ein Heim-Automatisierungs-Gebastel testweise ins Netz gestellt hatte. Ich kann den entsprechenden Thread aber gerade nicht finden.
Gruß
Gregor
Unirox:
Ich hab vor ein modulares smart-home zu basteln.
Bestehend aus mehreren esp's die als client bzw. einer als server agieren.
Du kannst auch alle als Server laufen lassen, und die Kommunikation untereinander mit UDP bewerkstelligen.
Soweit war auch auch schon
die Sache ist die, das die URI variabel ist. Ich kann ja nicht für alle möglichen HEX Farbcodes eine server.on() abfrage schreiben.
"server.hasArg"
ESP8266WebServer Class Reference
Da du Javascript nutzt empfehle ich dir, die Datenübertragung, mit der "fetch.API" zu realisieren.
Ich habe 4 Nodemcu laufen, die per "fetch.api" ihre Daten an eine HTML Seite schicken.
Gruß Fips
"server.hasArg"
ESP8266WebServer Class Reference
Gibt das nicht nur einen boolean aus?
Hab aber in der Dokumentation
server.uri() gefunden, die einen String ausgeben soll.
Stimmt das?
Dann könnte ich ja einfach
String URI = server.uri();
nehmen und den Hexcode easy weiter verarbeiten.
Kann es leider heute nicht testen, aber bin so neugierig
:o
Du hast ja schon >= 1 Beispiel bekommen, wie Du die einzelnen Argumente bekommen kannst. Lesen musst Du den Code schon selbst.
Gruß Tommy
if (server.hasArg("LED")) {
farbe1 = server.arg(0).toInt();
farbe2 = server.arg(1).toInt();
......
Gruß Fips