INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP8266 Webserver
30.07.2016, 20:15
Beitrag #1
ESP8266 Webserver
Hey Leute Wink

Es geht um einen "Webserver" mit ESP8266 Wifi Modul + 433Mhz Sender.

Ich habe soweit alles am laufen wie ich es brauche.
Bis auf den Teil der Statusanzeige.

Hier ist der Code:

Code:
// Homecontrolserver Webpage Zentrale Seite


byte unterProgramm = 0;                                                    // Merker für Unterprogram.



#include <ESP8266WiFi.h>






const char* ssid = "SSID";
const char* password = "Passwort";





unsigned long ulReqcount;
unsigned long ulReconncount;







int hb_state = LOW;                                                       // led_hb status

unsigned long previousMillis = 0;                                        

const long interval_hb = 500;                                             // interval für led_hb  

const int ledc = 16;                                                      // Led ( grün ) zeigt eine bestehende Verbindung zum Router an.
const int led_r = 5;                                                      // Led ( blau ) zeigt eine aktive Datenverbindung zwischen Client und ESP8266 an.
const int led_hb = 4;                                                     // Led ( rot ) program läuft


#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();



WiFiServer server(99);                                                     // Server PORT (99)   BSP: 192.168.4.1:99





//################################################################################​########---SETUP---################################################################################​##############################

void setup() {


  
  ulReqcount=0;
  ulReconncount=0;
  
  WiFi.mode(WIFI_STA);
  WiFiStart();
  
  Serial.begin(115200);                                                    // BAUD RATE ( Standart: 115200 )

  mySwitch.enableTransmit(2);                                              // 2 = Pin D4

  pinMode(ledc,OUTPUT);
  pinMode(led_r,OUTPUT);
  pinMode(led_hb,OUTPUT);
  
  
  
}




void WiFiStart()
{
  ulReconncount++;
  
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    digitalWrite(ledc,LOW);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  digitalWrite(ledc,HIGH);
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}











//################################################################################​###########----LOOP-----################################################################################​######################


void loop() {

  
  unsigned long currentMillis = millis();



if (currentMillis - previousMillis >= interval_hb) {
    
    previousMillis = currentMillis;

    
    if (hb_state == LOW) {
      hb_state = HIGH;
    } else {
      hb_state = LOW;
    }

    
    digitalWrite(led_hb, hb_state);
  }





  

  // Serial.println(unterProgramm);

  // check if WLAN is connected
  if (WiFi.status() != WL_CONNECTED)
  {
    WiFiStart();
  }
  
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client)
  {
    digitalWrite(led_r,LOW);
  
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  digitalWrite(led_r,HIGH);
  unsigned long ultimeout = millis()+250;
  while(!client.available() && (millis()<ultimeout) )
  {
    delay(1);
  }
  if(millis()>ultimeout)
  {
    Serial.println("client connection time-out!");
    return;
  }
  
  // Read the first line of the request
  String sRequest = client.readStringUntil('\r');
  //Serial.println(sRequest);
  client.flush();
  
  // stop client, if request is empty
  if(sRequest=="")
  {
    Serial.println("empty request! - stopping client");
    client.stop();
    return;
  }
  
  // get path; end of path is either space or ?
  // Syntax is e.g. GET /?pin=MOTOR1STOP HTTP/1.1
  String sPath="",sParam="", sCmd="";
  String sGetstart="GET ";
  int iStart,iEndSpace,iEndQuest;
  iStart = sRequest.indexOf(sGetstart);
  if (iStart>=0)
  {
    iStart+=+sGetstart.length();
    iEndSpace = sRequest.indexOf(" ",iStart);
    iEndQuest = sRequest.indexOf("?",iStart);
    
    // are there parameters?
    if(iEndSpace>0)
    {
      if(iEndQuest>0)
      {
        // there are parameters
        sPath  = sRequest.substring(iStart,iEndQuest);
        sParam = sRequest.substring(iEndQuest,iEndSpace);
      }
      else
      {
        // NO parameters
        sPath  = sRequest.substring(iStart,iEndSpace);
      }
    }
  }
  
  ///////////////////////////////////////////////////////////////////////////////
  // output parameters to serial, you may connect e.g. an Arduino and react on it
  ///////////////////////////////////////////////////////////////////////////////
  if(sParam.length()>0)
  {
    int iEqu=sParam.indexOf("=");
    if(iEqu>=0)
    {
      sCmd = sParam.substring(iEqu+1,sParam.length());
      Serial.println(sCmd);
    }
  }
  
  
  ///////////////////////////
  // format the html response
  ///////////////////////////
  String sResponse,sHeader;
  
  ////////////////////////////
  // 404 for non-matching path
  ////////////////////////////
  if(sPath!="/")
  {
    sResponse="<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL was not found on this server.</p></body></html>";
    
    sHeader  = "HTTP/1.1 404 Not found\r\n";
    sHeader += "Content-Length: ";
    sHeader += sResponse.length();
    sHeader += "\r\n";
    sHeader += "Content-Type: text/html\r\n";
    sHeader += "Connection: close\r\n";
    sHeader += "\r\n";
  }
  ///////////////////////
  // format the html page
  ///////////////////////
  else
  {
    ulReqcount++;
    sResponse  = "<html><head><title>Homecontrolserver</title></head><body>";
    sResponse += "<font color=\"#000000\"><body bgcolor=\"#FFFFFF\">";
    sResponse += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">";
    sResponse += "<h1>Homecontrolserver</h1>";
    sResponse += "<h1></h1>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<FONT SIZE=+2>";
    sResponse += "<p>Schalter 1     <a href=\"?pin=a_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=a_aus\"><button>Aus</button></a></p>";
    sResponse += "<p>Schalter 2     <a href=\"?pin=b_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=b_aus\"><button>Aus</button></a></p>";
    sResponse += "<p>Schalter 3     <a href=\"?pin=c_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=c_aus\"><button>Aus</button></a></p>";
    sResponse += "<p>Schalter 4     <a href=\"?pin=d_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=d_aus\"><button>Aus</button></a></p>";
    sResponse += "<p>Schalter 5     <a href=\"?pin=e_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=e_aus\"><button>Aus</button></a></p>";
    sResponse += "<p>Schalter 6     <a href=\"?pin=f_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=f_aus\"><button>Aus</button></a></p>";
    sResponse += "<p>Alle An        <a href=\"?pin=g_ein\"><button>Ein</button></a>&nbsp;<a href=\"?pin=g_aus\"><button>Aus</button></a></p>";
    
    //////////////////////
    // react on parameters
    //////////////////////
    if (sCmd.length()>0)
    {
      // write received command to html page
      sResponse += "INFO: " + sCmd + "<BR>";
      
      // switch GPIO
      
      if(sCmd.indexOf("a_ein")>=0)
      {

      Serial.println("a_ein");  
    
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1000, 24);
      
      }
      else if(sCmd.indexOf("a_aus")>=0)
      {
        
      Serial.println("a_aus");
    

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);
    
        
      }


      if(sCmd.indexOf("b_ein")>=0)
      {
      Serial.println("b_ein");
  
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(2000, 24);
        
      
      }
      else if(sCmd.indexOf("b_aus")>=0)
      {

      Serial.println("b_aus");
    
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);
        
      
     } else if(sCmd.indexOf("c_ein")>=0)
    
      {

      Serial.println("c_ein");
      

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(3000, 24);

      } else if(sCmd.indexOf("c_aus")>=0)
    
      {

      Serial.println("c_aus");
    

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);

      } else if(sCmd.indexOf("d_ein")>=0)
    
      {

      Serial.println("d_ein");
    
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(4000, 24);

      } else if(sCmd.indexOf("d_aus")>=0)
    
      {

      Serial.println("d_aus");
    

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);

      } else if(sCmd.indexOf("e_ein")>=0)
    
      {

      Serial.println("e_ein");
      
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(5000, 24);

      } else if(sCmd.indexOf("e_aus")>=0)
    
      {

      Serial.println("e_aus");
      

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);
      
       } else if(sCmd.indexOf("f_ein")>=0)
    
      {

      Serial.println("f_ein");
      

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(6000, 24);

       } else if(sCmd.indexOf("f_aus")>=0)
    
      {

      Serial.println("f_aus");
      

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);

      } else if(sCmd.indexOf("g_ein")>=0)
    
      {

      Serial.println("g_ein");
      

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(2000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(3000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(4000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(5000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(6000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(7000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(8000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(9000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(10000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(11000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(12000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(13000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(14000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(15000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(16000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(17000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(18000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(19000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(20000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(21000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(22000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(23000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(24000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(25000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(26000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(27000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(28000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(29000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(30000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(31000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(32000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(33000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(34000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(35000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(36000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(37000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(38000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(39000, 24);
      delay(100);
      mySwitch.setRepeatTransmit(15);
      mySwitch.send(40000, 24);
      delay(100);






      
       } else if(sCmd.indexOf("g_aus")>=0)
    
      {

      Serial.println("g_aus");
      

      mySwitch.setRepeatTransmit(15);
      mySwitch.send(1, 24);


      }
      




      
    }
    
    sResponse += "<FONT SIZE=-2>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>";
    sResponse += "<BR>Aufrufz&auml;hler = ";
    sResponse += ulReqcount;
    sResponse += " - Verbindungsz&auml;hler = ";
    sResponse += ulReconncount;
    sResponse += "<BR>";
    sResponse += "<BR>";
  
    sResponse += "</body></html>";
    
    sHeader  = "HTTP/1.1 200 OK\r\n";
    sHeader += "Content-Length: ";
    sHeader += sResponse.length();
    sHeader += "\r\n";
    sHeader += "Content-Type: text/html\r\n";
    sHeader += "Connection: close\r\n";
    sHeader += "\r\n";
  }
  
  // Send the response to the client
  client.print(sHeader);
  client.print(sResponse);
  
  // and stop the client
  client.stop();
  Serial.println("Client disonnected");

  
}


Ich sende per Webpage einfach Funksignale an meine 433-Mhz Empfänger, das klappt auch. Ich würde jedoch gerne auf der Webpage sehen was AN und was AUS ist, um auch später mal Funk Sensoren anzuzeigen.

Wie ich das im Programm machen will weis ich schon boolean tür1 = false; einfach mit Merkern, die ich dementsprechend setze und abfrage das bekomme ich hin.

Aber wie kann ich mir das als zb. Led Indikator ( Kreis: grün , rot) oder als text zb. Tür1 Status: offen / zu ... anzeigen lassen ?

Ich hab leider 0 -> sehr wenig Ahnung von HTML und dem ganzen. Hat jemand ein simples ( kleines ) BSP wie ich das mache ? also mir geht es nur um den Teil des anzeigen's auf der HP nicht der Code zum vergleich Tür: offen / zu.


Über Hilfe bin ich Dankbar Wink


Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  [Vorstellung] ESP8266 Webserver mit AJAX Tommy56 5 56 Heute 18:32
Letzter Beitrag: Tommy56
  Esp8266 programmieren Sixtus80 21 413 26.06.2017 20:59
Letzter Beitrag: Tommy56
  ESP8266 esp-12e development board & BME280 falsche Werte Lurchi 6 347 09.05.2017 00:54
Letzter Beitrag: Lurchi
Lightbulb ESP8266 ESP-12E & BME280 Lurchi 9 1.051 04.05.2017 11:59
Letzter Beitrag: Tommy56
  ESP8266 warten auf Datenemfang (seriell) RaLach 2 256 07.04.2017 21:01
Letzter Beitrag: SkobyMobil
  Bild in eine html Seite auf einem ESP8266 einfügen rockzm 1 268 06.04.2017 14:57
Letzter Beitrag: Tommy56
  ESP8266 Agotto 0 233 06.04.2017 14:54
Letzter Beitrag: Agotto
  Interrupt beim ESP8266 dost0011 9 893 08.03.2017 14:32
Letzter Beitrag: Tommy56
  ESP8266 Server connect sowerum 8 908 02.03.2017 18:21
Letzter Beitrag: Chlorat
  802.11n mit ESP8266 ( ESP01 / ESP12-F ) b3ta 5 314 19.02.2017 21:40
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste