Go Down

Topic: My Domotic Home (Read 3988 times) previous topic - next topic

SamuelFreeman

Nov 12, 2012, 11:12 am Last Edit: Nov 12, 2012, 11:55 am by SamuelFreeman Reason: 1
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.

Code: [Select]

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



wiresalot

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. :)

grechal

Cool piece of work Samuel!

I am a deep green newbie  :smiley-mr-green: 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

SamuelFreeman

Sure mate, sales@reanimate.com.au

lovearduino

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 ??

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy