Multiprise over ethernet

 

Hello,

 

Je vous partage une petite idée que j’ai réalisé il y a près de 2 ans maintenant mais que je n’ai pas eu l’occasion de la partager, alors la voilà enfin… J’ai réinventé la multiprise en la rendant commandable depuis internet. Tout en « conservant’ l’aspect d’une simple multiprise c’est à dire avec un fil électrique a brancher sur la prise murale.

Et voilà ce que ça donne:

 

Bon c’est vrai que c’est un peu gros et un peu moche mais c’est une bidouille d’un week end…Soyez indulgent :)

Et à l’oeuvre:


 

Bon ça a l’air de rien comme ça mais l’intérêt c’est que où que vous branchiez votre multiprise cela vous permettra de commander les appareils branchés dessus!!!!
Comme depuis votre smartphone favoris ou bien un server qui automatiserait le pilotage de tout ça. Imaginez tout ce qui n’était pas commandable le deviens grâce à la multiprise Nicolas..euh la multiprise over ethernet.

Pour réaliser ça c’est assez simple, il vous faut:

-2 modules courant porteur que vous ne craignez pas d’exploser (moi j’avais une dizaine de DHP 200 de chez DLink en spare qui est qq chose de vieux maintenant donc ça marchera facilement avec n’importe quel CPL)

-un arduino

-un ethernet shield

-un transfo pour alimenter un arduino

-des relais 220V/10A (ou moins d’ampérage après à vous de voir ce que vous branché dessus) j’avais trouvé des plaques toutes faites sur ebay avec les transistors et les borniers qui vont bien car je suis un peu mou du cul ;)

-un boitier prise mural. Moi j’ai pris un bloc 3 prises après à vous de voir combien de relais vous voulez câbler

 

et pour finir qq dominos, des wagos, du câble 220 et un peu d’huile de coude…

 

Si j’oubliais, très important!!!!!! Il faut une boîte en bois que l’on trouve facilement chez les cavistes! Attention je ne vous pousse pas à consommer ;)

 

La « petite » boîte Nicolas est du plus bel effet… On est DIY ou on ne l’est pas :)

 

Donc voici le principe de fonctionnement:

 

Voici quelques photos du projet:

 

 

 

Pour le code source

(!! Attention je ne sais plus si c’est la dernière version débugguée donc à tester!!!)

Le code est basé sur webduino http://code.google.com/p/webduino/

 

#include « Ethernet.h »

#include « WebServer.h »

 

 

template<class T>

inline Print &operator <<(Print &obj, T arg)

{ obj.print(arg); return obj; }

 

 

// CHANGE THIS TO YOUR OWN UNIQUE VALUE

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

 

// CHANGE THIS TO MATCH YOUR HOST NETWORK

static uint8_t ip[] = { 192, 168, 2, 123 };

byte gateway[] = { 192, 168, 2, 123 };

byte subnet[] = { 255, 255, 255, 0 };

 

#define PREFIX «  »

 

WebServer webserver(PREFIX, 80);

 

void outputPins(WebServer &server, WebServer::ConnectionType type, bool addControls = false)

{

P(htmlHead) =

« <html> »

« <head> »

« <title>Ma multiprise web</title> »

« <style type= »text/css »> »

« BODY { font-family: sans-serif } »

« H1 { font-size: 14pt; text-decoration: underline } »

« P  { font-size: 10pt; } »

« </style> »

« </head> »

« <body> »;

 

int i;

server.httpSuccess();

server.printP(htmlHead);

 

if (addControls)

server << « <form action=' » PREFIX « /’ method=’post’> »;

 

server << « <h1>Ma multiprise web</h1><p> »;

 

 

int val = analogRead(0);

 

//prise 1

if (val >150)

{

val =1;

}else

{

val=0;

}

server << « Prise n°1 : « ;

server.radioButton(« d4″, « 1 », « On », val);

server <<  » « ;

server.radioButton(« d4″, « 0 », « Off », !val);

server << « <br/> »;

 

//prise 2

int val2 = analogRead(1);

if (val2>150)

{

val2 =1;

}else

{

val2=0;

}

server << « Prise n°2 : « ;

server.radioButton(« d2″, « 1 », « On », val2);

server <<  » « ;

server.radioButton(« d2″, « 0 », « Off », !val2);

server << « <br/> »;

 

//prise 3

int val3 = analogRead(2);

if (val3>150)

{

val3 =1;

}else

{

val3=0;

}

server << « Prise n°3 : « ;

server.radioButton(« d7″, « 1 », « On », val3);

server <<  » « ;

server.radioButton(« d7″, « 0 », « Off », !val3);

server << « <br/> »;

server << « <br/> »;

 

 

if (addControls)

server << « <input type=’submit’ value=’Submit’/></form> »;

 

server << « </body></html> »;

}

 

void formCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)

{

if (type == WebServer::POST)

{

bool repeat;

char name[16], value[16];

do

{

repeat = server.readPOSTparam(name, 16, value, 16);

if (name[0] == ‘d’)

{

int pin = strtoul(name + 1, NULL, 10);

int val = strtoul(value, NULL, 10);

digitalWrite(pin, val);

}

} while (repeat);

 

server.httpSeeOther(PREFIX « / »);

}

else

outputPins(server, type, true);

}

 

void setup()

{

// set pins 0-8 for digital input

for (int i = 0; i <= 9; ++i)

pinMode(i, INPUT);

pinMode(9, OUTPUT);

 

 

Ethernet.begin(mac, ip, gateway, subnet);

webserver.begin();

//  Serial.println(« Webserver On »);

 

webserver.setDefaultCommand(&formCmd);

}

 

void loop()

{

// process incoming connections one at a time forever

webserver.processConnection();

 

// if you wanted to do other work based on a connecton, it would go here

}

 

 

 

So enjoy !!!

One thought on “Multiprise over ethernet

  1. […] c’est vrai que c’est pas mal et en plus c’est tout petit mais ça ne vaut pas ma multiprise « Nicolas » en […]

Comments are closed.