• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Internet Explorer bringt ESP8266 zum Absturz

dkrt86

Neues Mitglied
Hallo liebe HTML-Gemeinde,

ich habe mich in letzter Zeit damit auseinandergesetzt eine Steuerung für einen RGB LED Stripe zu entwickeln. Dabei wird per HTTP GET die Informationen zu Farbe und Helligkeit an das WLAN-Modul übergeben (ESP8266). Dieser reicht die Information an einen Arduino weiter, der dann letztlich das Stripe schaltet.

Ich habe mir also eine kleine HTML Seite geschrieben mit der man das Stripe bedienen kann. Über Buttons und Slider können Farbe und Helligkeit ausgewählt werden. Tritt eine Änderung auf, so öffnet sich in einem nicht sichtbar kleinen I-Frame (ich weiß I-Frames sind verpönt. Ich wusste mir mit meinen rudimentären HTML-Kenntnissen aber leider nicht anders zu helfen) die URL mit der enthaltenen Information zu Helligkeit und Farbe.

Prinzipiell funktioniert das Ganze auch. Ich kann damit den Stripe steuern. Probleme treten allerdings auf, wenn ich sehr schnell hintereinander schalte. Dies führt dann zu einem Absturz des WLAN Moduls.

Jetzt zu meiner Frage:

Diese Abstürze treten bei Nutzung des Internet Explorers auf. Bei der Nutzung von Chrome oder Firefox funktioniert alles stabil ohne Abstürze. Ich habe mir ebenso eine Windows Phone App geschrieben. Bei dieser treten die selben Probleme wie mit dem IE auf.

Woran kann das liegen? Was macht der IE anders wie Chrome etc? Ich habe versucht mit Sniffern die Kommunikation auszuspähen. Bei beiden habe ich leider nur den HTTP GET gefunden.

Ich hoffe ich habe meine Frage hier an der richtigen Stelle gestellt. Ich würde mich tierisch über jeden Hinweis freuen. Anbei noch der HTML-Code.

HTML:
<html>
<head>
<title>LED-Steuerung</title>
<script language="JavaScript" type="text/javascript">
function GetFarbe(){
var Farbe = document.getElementById("schieber1").value;
document.getElementById("iframe").src="http://192.168.178.38/F"+Farbe;
}
function GetHell(){
var Helligkeit = document.getElementById("schieber2").value;
document.getElementById("iframe").src="http://192.168.178.38/H"+Helligkeit;
}
function button(Wert){
document.getElementById("iframe").src="http://192.168.178.38/F"+Wert;
}
</script>
</head>
<body>
<p align="center">
<FONT SIZE="8"><U>Steuerung der LED-Lichtleiste</U></FONT><br><br><br>
<FONT SIZE="6">Farbe</FONT><br><br>
<input type="range"  min="15" max="255" style="width:80%;" id="schieber1" onclick="GetFarbe()" value="135"/><br><br><br>
<FONT SIZE="6">Helligkeit</FONT><br><br>
<input type="range"  min="0" max="255" style="width:80%;" id="schieber2" onclick="GetHell()" value="127"/></p>
<br><br><br><br><hr><br><br><br><br>
<table width="100%">
<tr><th colspan="2" align=center width="50%"><input type="button" style="width:80%;height:100px;font-size:50px" onclick="button(15)" value="Rot"/></th><th colspan="2" align=center><input type="button" style="width:80%;height:100px;font-size:50px" onclick="button(95)" value="Gr&uuml;n"/></th></tr>
<tr><th colspan="2" align=center><input type="button" style="width:80%;height:100px;font-size:50px" onclick="button(175)" value="Blau"/></th><th colspan="2" align=center><input type="button" style="width:80%;height:100px;font-size:50px" onclick="button(1)" value="Farblauf"/></th></tr>
</table>
</p>
<iframe height="0" width="0" frameborder="0" id="iframe"></iframe>
</body>
</html>

Liebe Grüße
Daniel
 
Kannst du mir den Arduino-Quellcode geben? Ich arbeite nämlich an etwas ähnlichem.

Zu deinem Problem:
Der IE ist sehr instabil,schon immer.
Und da Windows Phone mit IE arbeitet....
...gibt es den gleichen Fehler.

Hoffe,das hat geholfen.
 
Hallo felixprogramm,

ja das denke ich auch, dass die Probleme bei beiden auftreten, da beide ein ähnliches Fundament haben. Aber nichts desto Trotz muss das Problem doch eine Ursache haben. Die einzige Abhilfe scheint momentan zu sein mir ein neues Handy zuzulegen. :(

Hier der Quellcode:

Code:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/*
String html1 = "";
String html2 = "";
String html3 = "";
String html4 = "";
String html5 = "";
*/

String html1 = "<html>\n<head>\n<title>LED-Steuerung</title>\n<script language=\"JavaScript\" type=\"text/javascript\">\nfunction GetFarbe(){\nvar Farbe = document.getElementById(\"schieber1\").value;\ndocument.getElementById(\"iframe\").src=\"http://192.168.178.38/F\"+Farbe;\n}\nfunction GetHell(){\nvar Helligkeit = document.getElementById(\"schi";
String html2 = "eber2\").value;\ndocument.getElementById(\"iframe\").src=\"http://192.168.178.38/H\"+Helligkeit;\n}\nfunction button(Wert){\ndocument.getElementById(\"iframe\").src=\"http://192.168.178.38/F\"+Wert;\n}\n</script>\n</head>\n<body>\n<p align=\"center\">\n<FONT SIZE=\"10\"><U>Steuerung der LED-Lichtleiste</U></FONT><br><br><br>\n<FONT SIZE=\"6\">Farbe</FONT><br><br>\n<input type=\"range\"  min=\"15\" max=\"255\" style=\"width:80%;\" id=\"schieber1\" onclick=\"GetFarbe()\" value=\"135\"/><br><br><br>\n<FONT SIZE=\"6\">Helligkeit</FONT><br><br>\n<input type=\"range\"  min=\"0\" max=\"255\"";
String html3 = " style=\"width:80%;\" id=\"schieber2\" onclick=\"GetHell()\" value=\"127\"/></p>\n<br><br><br><br><hr><br><br><br><br>\n<table width=\"100%\">\n<tr><th colspan=\"2\" align=center width=\"50%\"><input type=\"button\" style=\"width:80%;height:100px;font-size:50px\" onclick=\"button(15)\" value=\"Rot\"/></th><th colspan=\"2\" align";
String html4 = "=center><input type=\"button\" style=\"width:80%;height:100px;font-size:50px\" onclick=\"button(95)\" value=\"Gr&uuml;n\"/></th></tr>\n<tr><th colspan=\"2\" align=center><input type=\"button\" style=\"width:80%;height:100px;font-size:50px\" onclick=\"button(175)\" value=\"Blau\"/></th><th colspan=\"2\" align=center><input typ";
String html5 = "e=\"button\" style=\"width:80%;height:100px;font-size:50px\" onclick=\"button(1)\" value=\"Farblauf\"/></th></tr>\n</table>\n</p>\n<iframe height=\"0\" width=\"0\" frameborder=\"0\" id=\"iframe\"></iframe>\n</body>\n</html>";

String Farbard = "15";
String Hellard = "0";

ESP8266WebServer server(80);// Serverport  hier einstellen

// Daten Accesspoint
const char* ssid = "ESP";
const char* password = "";
long Zeit = millis();
// Daten Station
char ssids[11] = "SSID";     //Variable fuer Wlan Name
char passwords[17] = "PASSWORD"; //Variable fuer Passwort
// Netzwerkkonfiguration
IPAddress ip(192,168,178,38);
IPAddress gateway(192,168,178,1);
IPAddress subnet(255,255,255,0);

void setup()            // Wird 1 Mal beim Start ausgefuehrt
{

  WiFiconnect();

  server.on("/", Ereignis_Index);
  server.on("/data", Ereignis_data); 
  server.on("/favicon.ico", Ereignis_Null);
  server.onNotFound(notFoundHandler);
  server.begin();        // Starte den Server
}

void Ereignis_Index() 
{
  server.send(200, "text/html", html1 + html2 + html3 + html4 + html5);
}


void Ereignis_data()   
{
  server.send(200, "text/html", "<html>\n <head><title>F" + Farbard + "H" + Hellard + "</title><body></body></head></html>");
}

void loop()                    //Hautprogramm
{
  server.handleClient();// Serverereignisse abarbeiten

   if (Serial.available() > 0) {
    if (Serial.peek() == 'F') { // Farbkommando?
      Serial.read(); //remove the character that signifies this is a command from the serial buffer
      Farbard = Serial.parseInt(); //store our expected integer into state     
    }
    if (Serial.peek() == 'H') { // Helligkeitskommando?
      Serial.read(); //remove the character that signifies this is a command from the serial buffer
      Hellard = Serial.parseInt(); //store our expected integer into state
    }
    while (Serial.available() > 0){ //Discard everything that we didn't expect
      Serial.read();
    }
  }
}

void notFoundHandler() {
    server.send(200, "text/html", "0");
    String Rec = server.uri();
    Serial.println(Rec.substring(1));
    Zeit = millis();
}
void Ereignis_Null() {
  server.send(200, "text/html", "0");
}

void WiFiconnect() {
  Serial.begin(9600);

  Serial.println();
  Serial.println("Starting WiFi...");

  WiFi.mode(WIFI_STA); //STA
  WiFi.begin(ssids, passwords);

  if (WiFi.waitForConnectResult() == WL_CONNECTED) {
    WiFi.config(ip,gateway,subnet);
    Serial.println("WiFi erfolgreich verbunden...");
    Serial.print("Verbunden mit ");
    Serial.println(ssids);
    Serial.print("IP address: "); // Aktuelle IP des ESP8266-servers zeigen
    Serial.println(WiFi.localIP());
  }
  else {
   // WiFi Setup
  Serial.println("Stationmode failed!");
  Serial.println("Starting Accesspoint...");
  WiFi.mode(WIFI_AP);     // Für Server und Client WIFI_AP_STA
  WiFi.softAP(ssid,password);
  WiFi.softAPConfig(ip, gateway, subnet);
 
// Verbindung gestartet
  Serial.printf("Accesspoint unter dem Namen ");
  Serial.println(ssid);
  Serial.print("IP-Addresse: "); // Aktuelle IP des ESP8266-servers zeigen
  Serial.println(WiFi.softAPIP());
  Serial.print("Mac-Addresse: "); // Mac Adresse zeigen
  Serial.println(WiFi.softAPmacAddress());
  }
}

Die IP Adresse in dem HTML String und der Netzwerkkonfiguration muss natürlich noch an die IP deines ESP's angepasst werden. Wenn du etwas damit anfangen kannst kann ich auch gerne die Windows Phone App anhängen.

Falls Du auf eine Lösung oder einen Lösungsansatz für das Problem kommen solltest, würde ich mich über eine kurze Info hier im Thread freuen!

LG
Daniel
 
Zurück
Oben