C++ in Arduino + ESP8266

Hallo zusammen,
wir haben in der Schule ein Sketch bekommen (nicht selber geschrieben) mit dem wir einen ESP8266 programmiert haben, um auf einer Webseite zwischen eine leichtenden Glühbirne und einer ausgeschalteten Glühbirne hin und her zu wechseln. Hinter den Bildern ist jeweils die andere Seite verlinkt. Heißt: wenn ich auf die leuchtende Glühbirne klicke, komme ich auf die Seite mit der ausgeschalteten Glühbirne und umgekehrt.

Mein Problem ist nun, dass ich den Sketch (Code) teilweise überhaupt nicht verstehe. Ich würde ihn hier mal posten und es wäre top, wenn sich den jemanden mal ansehen könnte und dazuschreiben kann, was bei welchem Abschnitt passiert.

Mir ist bewusst, dass das sehr viel verlangt ist aber wenn mir in diesem Fall jemand helfen könnte, wäre das super.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
//#include "bild.h"

const char *ssid = "Test";
const char *password = "testtesttest";

const int ap_channel = 6;
const boolean ap_hidden = false;

IPAddress local_ip(192,168,0,30);
IPAddress gateway(192,168,0,1);
IPAddress netmask(255,255,255,0);
IPAddress dns(8,8,8,8);

ESP8266WebServer server(80);

const char IstAus[ ] PROGMEM =  R"---(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>title</title>
  </head>
  <body>
     <h1>ESP8266 Web Server</h1>  
     <p>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
     <a href="IstAn"><img alt="bild" 
(hier befindet sich eigentlich der sehr lange code für das bild im base64 format)
  </body>
</html>
)---";

const char IstAn[] PROGMEM =  R"---(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>title</title>
  </head>
  <body>
     <h1>ESP8266 Web Server</h1>  
     <p>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
     (hier befindet sich eigentlich der sehr lange code für das bild im base64 format)
  </body>
</html>
)---";


// ##### Setup
void setup() {
  
  WiFi.config(local_ip, dns, gateway, netmask);
  WiFi.begin(ssid,password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
  }
  
  boolean result = WiFi.status();
  if (true) { 
    server.on("/", handleRoot);
    server.on("/IstAn", issein);
    server.on("/IstAus", issaus);
    server.onNotFound(handleNotFound);
    server.begin();
  }
}

// ##### Loop
void loop() {
  server.handleClient();
}



// ##### Functions
void handleRoot() {
  server.send(200, "text/plain", "404 Not found");
}

void issein() {
  server.send(200, "text/html", IstAn);
}

void issaus() {
  server.send(200, "text/html", IstAus);
}

void handleNotFound() {
  server.send(404, "text/plain", "404 Not found");
}

Ihr Beitrag wurde an seinen aktuellen Speicherort verschoben, da er besser geeignet ist.

im istAus erkennt man den Rest von einem Link mit Bild das könnte funktionieren.

im istEin ist das nicht mehr erkennbar. Da must halt ähnlich einen a href setzen und auf istAus linken.

Du hast vermutlich den Code nicht selber geschrieben, verlinke mal die Seite wo das her ist.

Was mich interessiert, was die Variable result und die folgende If-Abfrage für ein Sinn haben?
Die Variable wird im Code nicht mehr verwendet. Und die If-Abfrage wird immer ausgeführt, da immer wahr.

Das wahr doch bestimmt eher so gewollt.

  boolean result = WiFi.status();
  if (result) { 
    server.on("/", handleRoot);
    server.on("/IstAn", issein);
    server.on("/IstAus", issaus);
    server.onNotFound(handleNotFound);
    server.begin();
  }

Aber ich habe da selber zu wenig Ahnung.

Hoffentlich nicht :slight_smile:

Die status()-Methode gibt lt. Espressif-Dokumentation eine ganze Latte von möglichen Werten zurück.
In diesem Fall wäre vermutlich das hilfreich:

if (WiFi.status() == WL_CONNECTED) { ...

Hallo,
eventuell hilft Dir das weiter

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.