اطلاعیه

Collapse
No announcement yet.

فرم ورودی html

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    فرم ورودی html

    سلام اساتید محترم هدف ساختن یه ترموستات برای کنترل دما و رطوبت هست از nodemcu استفاده کردم ال سی دی و سنسور dht11 و رله دو کانال الان از طریق کلید ها و ال سی دی هم دما و رطوبت رو میتونم ببینم و هم کنترل کنم تو قسمت وب سرور هم کد html اضافه کردم که طبق عکس میتونم دما و رطوبت و حداقل و حد اکثرشو ببینم ولی نمیدونم چطور میتونم اون تکست باکس هایی که برای ورود حداقل و حد اکثر هست طوری تعریف کنم که حالت ورودی داشته باشه و اعداد رو به نود بفرسته و اونجا برابر با متغییر های حداقل و حد اکثر رطوبت و دما قرار بده لطفا یه نگاههی به کد بندازید و در صورت امکان برام تغییرش بدید که بتونم از صفحه وب متغییر ها رو کنترل کنم.



    کد:
    #include <Wire.h> 
    
     #include <LiquidCrystal_I2C.h> //D1&D2
    #include <Adafruit_Sensor.h>
    #include <DHT.h>
    
    #include <EEPROM.h>
    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>  
    
    
    #define DHTTYPE DHT11
    #define UP      1   //RX
    #define SET     D0
    #define DOWN    3   //TX
    #define HEATER  D7
    #define STEAM   D8
    
    DHT dht1( D4, DHTTYPE); 
    
    byte termometer[8] = //icon for termometer
    {
        B00100,
        B01010,
        B01010,
        B01110,
        B01110,
        B11111,
        B11111,
        B01110
    };
    byte droplet[8] = //icon for water droplet
    {
        B00100,
        B00100,
        B01010,
        B01010,
        B10001,
        B10001,
        B10001,
        B01110,
    };
    byte Degree[8] = //icon for Degree
    {
        B01110,
        B01010,
        B01110,
        B00000,
        B00110,
        B01000,
        B01000,
        B00110
    };
    byte mini[8] = //icon for minimum
    {
        B01110,
        B01110,
        B01110,
        B01110,
        B11111,
        B11111,
        B01110,
        B00100
    };
    byte maxi[8] = //icon for maximum
    {
        B00100,
        B01110,
        B11111,
        B11111,
        B01110,
        B01110,
        B01110,
        B01110
    };
    
    IPAddress ip(192, 168, 0, 107);
    IPAddress gateway(192, 168, 0, 1);
    IPAddress subnet(255, 255, 255, 0);
    IPAddress DNS(8, 8, 8, 8);
    const char* ssid = "DALI_CHAI";
    const char* password = "";
    ESP8266WebServer server(80);
    
    
    float Temp;
    float Humidity;
    int count=1;
    int menu=1;
    
    unsigned long previousMillis = 0;
    unsigned long currentMillis =0;
    const long interval = 10000;
    
    int heatmin=0;
    int heatmax=0;
    int humimin=0;
    int humimax=0;
    int maxTemp =-100;
    int minTemp=100; 
    int maxHumidity =-100;
    int minHumidity=100; 
    
    LiquidCrystal_I2C lcd(0x3F, 16, 2);
    
    void setup()
    {
      Serial.begin(9600);
      WiFi.config(ip, gateway, subnet, DNS);
      WiFi.begin(ssid, password);
      EEPROM.begin(1024); 
      server.begin();
      
      lcd.begin();
      lcd.createChar(1,termometer);
      lcd.createChar(2,droplet);
      lcd.createChar(3,Degree);
      lcd.createChar(4,mini);
      lcd.createChar(5,maxi);
      
      dht1.begin();
      heatmin=EEPROM.read(1);
      heatmax=EEPROM.read(2);
      humimin=EEPROM.read(3);
      humimax=EEPROM.read(4);
     
      pinMode(UP,INPUT);
      pinMode(DOWN,INPUT);
      pinMode(SET,INPUT);
    
     
      pinMode(HEATER,OUTPUT);
      pinMode(STEAM,OUTPUT);
          
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.write(1);
          lcd.write(2);
          delay(1000);
          lcd.setCursor(14,0);
          lcd.write(2);
          lcd.write(1);
          delay(1000);
          lcd.setCursor(3,0);
          lcd.print("DALI  CHAI");
          delay(2000);
          lcd.setCursor(0,1);
          lcd.print("Smart Farme WIFI");
          delay(4000);
    startup();
    }
    
    
    void startup(){
    
        currentMillis = millis();
        
    //------------------------------- HTML CODE ----------------------------------
    server.on("/", []() {
          float temp = dht1.readTemperature();
          float Humidity = dht1.readHumidity();
        
        
    
        String cssClass = "mediumhot";
      
        if (temp < 0)
          cssClass = "cold";
        else if (temp > 20)
          cssClass = "hot";
      
         String message = "<!DOCTYPE  html><html><head><title>""</title><meta  charset=\"utf-8\" /><meta name=\"viewport\"  content=\"width=device-width\" /><style>\n";
        message += "html {height: 100%;}";
         message += "div {color: #fff;font-family: 'Arial Black';font-weight:  400;left: 50%;position: absolute;text-align: center;top: 50%;transform:  translateX(-50%) translateY(-50%);}";
        message += "h1 {font-size: xlarge;font-weight: 400; margin: 0}";
        message += "h2 {font-size: xxxlarge;font-weight: 400; margin: 0}";
        message += "h3 {font-size: small;font-weight: 400; margin: 0}";
        message += "h4 {font-size: xsmall;font-weight: 400; margin: 0}";
        message += "body {height: 100%;}";
        message += ".cold {background: linear-gradient(to bottom, #7abcff, #0665e0 );}";
        message += ".mediumhot {background: linear-gradient(to bottom, #81ef85,#057003);}";
        message += ".hot {background: linear-gradient(to bottom, #fcdb88,#d32106);}";
        message += "</style></head><body class=\"" + cssClass + "\"><div>"
                   "<h1>""Office""<br><br></h1>"
                    "<h2>""T : "+temp  +"&deg;C""<br></h2><h3>""Max Temperature :  "+maxTemp+"&deg;C"+"<br>""Min Temperature :  "+minTemp+"&deg;C""</h3>""<br>"
                    "<h2>""H : "+Humidity +"%""<br></h2><h3>""Max  Humidity : "+maxHumidity+"%"+"<br>""Min Humidity :  "+minHumidity+"%""</h3><br>"+"</div></body></html>";
         message +="<h4><form action='http://192.168.0.107/submit'  method='POST'> Enter Min T:<input name=\"formTemp\"  type=\"number\"> <input type=\"submit\">  </form></h4><br>";
        message +="<form  action='http://192.168.0.107/submit' method='POST'> Enter Max  T:<input name=\"formTemp\" type=\"number\"> <input  type=\"submit\"> </form> <br>";
        message  +="<form action='http://192.168.0.107/submit' method='POST'> Enter  Min H:<input name=\"formTemp\" type=\"number\"> <input  type=\"submit\"> </form> <br>";
        message  +="<form action='http://192.168.0.107/submit' method='POST'> Enter  Max H:<input name=\"formTemp\" type=\"number\"> <input  type=\"submit\"> </form> <br>";
                                              
        message +=("<meta http-equiv=\"refresh\" content=\"10\">");
        
        
        server.send(200, "text/html", message);
      });
    //------------------------------- LOADING ... --------------------------------
          menu=1;
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Please Wait "); delay(500); 
          lcd.print(".");delay(500);
          lcd.print(".");delay(500);
          lcd.print(".");delay(500);
          lcd.print(".");delay(500);
          lcd.clear();
          delay(1000);
    
    //------------------------------- MENU 1 --------------------------------
    
      while(menu==1){
          lcd.setCursor(0, 0);
          lcd.write(1);
          lcd.setCursor(1, 0);
          lcd.print(" ");
          lcd.setCursor(2, 0);
          lcd.print("Enter min T:");
          lcd.setCursor(0, 1);
          lcd.print(heatmin);
          lcd.setCursor(3, 1);
          lcd.write(3);
          
          if (digitalRead(UP))   {heatmin++;delay(200);}
          if (digitalRead(DOWN)) {heatmin--;delay(200);}
          if (heatmin < 10 ) heatmin=10;
          if (heatmin > 99)  heatmin=99;
    
          if (digitalRead(SET)) {EEPROM.write(1,heatmin);EEPROM.commit(); lcd.clear(); lcd.print("Saved ..."); delay(2000); menu=2;}
          if (millis() - currentMillis > 30000) { lcd.clear(); break;}
        }
    
    //------------------------------- MENU 2 --------------------------------
      while(menu==2){
          lcd.setCursor(0, 0);
          lcd.write(1);
          lcd.setCursor(1, 0);
          lcd.print(" ");
          lcd.setCursor(2, 0);
          lcd.print("Enter max T:");
          lcd.setCursor(0, 1);
          lcd.print(heatmax);
          lcd.setCursor(3, 1);
          lcd.write(3);
          
          if (digitalRead(UP))   {heatmax++;delay(200);}
          if (digitalRead(DOWN)) {heatmax--;delay(200);}
          if (heatmax < 10 ) heatmax=10;
          if (heatmax > 99)  heatmax=99;
    
          if (digitalRead(SET)) {EEPROM.write(2,heatmax);EEPROM.commit(); lcd.clear(); lcd.print("Saved ..."); delay(2000); menu=3;}
          if (millis() - currentMillis > 60000) { lcd.clear(); break;}
        }
    
    //------------------------------- MENU 3 --------------------------------
      while(menu==3){
          lcd.setCursor(0, 0);
          lcd.write(2);
          lcd.setCursor(1, 0);
          lcd.print(" ");
          lcd.setCursor(2, 0);
          lcd.print("Enter min H:");
          lcd.setCursor(0, 1);
          lcd.print(humimin);
          lcd.setCursor(3, 1);
          lcd.print("%");
          
          if (digitalRead(UP))   {humimin++;delay(200);}
          if (digitalRead(DOWN)) {humimin--;delay(200);}
          if (humimin < 10 ) humimin=10;
          if (humimin > 99)  humimin=99;
    
          if (digitalRead(SET)) {EEPROM.write(3,humimin); EEPROM.commit();lcd.clear(); lcd.print("Saved ..."); delay(2000); menu=4;}
          if (millis() - currentMillis > 90000) { lcd.clear(); break;}
        }
    
    //------------------------------- MENU 4 --------------------------------
      while(menu==4){
          lcd.setCursor(0, 0);
          lcd.write(2);
          lcd.setCursor(1, 0);
          lcd.print(" ");
          lcd.setCursor(2, 0);
          lcd.print("Enter max H:");
          lcd.setCursor(0, 1);
          lcd.print(humimax);
          lcd.setCursor(3, 1);
          lcd.print("%");
          
          if (digitalRead(UP))   {humimax++;delay(200);}
          if (digitalRead(DOWN)) {humimax--;delay(200);}
          if (humimax < 10 ) humimax=10;
          if (humimax > 99)  humimax=99;
    
           if (digitalRead(SET)) {EEPROM.write(4,humimax);EEPROM.commit();  lcd.clear(); lcd.print("Saved ..."); delay(2000); lcd.clear(); break;}
          if (millis() - currentMillis > 120000) { lcd.clear(); break;}
        }
      {
          EEPROM.end();}
    }
    
    void loop() {
        
        
            Humidity = dht1.readHumidity();
            Temp = dht1.readTemperature();
            
       
       if (Temp<minTemp){minTemp = Temp;}
       if (Temp>maxTemp){maxTemp = Temp;}
    
       if (Humidity<minHumidity){minHumidity= Humidity;}
       if (Humidity>maxHumidity){maxHumidity = Humidity;}
       
    //-----------------------------  Serial Print -----------------------------         
      if (isnan(Temp) || isnan(Humidity)) {
        Serial.println("Failed to read from DHT #1");
      } else {
        Serial.print("Humidity: "); 
        Serial.print(Humidity);
        Serial.print(" %\t");
        Serial.print("Temperature: "); 
        Serial.print(Temp);
        Serial.println(" *C\t");
        Serial.print("MAX Humidity: "); 
        Serial.print(maxHumidity);
        Serial.print(" %\t");
        Serial.print("MIN Humidity: "); 
        Serial.print(minHumidity);
        Serial.println(" %\t");
        Serial.print("MAX Temperature: "); 
        Serial.print(maxTemp);
        Serial.print(" *C\t");
        Serial.print("MIN Temperature: "); 
        Serial.print(minTemp);
        Serial.println(" *C\t");
      }
           
    
    //----------------------------- Relay Control -----------------------------------
    
        if ( Temp < heatmin ) digitalWrite(HEATER,HIGH);
        if ( Temp > heatmax ) digitalWrite(HEATER,LOW);
        else digitalWrite(HEATER,HIGH);
    
        if ( Humidity < humimin ) digitalWrite(STEAM,HIGH);
        if ( Humidity > humimax ) digitalWrite(STEAM,LOW);
        else digitalWrite(STEAM,HIGH);
        
    
    //---------------------------- LCD ----------------------------------------------
        switch (count){
          case 1:
        
          lcd.setCursor(0, 0);
          lcd.write(1);
          lcd.setCursor(2, 0);
          lcd.print(Temp,1);
          lcd.setCursor(6, 0);
          lcd.write(3);
          lcd.setCursor(8, 0);
          lcd.write(5);
          lcd.setCursor(9, 0);
          lcd.print(maxTemp);
          lcd.setCursor(12, 0);
          lcd.write(4);
          lcd.setCursor(13, 0);
          lcd.print(minTemp);
          lcd.setCursor(0,1);
          lcd.write(2);
          lcd.setCursor(2, 1);
          lcd.print(Humidity,1);
          lcd.setCursor(6, 1);
          lcd.print("%");
          lcd.setCursor(8, 1);
          lcd.write(5);
          lcd.setCursor(9, 1);
          lcd.print(maxHumidity);
          lcd.setCursor(12, 1);
          lcd.write(4);
          lcd.setCursor(13, 1);
          lcd.print(minHumidity,1);
         }     
    
         count++;
        if (count>4) count=1;
        delay(1000);
        if (digitalRead(SET)) startup();
        server.handleClient();
    }
لطفا صبر کنید...
X