-         

Ergebnis 1 bis 4 von 4

Thema: Problem mit Ausgabe im Webbrowser

  1. #1

    Frage Problem mit Ausgabe im Webbrowser

    Anzeige

    Hallo,

    ich habe ein Problem mit dem ESP8266 als Webserver.
    Bei dem folgenden Beispiel wird nur einmal der Text in der Zeile "server.on("/", handleRoot); " ausgegeben, die folgenden Texte mit "server.on("/inline", [](){
    server.send(200, "text/plain", "this works as well");
    });" aber nicht und auch nicht die folgenden.
    Code:
    // Sensorwerte auf Webserver (ESP 8266) anzeigen 
    // Sensorwerte_anzeigen_02.ino
    // Beispiel von:
    // http://michaelsarduino.blogspot.co.za/2015/09/sensorwerte-auf-webserver-esp-8266.html 
    
    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>
    #include <ESP8266mDNS.h>
    #include <TimeLib.h>
     
    const char* ssid = "ssid";
    const char* password = "password";
    MDNSResponder mdns;
    
    String bewegung_html = "<table border = 1>";
    
    ESP8266WebServer server(80);
    
    void handleRoot() {
      server.send(200, "text/html", "<html>");
      //server.send(200, "text/html", bewegung_html);
      //server.send(200, "text/html", "</table></html>");
    }
    
    void handleNotFound(){
      String message = "File Not Found\n\n";
      message += "URI: ";
      message += server.uri();
      message += "\nMethod: ";
      message += (server.method() == HTTP_GET)?"GET":"POST";
      message += "\nArguments: ";
      message += server.args();
      message += "\n";
      for (uint8_t i=0; i<server.args(); i++){
        message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
      }
      server.send(404, "text/plain", message);
    }
     
    void setup(void){
      // Uhrzeitm(hr, min, sec, day, mon, year)
      setTime(17, 25, 10, 10, 02, 2018);
      pinMode(D2, INPUT);
      Serial.begin(115200);
      WiFi.begin(ssid, password);
      Serial.println("");
    
      // Wait for connection
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.print("Connected to ");
      Serial.println(ssid);
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
      
      if (mdns.begin("esp8266", WiFi.localIP())) {
        Serial.println("MDNS responder started");
      }
      
      server.on("/", handleRoot);
      server.on("/inline", [](){
        server.send(200, "text/plain", "this works as well");
      });
    
      server.onNotFound(handleNotFound);
      
      server.begin();
      Serial.println("HTTP server started");
    }
     
    unsigned long akt = millis();
    unsigned long zuletzt = millis();
    void loop(void){
      akt = millis();
      if(digitalRead(D2) == HIGH && ((akt - zuletzt) > 1000))
      {
        bewegung_html = bewegung_html + "<tr><td>" + hour() + ":" + minute() + "</td> <td> Bewegung erkannt an Sensor 1 </td> </tr><br />"; 
        zuletzt = millis(); 
        Serial.println("Sensor betaetigt"); 
        Serial.println(bewegung_html);
        server.send(200, "text/plain", "Sensor betaetigt");   
      }  
      mdns.update();
      server.handleClient();
    }
    Programmier IDE = Arduino 1.8.5
    Webbrowser = Firefox 58.0.2
    OS = WINDOWS 7 und 10.

    MfG

    Juergen B.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.612
    hallo,
    das mit den []() sieht ein wenig seltsam aus -
    ich mache es so:
    Code:
    ESP8266WebServer server(8081);
    
    void setup() {
       // ...
       server.on("/",handleRoot) ;
       server.on("/client/client0/", handleClientIOs);
       server.on("/client/client1/", handleClientIOs);
       server.begin();
       // ...
    }
    handleClientIOs() ist eine selbstdefinierte Funktion, die die Variablenwerte von Server und Clients und die Kommunikations-messages in alle Richtungen verwaltet + auswertet.

    dann werden
    server.handleRoot();
    server.handleClient();
    zyklisch auch in loop() aufgerufen

    (Anm: handleRoot() brauche ich selber eigentlich gar nicht und habe es inzwischen auskommentiert)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  3. #3
    Hallo,
    vielen Dank für die schnelle Antwort, hat aber leider keine Änderung gebracht.
    Mein Problem ist aber auch das ich die Syntax rund um die Server-Befehle noch nicht verstehe.
    Normalerweise erarbeite ich mir das anhand von Beispielen und Infos aus Büchern usw.
    Aber wenn ein Beispiel nicht funktioniert, ist das natürlich schwierig.
    Das mit "server.on("/inline", [](){
    server.send(200, "text/plain", "this works as well");
    });" wird in allen Beispielen die ich verwendet habe benutzt.
    Was ist der Unterschied zwischen: "server.on("/",handleRoot) ;"
    und "server.on("/client/client0/", handleClientIOs);" ?

    MfG

    Juergen B.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.612
    Zitat Zitat von jbaben Beitrag anzeigen
    Was ist der Unterschied zwischen: "server.on("/",handleRoot) ;"
    und "server.on("/client/client0/", handleClientIOs);" ?
    ich bin auch Neuling auf diesem Gebiet.
    Zunächst sind handleRoot und handleClient oder handleClientIOs in jedem Falle eigene Funktionen.
    Soweit ich es verstehe, richtet sich das Verhalten des webservers, welche Funktion aufgerufen wird, danach, welchen Pfad ein Client aufruft - entweder den Root-Pfad oder ein abhängiges Unterverzeichnis.
    Man kann sie auch anders nennen, z.B.
    server.on("/",handleRoot) ;
    server.on("/sensor/temperatur/", handleTemperatur);

    Guck mal hier, etwa in der Mitte der Website, im Kapitel
    "Wir programmieren einen ESP-Server und ESP-Client um Temperaturwerte per WLAN zu übertragen"

    http://www.mikrocontroller-elektroni...d-arduino-ide/
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

Ähnliche Themen

  1. LCD ADC Ausgabe Problem
    Von runner02 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 10.03.2012, 21:31
  2. Problem mit Timer und LCD-Ausgabe
    Von MelMan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 10.08.2008, 17:51
  3. Problem mit UART - falsche Ausgabe
    Von homedom im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 19.01.2008, 19:26
  4. Problem mit LCD-ausgabe
    Von ZwieBack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 03.07.2007, 21:06
  5. Problem mit serieller Ausgabe
    Von schmic20 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 05.02.2005, 15:10

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •