European Project Semester at ISEP - EPS@ISEP

This is an old revision of the document!


#include <SPI.h> #include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x44, 0x7A }; mac addres of arduino byte ip[] = { 10,0,18,110 }; ip address of arduino

byte server[] = { 193,136,63,5 }; ip address of the server Client client(server, 8080); int analogPin=0; float LHS; Local humidity sensor int sensor_number=8; int min_value = 100; int water=0; int pump=1; int fan=1; int stand_by=0;

void setup() {

pinMode(2, OUTPUT); //FAN
pinMode(4, OUTPUT); //PUMP
pinMode(7, INPUT); //WLS 1
pinMode(8, INPUT); //WLS 2


// start the Ethernet connection:
Ethernet.begin(mac, ip);
// start the serial library:
Serial.begin(9600);
// give the Ethernet shield a second to initialize:
delay(1000);

}

float getValue(String reply) {

String startString = "Humidity Sensor Id: ";
int start = startString.length() ;
int finish = reply.indexOf(" %");
String roi = reply.substring(start,finish);
start = roi.indexOf(" "); start++;
String result = roi.substring(start);
char arrayOfChars[result.length()];
result.toCharArray(arrayOfChars, result.length());
float res = atof(arrayOfChars);
return res;

}

Water Level Control: String control_water() { String alarm; boolean WLS1=0; boolean WLS2=0; WLS1=digitalRead(7); WLS2=digitalRead(8); if (WLS1==0) { alarm=“Water level: OK”; water=1; } else { if (WLS2==0) { alarm=“Water level: 1st Water Level Alarm”; water=1; } else { alarm=“Water Level: WARNING: Fill up the water!”; water=0; } } WLS1=digitalRead(2); WLS2=digitalRead(7); return (alarm); } void loop() { float LHS=0; float value=0; String alarm; String reply; String s1= “GET /eps/servlet/GetSensorData?id=C0” ; String s2= “&value=&date=&submit=Get+Rel+Humidity+Data&client=auto HTTP/1.0” ; while (1) { stand_by=(pump&fan&water); LHS = analogRead(analogPin)/ 10.23; min_value = LHS; if (client.connect()) { Serial.println(“connected”); Make a HTTP request:

  if (client.available()) 
  {
  for (int i=1; i<sensor_number; i++)
  {
   client.println(s1+i+s2);
    reply = client.read();
   if (reply==!("No data available")) 
   {
      value = getValue(reply);
     if (min_value > value) min_value = value;
   }
  }
  }
  else
  {
    // if no connection with the server
  Serial.println("connection failed");
  value=min_value;
  }
  //Humidifier Control:
        if( value>70 )
        {
          client.println("WARNING: Humidity Level Critical High!");
          if(stand_by==0)
          {
            digitalWrite(2, LOW); // Deactivate FAN
            int fan=0;
            digitalWrite(4, LOW); //Dectivate Pump
            int pump=0;
          }
        }
        if( value>55 )
        {
          client.println("Humidity Level is above 55%");
          if(stand_by==0)
          {
            digitalWrite(2, LOW); // Deactivate FAN
            fan=1;
            digitalWrite(4, LOW); //Deactivate Pump
            pump=1;
            client.println("Humidifier OFF");
          }
        if( value<40 ) 
        {
          client.println("WARNING: Humidity Level Critical Low!");
          if(stand_by==1)
          {
            digitalWrite(2, HIGH); // Activate FAN
            int fan=0;
            digitalWrite(4, HIGH); //Activate Pump
            int pump=0;
        }
        if( value<45 )
        {
          client.println("Humidity Level Under 45%");
          if(stand_by==1)
          {
            digitalWrite(2, HIGH); // Activate FAN
            int fan=0;
            digitalWrite(4, HIGH); //Activate Pump
            int pump=0;
          }
        }
         
   // Water level message  
     alarm = control_water();
     client.println(alarm);// ??? cliente.write()
     
  }// if available
 } // if do connect
// if the server's disconnected, stop the client:
if (!client.connected()) 
{
  Serial.println();
  Serial.println("disconnecting.");
  //client.stop();
}

} delay(1000); } }

QR Code
QR Code humidifier:start (generated for current page)