Probleme mit NodeMCU

Hallo zusammen,

ich bin recht neu was Arduino und Mikrocontroller angeht. Dennoch hab ich mich mal an ein Projekt gewagt. Die Idee ist es ein NodeMCU als Webserver laufen zu lassen und damit einen LED Streifen zu kontrollieren. Soweit alles kein Problem.

Ich dachte mir nun ich baue eine kleine Website um das ganze schöner zu gestalten. Und ab da ging es nur noch den Bach runter…
Ich habe die HTML Seite zuvor auf meinem PC getestet und sie funktioniert einwandfrei. Als ich sie dann auf den NodeMCU gespielt habe funktioniert der Submit Button nicht mehr.


Hier der Code des NodeMCU:

#define FASTLED_ESP8266_RAW_PIN_ORDER
#define FASTLED_INTERRUPT_RETRY_COUNT 1
#include<ESP8266WiFi.h>
#include <FastLED.h>

//The amount of LEDs in the setup
#define NUM_LEDS 60
//The pin that controls the LEDs
#define LED_PIN D8


//++++++++++++++++++++++++++++++++++++++++++//
//             WIFI INFORMATION             //
//++++++++++++++++++++++++++++++++++++++++++//
//The WIFI information  
const char* ssid = "<<SSID>>"; //your WiFi Name
const char* password = "<<PASSWORD>>";  //Your Wifi Password

WiFiServer server(80);

//Led array
CRGB leds[NUM_LEDS];
int b = 255;
unsigned long color = 0xF0F8FF;
//++++++++++++++++++++++++++++++++++++++++++//
//                 HTML                     //
//++++++++++++++++++++++++++++++++++++++++++//
String page2 = "<<HTML CODE>>";

//++++++++++++++++++++++++++++++++++++++++++//
//                 SETUP                    //
//++++++++++++++++++++++++++++++++++++++++++//
void setup() {
  // CONNECT TO WIFI
  Serial.begin(115200);
  delay(10);  
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid); 
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected"); 
  server.begin();
  Serial.println("Server started");
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

  
  // AFTER CONNECTION: //
  
  //Set all lights to make sure all are working as expected
  FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
  for (int i = 0; i < NUM_LEDS; i++) 
    leds[i] = CRGB(0, 0, 255);
  FastLED.show(); 
  delay(1000);
}
//++++++++++++++++++++++++++++++++++++++++++//
//                 LOOP                     //
//++++++++++++++++++++++++++++++++++++++++++//
void loop()
{
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  client.print(page2);
  String request = client.readStringUntil('\r');
  client.flush();
  
  //GET COLOR CODE //
  
  String colorS = request.substring(request.indexOf("=")+1, request.indexOf("?")); //PUT COLOR CODE BETWEEN = AND ? AND IT CAN DETECT IT
  Serial.println("ColorString: " + colorS);
  String brightness = request.substring(request.indexOf("?")+1, request.indexOf(";"));
  Serial.println("Brightness: " + brightness);
  
  // RESPOND AND CHANGE COLOR //

  color = strtol(colorS.c_str(), NULL, 0);
  Serial.println("Color HEX: " + color);
  for (int i = 0; i < NUM_LEDS; i++) 
  if(colorS.indexOf("GET") < 0)leds[i] = color;

  // BRIGHTNESS & DIMMING //
  b = 256 * (double) (100-brightness.toInt())/100.0;
  for (int i = 0; i < NUM_LEDS; i++) 
    leds[i].fadeLightBy(b);
  
  //UPDATE COLOR
  FastLED.show();
}

Und der HTML Code:

<!DOCTYPE html><html><head>
<title>WebLamp v0.1</title>
<style data="styleData" type="text/css">
 .slider::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%; }
 .slider::-moz-range-thumb { width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%;}
 
</style>
<style>
 body {background-color: black;text-align: center;color: white;font-family: Arial, Helvetica, sans-serif;}
 a {text-decoration: none;padding: 30px;}
 div {float: down;}
 .slider {width: 33%; height: 5px; background: #d3d3d3; border-radius: 2px; outline: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}
 .slider:hover { opacity: 1;}
 .slider::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%; }
 .slider::-moz-range-thumb { width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%;}
 p {text-align: center; width: 100%;}
 input { margin: 30px; width: 33%; height: 50px; border: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}
 input:hover { opacity: 1; }
 button {background-color: #bc13fe; text-align: center; border: none; width: 33%; height: 50px; font-size: 20px; margin: 30px; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}
 button:hover {opacity: 1;}
</style>
</head>
<body onload="startup()">
<h1>WebLamp</h1>
<p id="test">Please choose a Color:</p>
<div>
<input type="color" id="colorpicker" value="#bc13fe">
<input type="range" min="1" max="100" value="50" id="slider" class="slider">
</div>
<button onclick="Submit()" value="Submit" id="SubmitButton">Submit</button>
<script type="text/javascript">
	var colorPicker;
	var slider;
	var Button;
	var style = document.querySelector('[data="styleData"]');
	var color = "#bc13fe";
	var brightness = "50";

	function startup()
	{
	try{
		colorPicker = document.getElementById("colorpicker");
		slider = document.getElementById("slider");
		Button = document.getElementById("SubmitButton");
		colorPicker.addEventListener("change", update, false);
		slider.oninput = function(){brightness = this.value;}
		}
		catch(err)
		{
			document.getElementById("test").innerHTML = err.message;
		}
	}
	
	function update(event)
	{
		color = event.target.value;
		setColor(color);
	}
		
	function Submit() {
		document.getElementById("cColor").innerHTML = "Color: " + color;
		document.getElementById("cBrightness").innerHTML = "Brightness: " + brightness + "%";
		var c = color.substring(1);
		window.location.replace("http://<<IP-NODEMCU>>/LED=0x" + c + "?" + brightness + ";");
		document.getElementById("test").innerHTML = "Color";
	}
	
	function setColor(nColor)
	{
		document.getElementById("cColor").style.color = nColor;
		Button.style.backgroundColor = nColor;
		style.innerHTML = ".slider::-webkit-slider-thumb{ background:" + nColor + "!important;}";
		style.innerHTML = ".slider::-moz-range-thumb{ background:" + nColor + " !important;}";
	}
    </script>
	
<h2 style="border-bottom: 1px white solid;">Current:</h2>
<div> <p id="cColor"></p>
<p id="cBrightness"></p>
</div>
</body>
</html>

Ich hab durch ausprobieren festgestellt, dass er Probleme hat mit der Methode startup im HTML Script Code. Aber ich finde einfach nicht raus wieso am Computer alles funktioniert aber auf dem NodeMCU nicht.

Hoffentlich könnt ihr mir schnell weiterhelfen.

Mfg,
Kalchos

Wo liegt Dein HTML-Code?

Gruß Tommy

zunächst würde ich von vorne Anfangen, und den webserver gem. IDE Beispiel

ESP8266Webserver | HelloServer

aufbauen.

Kalchos: Als ich sie dann auf den NodeMCU gespielt habe funktioniert der Submit Button nicht mehr.

Ich hab durch ausprobieren festgestellt, dass er Probleme hat mit der Methode startup im HTML Script Code.

"startup()" ist eine Funktion, die mit dem Senden nichts zu tun hat. Dein inline Javascript (onclick="Submit()) ruft die Funktion "Submit()" auf. Der Button funktioniert also.

Auch der Request wird abgesetzt, nur was soll das denn sein?

http://192.168.178.26/LED=0xbc13fe?50

Informiere dich mal wie ein Query string zusammengesetzt wird!

Der Quatsch kommt sogar beim ESP8266Webserver an!

Methode HTTP: GET Server.uri: /LED=0xbc13fe Server.hasArg(50): 1 Server.args: 1 Server.Arg 0: 50=

Des weiterem stimme ich noiasca voll und ganz zu!

Bau sowas mit dem richtigen/komfortablen Webserver aus den Beispielen auf.

Gruß Fips

Ok ich habe das ganze anhand vom Hello World Example überarbeitet und der Arduino Code sieht nun so aus:


#define FASTLED_ESP8266_RAW_PIN_ORDER
#define FASTLED_INTERRUPT_RETRY_COUNT 1
#include <ESP8266WiFi.h>            
#include <ESP8266WebServer.h>
#include <FastLED.h>


//++++++++++++++++++++++++++++++++++++++++++//
//               WEB SERVER                 //
//++++++++++++++++++++++++++++++++++++++++++//
ESP8266WebServer server(80);   //Web server object. Will be listening in port 80 (default for HTTP)

//The WIFI information  
const char* ssid = "<<SSID>>"; //your WiFi Name
const char* password = "<<PASSWORD>>";  //Your Wifi Password

//++++++++++++++++++++++++++++++++++++++++++//
//               LED VARS                   //
//++++++++++++++++++++++++++++++++++++++++++//

//The amount of LEDs in the setup
#define NUM_LEDS 60
//The pin that controls the LEDs
#define LED_PIN D8
//Led array
CRGB leds[NUM_LEDS];

//Current brightness
int b = 128;
//Current Color
unsigned long color = 0xbc13fe;

//++++++++++++++++++++++++++++++++++++++++++//
//                  HTML                    //
//++++++++++++++++++++++++++++++++++++++++++//
String page = "<<HTML CODE>>";

//++++++++++++++++++++++++++++++++++++++++++//
//                 SETUP                    //
//++++++++++++++++++++++++++++++++++++++++++//
void setup() {

Serial.begin(115200);

//SETUP LED

//Set all lights to make sure all are working as expected
  FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
  for (int i = 0; i < NUM_LEDS; i++) 
    leds[i] = CRGB(color);
  FastLED.show(); 
  delay(500);
// GO TO WAITING MODE
  for (int i = 0; i < NUM_LEDS; i++) 
    leds[i] = CRGB(0,0,0);
    leds[0] = CRGB(color);
  FastLED.show(); 
  int currentLED = 0;

//SETUP WIFI
WiFi.begin(ssid, password); //Connect to the WiFi network
Serial.print("Connecting to ");
Serial.println(ssid); 
while (WiFi.status() != WL_CONNECTED) { //Wait for connection

delay(100);
Serial.print(".");
leds[currentLED] = CRGB(0,0,0);
if(currentLED < 60) leds[currentLED+1] = CRGB(color);
else leds[0] = CRGB(color);
currentLED++;
if(currentLED >NUM_LEDS) currentLED = 0;
FastLED.show();
}
// SUCCESSFULL CONNECTED //
Serial.println("");
Serial.println("WiFi connected"); 
server.begin();
Serial.println("Server started");
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");  //Print the local IP to access the server
for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB(color);
    leds[i].fadeLightBy(b);}
  FastLED.show();

server.on("/genericArgs", handleGenericArgs); //Associate the handler function to the path

server.begin();                                       //Start the server
Serial.println("Server listening");   

}

//++++++++++++++++++++++++++++++++++++++++++//
//                 LOOP                     //
//++++++++++++++++++++++++++++++++++++++++++//
void loop() {

server.handleClient();    //Handling of incoming requests

}

//++++++++++++++++++++++++++++++++++++++++++//
//              HANDLE ARGS                 //
//++++++++++++++++++++++++++++++++++++++++++//
void handleGenericArgs() { //Handler

String message = "Number of args received:";
message += server.args();            //Get number of parameters
message += "\n";                            //Add a new line

for (int i = 0; i < server.args(); i++) {

message += "Arg n" + (String)i + " -> ";   //Include the current iteration value
message += server.argName(i) + ": ";     //Get the name of the parameter
message += server.arg(i) + "\n";              //Get the value of the parameter
Serial.println(message);
useParams(server.argName(i), server.arg(i));
} 

server.send(200, "text/html", page);      //Response to the HTTP request

}

//++++++++++++++++++++++++++++++++++++++++++//
//               USE PARAMS                 //
//++++++++++++++++++++++++++++++++++++++++++//
void useParams(String name, String arg)
{
  if(name == "Color") //SET COLOR
  {
      color = strtol(arg.c_str(), NULL, 0);
  }
  else if(name == "b") //SET BRIGHTNESS
  {
      b = 256 * (double) (100-arg.toInt())/100.0;
  }

  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB(color);
    leds[i].fadeLightBy(b);}
  FastLED.show();
}

Und der HTML Code nochmal: (weil ich ganz kleine Änderungen vorgenommen hab)

<!DOCTYPE html><html><head>
<title>WebLamp v0.1</title>
<style data="styleData" type="text/css">
 .slider::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%; }
 .slider::-moz-range-thumb { width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%;}
 
</style>
<style>
 body {background-color: black;text-align: center;color: white;font-family: Arial, Helvetica, sans-serif;}
 a {text-decoration: none;padding: 30px;}
 div {float: down;}
 .slider {width: 33%; height: 5px; background: #d3d3d3; border-radius: 2px; outline: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}
 .slider:hover { opacity: 1;}
 .slider::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%; }
 .slider::-moz-range-thumb { width: 25px; height: 25px; background: #bc13fe; cursor: pointer; border-radius: 50%;}
 p {text-align: center; width: 100%;}
 input { margin: 30px; width: 33%; height: 50px; border: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}
 input:hover { opacity: 1; }
 button {background-color: #bc13fe; text-align: center; border: none; width: 33%; height: 50px; font-size: 20px; margin: 30px; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}
 button:hover {opacity: 1;}
</style>
</head>
<body>
<h1>WebLamp</h1>
<p id="test">Please choose a Color:</p>
<div>
<input type="color" id="colorpicker" value="#bc13fe">
<input type="range" min="1" max="100" value="50" id="slider" class="slider">
</div>
<button onclick="Submit()" value="Submit" id="SubmitButton">Submit</button>
<script type="text/javascript">
	var colorPicker = document.getElementById("colorpicker");
	var slider = document.getElementById("slider");
	var Button = document.getElementById("SubmitButton");
	var style = document.querySelector('[data="styleData"]');
	var color = "#bc13fe";
	var brightness = "50";
		colorPicker.addEventListener("change", update, false);
		slider.oninput = function(){brightness = this.value;}
	
	
	function update(event)
	{
		color = event.target.value;
		setColor(color);
	}
		
	function Submit() {
		document.getElementById("cColor").innerHTML = "Color: " + color;
		document.getElementById("cBrightness").innerHTML = "Brightness: " + brightness + "%";
		var c = color.substring(1);
		window.location.replace("http://<<NODE-IP>>/genericArgs?Color=" + c + "&b=" + brightness);
	}
	
	function setColor(nColor)
	{
		document.getElementById("cColor").style.color = nColor;
		Button.style.backgroundColor = nColor;
		style.innerHTML = ".slider::-webkit-slider-thumb{ background:" + nColor + "!important;}";
		style.innerHTML = ".slider::-moz-range-thumb{ background:" + nColor + " !important;}";
	}
    </script>
	
<h2 style="border-bottom: 1px white solid;">Current:</h2>
<div> <p id="cColor"></p>
<p id="cBrightness"></p>
</div>
</body>
</html>

Ich kenne mich zwar nicht so gut mit Query Strings aus aber ich denke ich habe jetzt die richtige “Syntax” verwendet. Wenn ich die Website manuell aufrufe, also z.B. http://<>/genericArgs?Color=0x00FF00&b=30 dann ändert sich die LED auch zu grün bei 50% Helligkeit. Aber der Submit Button bewirkt wieder nichts.

Gruß Kalchos

na dann schauen wir uns das mal an.

Wo hostest du deine HTML Seite? bzw. warum nicht am NodeMCU?

Der HTML Code kommt als String an die Stelle im Arduino Script den ich durch “<>” ersetzen musste weil der Post sonst das Maximum an erlaubten Zeichen erreicht.
Somit sendet der NodeMCU diesen String an HTML Code jedes mal an den Client sollte dieser die IP-Adresse aufrufen.
Somit wird die Seite nicht von irgendwas externem gehostet.

Mensch (^^), dafür gäbe es einen Dateiupload ins Forum. Bitte stelle ein compilierbares ino hier rein!!!

Ich hoffe ich hab das richtig verstanden. Ich kenne mich hier im Forum nunmal nicht aus :sweat_smile:

sketch_sep08a.ino (7.08 KB)

step one:

D152 color=0
D153 b=128
Number of args received:2
Arg n0 → Color: bc13fe
Arg n1 → b: 50

D152 color=0
D153 b=128

heißt für mich deine Color ermittlung im sketch passt nicht

edit: imho ist deine string to hex wandlung falsch:

void useParams(String name, String arg)
{
  if(name == "Color") //SET COLOR
  {
      color = strtol(arg.c_str(), NULL, 16); // geändert!!!
  }
  else if(name == "b") //SET BRIGHTNESS
  {
      b = 256 * (double) (100-arg.toInt())/100.0;
  }

  Serial.print(F("D152 color=")); Serial.println(color);
  Serial.print(F("D153 b=")); Serial.println(b);
  
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CRGB(color);
    leds[i].fadeLightBy(b);}
  FastLED.show();
}

da bekomme ich jetzt wenigstens numerische Werte raus. Ob es passt musst du selber prüfen, da ich deine Hardware nicht habe.

jo und wenn man dein verstecktes NODE_IP in der HTML Wurst auch noch ausbessert klappts besser.

Hallo,

warum legst Du die Webseite nicht auf dem Filesysem des ESP ab, dann must Du das bei einer Änderung nicht jedesmal in dem Sketch ändern. Dann kansst Du den HTLM code so nehmen wie du Ihn erstellt hast

Schau dir dazu erst noch mal das an

SF Doku

Heinz

heißt für mich deine Color ermittlung im sketch passt nicht

edit: imho ist deine string to hex wandlung falsch:

Ich hatte da 0 statt 16 drin, da ich gestern gelesen hatte, dass HEX Code mit “0x” vorneweg besser umgewandelt wird wenn 0 als Argument in die Funktion mitgegeben wird.
Letztendlich macht es aber keinen Unterschied hab ich festgestellt.

Das Problem ist immernoch folgendes: Wenn ich auf den Submit Button drücke, dann sollte er mich ja zu der gleichen IP nur mit geänderten Parametern weiterleiten. Allerdings tut er das nicht.
Im Teil des HTML Codes gibt es z.B. die Funktion setColor die ja jedes mal aufgerufen wird, wenn eine Änderung am Colorpicker aufgerufen wird. Am PC funktioniert das prima, man ändert die Farbe in der Auswahl und alle anderen Farben passen sich direkt an. Nicht mal das funktioniert auf der Seite des NodeMCU.
Daher denke ich könnte es vlt sein, dass JS allgemein nicht funktioniert auf einem NodeMCU?

das liegt aber an deinem Ziel NODE-IP Script. Wenn du da eine vernünftige IP reingibst geht es. Allerdings ladet er immer dein HTML/JS mit der Standardfarbe, du siehst also nur kurz im Browser dass du etwas geänder hast.

das JS ist Sache des Browsers, das ist dem NodeMCU fast egal, soll heißen, das Problem ist dein JS, nicht der NodeMCU.

Du hast jetzt zwei Möglichkeiten

  • entweder die Standardfarbe im JS nicht hardcoded setzen sondern vor der Übermittlung an den Browser die aktuelle Farbe auslesen und rausschicken (also die Zeile var color = "#bc13fe"; dynamisch genereieren)

  • oder die Ausgabe vom Empfänger trennen (zwei Seiten) und bei Bedarf die Ausgabe mittels Ajax oder Fetch anpassen.

Hallo,

die JS Skripte laufen doch auf dem Brauser und nicht auf dem Node ab. Hast Du die die vom Node gesendete Seite auf dem Brauser mal angesehen, ist da alles richtig. Firefox rechte Maus "Seitenquelltext"

ich glaube ehr das beim einbinden der Webseite in den Arduino Sketch was falsch läuft. Fips hat Dir doch schon mitgeteilt das der submit Button eigendlich funktioniert.

Heinz

Nachtrag.

ich habe mit gerade mal Deinen code angesehen. Noiasca hat natürlich recht. In dem "hande Args" sendest Du unten die Seite neu. Damit stellt du den original Zustand wieder her. Lass die zeile doch versuchsweise da einfach mal weg und versuch mal sowas.

server.on("/", sendseite);         // Webseite bearbeiten

server.on("/genericArgs", handleGenericArgs); //Associate the handler function to the path

...

void sendseite{

server.send(200, "text/html", page);      //Response to the HTTP request
}

damit wir vom gleichen reden:

hier mal die Datenübernahme von der HTML Ausgabe getrennt und sollte unabhängig von der vergebenen IP / Device Namen für jeden funktionieren.

20190908_nodemcu_webserver.ino (10.5 KB)

Um Verwirrung zu vermeiden: Ich habe den HTML Code als Dokument auf meinem PC separat gespeichert. Nennen wir das einfach die HTML-Seite. Diesen Code hab ich dann in den Arduino Sketch eingebaut und wenn man die IP des NodeMCU aufruft wie diese Seite ebenfalls exakt gleich angezeigt. Nennen wir sie mal die Node-Seite.

das liegt aber an deinem Ziel NODE-IP Script. Wenn du da eine vernünftige IP reingibst geht es. Allerdings ladet er immer dein HTML/JS mit der Standardfarbe, du siehst also nur kurz im Browser dass du etwas geänder hast.

Natürlich hab ich da die richtige IP drinnen... das war nur zum posten hier dass ich sie raus hab weil jeder hier vermutlich eine andere IP zugeteilt bekommt für seinen NodeMCU.

Fips hat Dir doch schon mitgeteilt das der submit Button eigendlich funktioniert.

Ja tut er ja auch wenn ich die HTML Seite auf meinem PC öffne. Also quasi das reine HTML Dokument was ich aufm Desktop habe. Sobald ich aber die Node-Seite aufrufe und dort auf den Submit Button drücke passiert bei mir garnix.

entweder die Standardfarbe im JS nicht hardcoded setzen sondern vor der Übermittlung an den Browser die aktuelle Farbe auslesen und rausschicken (also die Zeile var color = "#bc13fe"; dynamisch genereieren)

Das werde ich auch machen sobald das Grundprinzip funktioniert. Wenn ich doch auf den Submit Button drücke dann müsste er ja so oder so die URL in meiner Leiste ändern. Und das tut er nicht auf der Node-Seite, aber auf der HTML-Seite schon. Daher meine Verwirrung wieso es auf dem einen System ohne Probleme geht aber auf dem anderen garnicht

Kalchos: Natürlich hab ich da die richtige IP drinnen... das war nur zum posten hier dass ich sie raus hab weil jeder hier vermutlich eine andere IP zugeteilt bekommt für seinen NodeMCU.

genau das hättest du vor 2h schreiben sollen, so musste ich selber draufkommen.

was macht nun der Sketch aus #14 bei dir?

genau das hättest du vor 2h schreiben sollen, so musste ich selber draufkommen.

Ich dachte dass man das direkt erkennt im HTML Code xD Sry dafür

was macht nun der Sketch aus #14 bei dir?

Wenn ich die IP Adresse aufrufe, dann sehe ich ne leere Seite. Wenn ich jetzt in der URL die Parameter ändere, also Farbe und Helligkeit anpasse, dann passt sich auch die Farbe und Helligkeit der LED neben mir an. Soweit hat es vorher ja auch funktioniert, wenn man manuell die Parameter geändert hat

Nö kann nicht sein. Der Handler für / geht auf das html . Der alte macht die Parameter. Zunindest war das die Idee. Lösch mal deinen Browser cache

Ok folgendes: Wenn ich die Website aufrufe ohne direkt Parameter hinten anzufügen dann funktioniert alles. Wenn ich aber direkt http://IP/genericArgs?Color=0x00FF00&b=30 aufrufe funktioniert die Seite nicht mehr. Woran liegt das? Ich hab die ganze Zeit die IP aufgerufen und dadurch dass mein Browser sich die Argumente hinten gemerkt hatte wurde die Seite ständig mit Argumenten hinten dran aufgerufen