Linux1337:
If you want to control your home using an arduino,You need a webserver...
Here you have 3 options...:
Buy a server (buy a dell, hp etc. server, write some php script and run it as a "website")
Use a server host (many dedicated or non-dedicated server hosts out there)
Use aws (amazon web services is a great way to get a free server going if your not goin to do much with it, free for one year!)And you need some relays, i would not reccomend connecting the relays to your power outlets tho, use some king of home automation remote and power jacks and hack it.
Ps. If your gonna host a webserver make sure u got a firewall and some security so your lights dont go on and off every few seconds!
Well, that is somewhat misleading (a little short of BS). You can have the arduino act as a web server to control things via a web page. Below is some simple arduino web server test code.
//zoomkat 3-17-12
//simple button GET server code to control servo and arduino pin 5
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields
//Powering a servo from the arduino usually DOES NOT WORK.
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605
#include <SPI.h>
#include <Ethernet.h>
//#include <Servo.h>
//Servo myservo; // create servo object to control a servo
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port
String readString;
//////////////////////
void setup(){
pinMode(5, OUTPUT); //pin selected to control
pinMode(6, OUTPUT); //pin selected to control
pinMode(7, OUTPUT); //pin selected to control
//start Ethernet
Ethernet.begin(mac, ip, gateway, gateway, subnet);
server.begin();
//enable serial data print
Serial.begin(9600);
Serial.println("server LED test 1.0"); // so I can keep track of what is loaded
}
void loop(){
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Arduino GET test page</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>Zoomkat's simple Arduino button</H1>");
// DIY buttons
client.println("<a href=\"/?on1\"\">ON</a>");
client.println("<a href=\"/?off1\"\">OFF</a>
");
// mousedown buttons
client.println("
<input type=\"button\" value=\"ON\" onmousedown=\"location.href ('/?on2');\"/>");
client.println("<input type=\"button\" value=\"OFF\" onmousedown=\"location.href ('/?off2');\"/>");
// mousedown radio buttons
client.println("
<input type=\"radio\" value=\"ON\" onmousedown=\"location.href ('/?on3');\"\">ON</>");
client.println("<input type=\"radio\" value=\"OFF\" onmousedown=\"location.href ('/?off3');\"\">OFF</>");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
///////////////////// control arduino pin
if(readString.indexOf("on1") >0) {
digitalWrite(5, HIGH);
Serial.println("Led on1");
}
if(readString.indexOf("off1") >0) {
digitalWrite(5, LOW);
Serial.println("Led off1");
}
if(readString.indexOf("on2") >0) {
digitalWrite(6, HIGH);
Serial.println("Led on2");
}
if(readString.indexOf("off2") >0) {
digitalWrite(6, LOW);
Serial.println("Led off2");
}
if(readString.indexOf("on3") >0) {
digitalWrite(7, HIGH);
Serial.println("Led on3");
}
if(readString.indexOf("off3") >0) {
digitalWrite(7, LOW);
Serial.println("Led off3");
}
}
//clearing string for next read
readString="";
}
}
}
}