My Domotic Home

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

20121112_175230.jpg

20121112_175240.jpg

20121112_175513.jpg

Looks cool, I tried something like this, used basic html programing, looks like you can do a lot more cooler stuff with php and java. :slight_smile:

Cool piece of work Samuel!

I am a deep green newbie :grin: and would like some guidance on the project I am trying to build...just like yours but stopping at controlling relays via an Ethernet attached arduino. Is there anyway I can ask you some questions on a private mail address?

Thanks for helpin!
Aldo

Sure mate, sales@reanimate.com.au

hi samuel tell me is ur this web is accessable from any network means can i control my devices over the world not remaining on the same network as of the arduino system ??