Mit meiner Anwendung kann ich mit einem esp-01 über das Web und Websockets einen LED Sreifen kontrollieren (Geschwindigkeit, Helligkeit und die Effekte einstellen). Die Webseite (index.html) und die dafür benötigten Dateien (.css, .js) läd er von den Spiffs.
An meinem PC und an meinem Android Smartphone und Tablet funktioniert das alles bestens.
Aber an einem IOS Smartphone oder Tablet funktioniert das nicht!! Dort wird die Websockets Verbindung aus dem Javascript nicht aufgebaut.
Andererseits habe ich ein auf dem selben libraries basierendes einfache test script ausprobiert (siehe hier: ESP8266 Web server with Web Socket to control an LED · GitHub letzter comment von DIYman ) Mit dem funktionieren die Websockets. Nach stundenlangen Versuchen und fragen wieso - weshalb - warum, habe ich festgestellt es liegt an den Spiffs. Also daran das ich die Webseite und alles dazugehörige von den Spiffs lade.
Ich habe also in meiner Anwendung die index.html und alles andere testhalber nicht von den SPiffs geladen, sonder in der Anwendung direkt aus einer variable. Und so funktioniert es einwandfrei. Selbst wenn ich das javascript direkt in html einbinde reicht das nicht aus. Es muss komplett alles in eine html und aus einer variable direkt in der anwendung geladen werden. Also komplett ohne spiffs! Nur so funktioniert es.
Edit:// Wie sich herausgestellt hat, ist ein Fehler im Javascript verantwortlich dafür das es unter ISO / Safari nicht funktioniert. Siehe Vier Beiträge weiter
Warum macht IOS / Iphone/ Safari (zumindest die zwei von mir getesteten) da mucken?` Und vor allem wie bekomme ich meine Anwendung auf auf IOS / Safari zum funktionieren?
Klar könnte ich notfalls alles in der Variable lassen aber das finde ich nicht sonderlich praktisch wenn man Änderungen vornehmen möchte.
Meine Anwendung basiert auf diesem example: ESP8266/A-WebSocket_LED_control.ino at master · tttapa/ESP8266 · GitHub
Wäre echt nett wenn mir da jemand weiter helfen könnte. Danke!
Mein Spiffs zugriff:
void startSPIFFS() { // Start the SPIFFS and list all contents
SPIFFS.begin(); // Start the SPI Flash File System (SPIFFS)
Serial.println("SPIFFS started. Contents:");
{
Dir dir = SPIFFS.openDir("/");
while (dir.next()) { // List the file system contents
String fileName = dir.fileName();
size_t fileSize = dir.fileSize();
Serial.printf("\tFS File: %s, size: %s\r\n", fileName.c_str(), formatBytes(fileSize).c_str());
}
Serial.printf("\n");
server.serveStatic("/WebSocket.js", SPIFFS, "/WebSocket.js");
server.serveStatic("/", SPIFFS, "/index.html");
server.serveStatic("/manifest.json", SPIFFS, "/manifest.json");
server.serveStatic("/success.html", SPIFFS, "/success.html");
server.serveStatic("/main.css", SPIFFS, "/main.css");
server.serveStatic("/edit.html", SPIFFS, "/edit.html");
}
}