Guest User

Untitled

a guest
Dec 4th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.78 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ESP8266WiFi.h>
  3. #include <WiFiClient.h>
  4. #include <ESP8266WebServer.h>
  5.  
  6. #define LED 2
  7. #define REDPIN 6
  8. #define GREENPIN 5
  9. #define BLUEPIN 2
  10.  
  11. int RVal = 0;
  12. int GVal = 0;
  13. int BVal = 0;
  14.  
  15. char valInfo[16];
  16.  
  17. const char *ssid = "LEDStrip";
  18. const int Port = 5555;
  19. const String ID = "TV";
  20. String wifipassword, wifissid;
  21. IPAddress ip;
  22. ESP8266WebServer webserver(80);
  23. bool webserverStopped = false;
  24.  
  25. /* Just a little test message.  Go to http://192.168.4.1 in a web browser
  26.  * connected to this access point to see it.
  27.  */
  28. void handleRoot() {
  29.  
  30.   if( webserver.args() > 0 ){
  31.     wifipassword = webserver.arg("pass");
  32.     wifissid = webserver.arg("ssid");
  33.     uint8_t ip1 = atoi(webserver.arg("ip1").c_str());
  34.     uint8_t ip2 = atoi(webserver.arg("ip2").c_str());
  35.     uint8_t ip3 = atoi(webserver.arg("ip3").c_str());
  36.     uint8_t ip4 = atoi(webserver.arg("ip4").c_str());
  37.     ip = IPAddress(ip1, ip2, ip3, ip4);
  38.     webserver.send(200,"text/html","Configuration successful.");
  39.     Serial.println("Wifi SSID: " + wifissid);
  40.     Serial.println("Wifi Password: " + wifipassword);
  41.     delay(500);
  42.     webserver.stop();
  43.     delay(500);
  44.     webserverStopped = true;
  45.     WiFi.softAPdisconnect(true);
  46.     delay(5000);
  47.  
  48.     char wifissidchar[wifissid.length() + 1];
  49.     char wifipasschar[wifipassword.length() + 1];
  50.     wifissid.toCharArray(wifissidchar,wifissid.length() + 1);
  51.     wifipassword.toCharArray(wifipasschar,wifipassword.length() + 1);
  52.  
  53.     WiFi.begin(wifissidchar, wifipasschar);
  54.     Serial.print("Connection to Wifi");
  55.     uint8_t i = 0;
  56.     while (WiFi.status() != WL_CONNECTED) {
  57.       if(i >= 60){
  58.         Serial.println("Wifi Connect Timed Out. Hardreset.");
  59.         ESP.reset();
  60.       }
  61.      
  62.       digitalWrite(LED, HIGH);
  63.       delay(500);
  64.       digitalWrite(LED, LOW);
  65.       Serial.print(WiFi.status());
  66.       Serial.print(".");
  67.       i++;
  68.     }
  69.     Serial.println("");
  70.     digitalWrite(LED, HIGH);
  71.     delay(1000);
  72.     return;
  73.   }
  74.  
  75.   webserver.send(200, "text/html","<!DOCTYPE html>\
  76. <html>\
  77.  <head>\
  78.    <title>LED Strip Configuration</title>\
  79.  </head>\
  80.  <body>\
  81.    <h1>Setup LED Strip Controller</h1>\
  82.    <form>\
  83.      <input type='text' name='ssid' placeholder='SSID'><br>\
  84.      <input type='text' name='pass' placeholder='Password'><br>\
  85.      <input type='text' name='ip1' placeholder='192' style='width:25px'><input type='text' name='ip2' placeholder='168' style='width:25px'><input type='text' name='ip3' placeholder='188' style='width:25px'><input type='text' name='ip4' placeholder='00' style='width:25px'><br>\
  86.      <input type='submit' value='Submit'>\
  87.    </form>\
  88.  </body>\
  89. </html>");
  90. }
  91.  
  92. void info(){
  93.   char r[3], g[3], b[3];
  94.  
  95.   if(RVal <= 15){
  96.       sprintf(r, "0%x", RVal);
  97.   }else{
  98.     sprintf(r, "%x", RVal);
  99.   }
  100.  
  101.   if(GVal <= 15){
  102.       sprintf(g, "0%x", GVal);
  103.   }else{
  104.     sprintf(g, "%x", GVal);
  105.   }
  106.  
  107.   if(BVal <= 15){
  108.       sprintf(b, "0%x", BVal);
  109.   }else{
  110.     sprintf(b, "%x", BVal);
  111.   }
  112.   sprintf(valInfo,"#%s%s%s",r,g,b);
  113. }
  114.  
  115. void setup() {
  116.   delay(1000);
  117.   Serial.begin(115200);
  118.   WiFi.hostname("ESP_" + ID);
  119.  
  120.   pinMode(LED, OUTPUT);
  121.   pinMode(REDPIN, OUTPUT);
  122.   pinMode(GREENPIN, OUTPUT);
  123.   pinMode(BLUEPIN, OUTPUT);
  124.  
  125.   analogWrite(REDPIN, RVal);
  126.   analogWrite(GREENPIN, GVal);
  127.   analogWrite(BLUEPIN, BVal);
  128.  
  129.   Serial.println("Starting AP");
  130.   WiFi.softAP(ssid);
  131.   webserver.on("/", handleRoot);
  132.   Serial.println("Starting Webserver");
  133.   webserver.begin();
  134.   Serial.println("Setup completed");
  135.   Serial.flush();
  136. }
  137.  
  138. void loop() {
  139.   digitalWrite(LED, LOW);
  140.   if(!webserverStopped){
  141.     webserver.handleClient();
  142.     return;
  143.   }
  144.  
  145.   WiFiClient client;
  146.   if (!client.connect(ip, Port)) {
  147.         Serial.println("Connection to TCP Server failed. Waiting 5 seconds.");
  148.         delay(5000);
  149.         return;
  150.     }
  151.  
  152.   char response[8]; //response außerhalb deklarieren und innerhalb auf 0 setzen?
  153.   while(client.connected()){
  154.  
  155.     client.readBytes(response,7);
  156.     if(response[0] == 35){
  157.       char r[3] = {response[1], response[2]};
  158.       char g[3] = {response[3], response[4]};
  159.       char b[3] = {response[5], response[6]};
  160.  
  161.       RVal = strtol(r,NULL,16);
  162.       GVal = strtol(g,NULL,16);
  163.       BVal = strtol(b,NULL,16);
  164.      
  165.       Serial.print("Values: ");
  166.       Serial.print(RVal);
  167.       Serial.print(" ");
  168.       Serial.print(GVal);
  169.       Serial.print(" ");
  170.       Serial.println(BVal);
  171.  
  172.       analogWrite(REDPIN, RVal);
  173.       analogWrite(GREENPIN, GVal);
  174.       analogWrite(BLUEPIN, BVal);
  175.     }else if(response[0] == 73){
  176.       info();
  177.       client.print(valInfo);
  178.     }
  179.  
  180.     response[0] = 0;
  181.   }
  182.  
  183.   Serial.println("Closing TCP connection.");
  184.   client.stop();
  185.  
  186.   Serial.println("Loop ended. Waiting 5 seconds.");
  187.   delay(5000);
  188. }
Advertisement
Add Comment
Please, Sign In to add comment