Hi guys,
Been a while since I posted but I thought I would throw this up. I started off last night with Marque's excellent little script to allow for android, then built a little site for iPad access. As I am in a rented house this is all done with modified GPO's and old wireless double plug housings (see pic). Anyhoo, Once I move into my own house and tear the walls out the wiring will be a bit neater, but until then...
I've thrown the site mockup online @ www.reanimate.com.au/domotic/index.html (will need to sexify this with something nice and pretty)
Finally on the scheduling page I need to figure out how to get that working with php, cron and a flatfile, record the time and relay down and then open the url when the time is now. But a lack of php is causing a few headaches.
/*********************** Marque's Arduino Controller Example ***********************/
/*********************** for questions: marque.l@gmail.com ***********************/
/*
In the android app settingsscreen you can set up you IP and port.
For this example you need to call prefix 1 "B" and prefix 2 "C".
*/
#include <Ethernet.h>
#include <HTTPClient.h>
#include <SPI.h>
int RecievedString;
int valueB;
int valueC;
String readString = String(20);
int rm2light1 = 4;
int fishlight = 2;
int fishpump = 3;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server(80); // port to listen on
EthernetClient client;
char content_main_top[] = "<body bgcolor=black><font color=white><center>";
char S1[] = "Room 2, Light 1 is on " ;
char S2[] = "Room 2, Light 1 is off" ;
char S3[] = "Fish Light is on";
char S4[] = "Fish Light is off";
char S5[] = "Fish Pump is on";
char S6[] = "Fish Pump is off";
char S404[] = "Not Found";
/************************** Setup **********************/
void setup()
{
Serial.begin(9600);
Serial.println("Getting IP......");
Ethernet.begin(mac);
Serial.print("My IP address: ");
Ethernet.localIP().printTo(Serial);
Serial.println();
Serial.print("Gateway IP address is ");
Ethernet.gatewayIP().printTo(Serial);
Serial.println();
Serial.print("DNS IP address is ");
Ethernet.dnsServerIP().printTo(Serial);
Serial.println();
pinMode(rm2light1, OUTPUT);
pinMode(fishlight, OUTPUT);
pinMode(fishpump, OUTPUT);
Serial.print("Initialising rm2light1 ");
Serial.print("Initialising fishlight ");
Serial.print("Initialising fishpump ");
Serial.println();
digitalWrite(rm2light1, LOW);
digitalWrite(fishlight, LOW);
digitalWrite(fishpump, LOW);
}
void loop()
{
checkclient();
}
void checkclient()
{
EthernetClient client = server.available();
if (client)
{
boolean sentHeader = false;
while (client.connected())
{
if (client.available())
{
if(!sentHeader){
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
sentHeader = true;
}
char c = client.read();
if (readString.length() < 20)
Serial.print(c);
{readString.concat(c);}
if (c == 'H')
{
Serial.println();
int Is = readString.indexOf("/");
int Iq = readString.indexOf("?");
int Ib = readString.indexOf("b");
int Ic = readString.indexOf("c");
if(readString.indexOf("?") > 1)
{
if (Ib == (Iq+1))
{
char carray[5];
readString.toCharArray( carray,5,(Ib+1));
Serial.println(carray);
valueB = atof(carray);
Serial.print("B is now: ");
Serial.println(valueB);
client.print (content_main_top);
client.print("B is now: ");
client.print(valueB);
}
else if (Ic == (Iq+1))
{
char carray[5];
readString.toCharArray( carray,5,(Ic+1));
Serial.println(carray);
valueC = atof(carray);
Serial.print("C is now: ");
Serial.println(valueC);
client.print (content_main_top);
client.print("C is now: ");
client.print(valueC);
}
else
{
char carray[2];
readString.toCharArray( carray,2,(Iq+1));
RecievedString = atoi(carray);
switch (RecievedString) {
case 1: action(1, client);digitalWrite(rm2light1, HIGH);break;
case 2: action(2, client);digitalWrite(rm2light1, LOW);break;
case 3: action(3, client);digitalWrite(fishlight, HIGH);break;
case 4: action(4, client);digitalWrite(fishlight, LOW);break;
case 5: action(5, client);digitalWrite(fishpump, HIGH);break;
case 6: action(6, client);digitalWrite(fishpump, LOW);break;
default: action(404, client);
}
}
delay(1);
client.stop();
readString="";
client.read(); client.read();
}
if (Iq < 0)
{
action(404, client);
delay(1);
client.stop();
readString="";
client.read(); client.read();
}
delay(1);
client.stop();
readString="";
client.read(); client.read();
}
}
}
}
}
void action(int x, EthernetClient client)
{
if (x == 1)
{client.print (content_main_top);
client.println(S1);
Serial.println(S1);
}
if (x == 2)
{client.print (content_main_top);
client.println(S2);
Serial.println(S2);
}
if (x == 3)
{client.print (content_main_top);
client.println(S3);
Serial.println(S3);
}
if (x == 4)
{client.print (content_main_top);
client.println(S4);
Serial.println(S4);
}
if (x == 5)
{client.print (content_main_top);
client.println(S5);
Serial.println(S5);
}
if (x == 6)
{client.print (content_main_top);
client.println(S6);
Serial.println(S6);
}
if (x == 404)
{client.print (content_main_top);
client.println(S404);
Serial.println(S404);
}
x=0;
}