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
  NodeMCU12E mit UDP Client & UDP Server & Webserver rkuehle 4 92 17.10.2017 23:49
Letzter Beitrag: Fips
  ESP8266 als Brücke zum Hotel-Wifi Rasalino 9 384 11.10.2017 05:28
Letzter Beitrag: Gelegenheitsbastler
  Debug mit Telnet ESP8266 (und ESP32 ungetestet)) Tommy56 2 173 26.09.2017 19:16
Letzter Beitrag: Tommy56
  ESP8266 - gelegentliche Verbindungsabbrüche ardu_arne 27 1.163 25.09.2017 10:58
Letzter Beitrag: ardu_arne
Lightbulb Sonoff WiFi Wireless Switch per Webserver vom Tablet oder Smartphone aus schalten Fips 1 791 12.09.2017 20:45
Letzter Beitrag: Fips
  Welche OneWire Library für ESP8266-12E? ardu_arne 7 483 30.07.2017 20:21
Letzter Beitrag: Tommy56
  esp8266 OTA Uploadproblem(chen) ardu_arne 24 1.054 28.07.2017 22:22
Letzter Beitrag: Tommy56
  Einfacher Webserver Nodemcu Esp8266 Onboard Led (Pin) schalten Fips 0 607 18.07.2017 08:10
Letzter Beitrag: Fips
Lightbulb SPIFFS DOWNLOAD UPLOAD & DELETE Esp8266 NodeMCU Fips 24 1.335 14.07.2017 07:24
Letzter Beitrag: Fips
  Hardware für und mit ESP8266 Gelegenheitsbastler 0 464 04.07.2017 19:28
Letzter Beitrag: Gelegenheitsbastler

Gehe zu:


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