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); } }