This post is about boiler remote control.It is connected to temperature/ humidity sensor and arduino.
The original post can’t see except member of site
#include
#include
#include
#include
byte mac[] = {0x90,0xa2,0xda,0x0e,0xf7,0xfc};
byte ip[] = {192,168,0,30};
EthernetServer server(80);
Servo myservo;
dht DHT;
//pin state
int numPins = 5;
int pins[] = {3,4,5,6,7};
int pinState[] = {0,0,0,0,0};
char line1[100];
//servo
int servoState = 0;
//light sensor
const int LSensorPin = 1;
void setup()
{
for(int i = 0; i<numPins; i++){
pinMode(pins[i], OUTPUT);
}
Serial.begin(9600);
Ethernet.begin(mac, ip);
//
server.begin();
myservo.attach(9);
myservo.write(0);
int chk = DHT.read22(8);
}
void loop()
{
EthernetClient client = server.available();
if(client){
while(client.connected()){
readHeader(client);
if( ! pageNameIs("/")){
client.stop();
return;
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("");
client.println("Output Pin");
client.println("");
//pin control
setValuesFromParams();
setPinStates();
for(int i = 0; i< numPins; i++){
writeHTMLforPin(client, i);
}
//servo control
SVsetValuesFromParams();
SVsetPinStates();
SVwriteHTMLforPin(client);
client.println("");
client.println("");
//Light sensor
int lightValue = map(analogRead(LSensorPin), 0, 1023, 0,100);
client.println("Light : ");
client.print(lightValue);
client.println(" %,");
//Temp sensor
client.print(DHT.temperature,1);
client.println(" C, ");
client.print("Humid :");
client.print(DHT.humidity, 1);
client.println("%");
//
client.println("");
client.stop();
}
}
}
void writeHTMLforPin(EthernetClient client, int i){
client.print("
Pin ");
client.print(pins[i]);
client.print("");
client.print("Off");
client.print("On");
client.println("
");
}
void SVwriteHTMLforPin(EthernetClient client){
client.print("
Servo ");
client.print("");
client.print("0 degree");
client.print("90 degree
");
}
void setPinStates(){
for(int i=0; i<numPins; i++){
digitalWrite(pins[i], pinState[i]);
}
}
void SVsetPinStates(){
myservo.write(servoState*359);
delay(200);
}
void setValuesFromParams(){
for(int i =0; i<numPins; i++){
pinState[i] = valueOfParam(i + '0');
}
}
void SVsetValuesFromParams(){
servoState = SVvalueOfParam();
}
void readHeader(EthernetClient client){
//read the first line of header
char ch;
int i = 0;
while(ch != '\n'){
if(client.available()){
ch = client.read();
line1[i] = ch;
i ++;
}
}
line1[i] = '';
Serial.println(line1);
}
boolean pageNameIs(char* name){
int i = 4;
char ch = line1[i];
while(ch != ' ' && ch != '\n' && ch != '?'){
if(name[i-4] != line1[i]){
return false;
}
i++;
ch = line1[i];
}
return true;
}
int valueOfParam(char param){
for(int i=0; i<strlen(line1); i++){
if(line1[i] == param && line1[i+1] == '=')
{
return (line1[i+2] - '0');
}
}
return pinState[param-'0'];
}
int SVvalueOfParam(void){
for(int i=0; i<strlen(line1); i++){
if(line1[i] == '9' && line1[i+1] == '=')
{
return (line1[i+2] - '0');
}
}
return 0;
}