projet arduino - prise multiple+interupteur+commande http

La section Arduino de TLD; Partagez ici vos expériences et vos articles...

projet arduino - prise multiple+interupteur+commande http

Messagede fraborak » 17 Avr 2013, 17:02

salut,

je suis en train de finaliser une arduino avec shield ethernet avec des relais

commande avec des interrupteurs réels + commande via des requêtes http

pour soit :
- faire une prise multiple , le tout dans un boitier avec une raquette d'interrupteur par exemple (ou inter sur la prise)

- soit mettre l'arduino dans le tableau Ă©lectrique et guider les inter de la maison et les prise/lampe de la maison (de la domotique quoi)

avantage :
compatible tout log ou box via commande http
facile a mettre ne oeuvre
facilement exporatable sur un autre systeme
on peut en faire plusieurs dans la maison
possibilité de faire des prises/lampes commandée ou à arret auto ou à programmation horaire
possibilité de prog des inter pour tout allumer, tout eteindre ...


je m'oriente vers le deuxieme systeme,
mon arduino tourne depuis un moment avec un prog sur les inter physique
mon prog est "Ă  tester" avec les commandes http

beaucoup de choses existent sur internet mais pas aussi complet (soit que inter physique, soit que http)

je peux partager le code existant ou quand ce sera plus finalisé
si qq'un est intéressé on peut le tester chacun de notre côté pour vérifier que tout va bien

qu'en pensez vous ?
Homidom sous win7pro (+Homidroid) avec :
1wire - ds18b20
arduino en USB
arduino via commmande HTTP (presque)
current cost envir - 1 transmetteur 3 pinces
fraborak
P'tit Dieu de domotique
 
Messages: 151
Inscription: 08 Mai 2012, 15:49

Re: projet arduino - prise multiple+interupteur+commande htt

Messagede xiboard » 25 Avr 2013, 13:42

J'adhère !! :D

ça rejoint un peux ce que j'ai fait :
http://www.touteladomotique.com/forum/viewtopic.php?f=41&t=10792#p88539
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: projet arduino - prise multiple+interupteur+commande htt

Messagede norbert81 » 25 Avr 2013, 20:47

Moi aussi, je vais m'y plonger ;-)
norbert81
Membre Actif
 
Messages: 28
Inscription: 07 Juin 2012, 06:48

Re: projet arduino - prise multiple+interupteur+commande htt

Messagede fraborak » 26 Avr 2013, 16:23

content que l'idée vous plaise !
en effet, ton idée y ressemble bien, sans la zibase ;-)
a ta place je ferais le plus possible faire l'arduino pour pouvoir interagir directement dessus avec un autre appareil

bon je ne vous cache pas que je n'ai pas trop eut le temps d'avancer !
(je me sert à la même source de matériel et c'est top)
Homidom sous win7pro (+Homidroid) avec :
1wire - ds18b20
arduino en USB
arduino via commmande HTTP (presque)
current cost envir - 1 transmetteur 3 pinces
fraborak
P'tit Dieu de domotique
 
Messages: 151
Inscription: 08 Mai 2012, 15:49

Re: projet arduino - prise multiple+interupteur+commande htt

Messagede fraborak » 30 Avr 2013, 17:28

ça marche !!!!

sur mes tests sur mon bureau tout marche nickel
je vous met mon code arduino (2560 avec shield ethernet classique)
j'ai rien présenté mais si vous avez des questions n'hésitez pas
soit il marche avec des inter relié à la masse
ou avec une adresse du type 192.168.1.10/?2
ou 2 est la commande à exécuter !
bon j'ai pris des trucs à droite à gauche (merci à eux) donc ce n'est pas bien présenté

Code: Tout sélectionner

#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;

////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
  //byte ip[] = { 192, 168, 0, 199 };   //Manual setup only
  //byte gateway[] = { 192, 168, 0, 1 }; //Manual setup only
  //byte subnet[] = { 255, 255, 255, 0 }; //Manual setup only

  // if need to change the MAC address (Very Rare)
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

  EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////





//defeinition des pins
//relay
#define lumhaut1 14     // Lumiere haut
#define lumhaut2 15     // Lumiere haut
#define lumhaut3 16    // Lumiere haut
#define pcchevet 17 //Pc chevet
#define sbd 18 //Sbd
#define chlan 19 //Ch lanalou
#define chsyd 20 //Ch syd
#define salon 21 //Salon

//Inter
#define isyd 29 //Ch syd
#define iescb 31//I bas esc
#define isalon1 33 //Salon 1
#define isalon2 35 //Salon 2
#define ilan 37 //Ch lanalou
#define isbd 39 //Sdb
#define ichev1 41 //I chevet 1
#define ichev2 43 //I chevet 2
#define ichev3 45 //I chevet 3
#define iesch1 47 //I esc haut 1,2,3
#define iesch2 49
#define iesch3 51


int valinter[54];
int ancvalinter[54];
int i;
int val = 0;     // variable pour mĂ©moriser la valeur lue
int pause = 10; 
// Debug mode
#define DEBUG true

void setup() {
if (DEBUG) {
   Serial.begin(9600);
  Serial.println("initialisation");
}
 
  // les relaies en sortie
pinMode(lumhaut1, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(lumhaut2, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(lumhaut3, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(pcchevet, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(sbd, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(chlan, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(chsyd, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
pinMode(salon, OUTPUT);      // met la broche utilisĂ©e avec la LED en SORTIE
// les inter en entrée
pinMode(isyd, INPUT);
pinMode(iescb, INPUT);
pinMode(isalon1, INPUT);
pinMode(isalon2, INPUT);
pinMode(ilan , INPUT);
pinMode(isbd , INPUT);
pinMode(ichev1, INPUT);
pinMode(ichev2, INPUT);
pinMode(ichev3, INPUT);
pinMode(iesch1, INPUT);
pinMode(iesch2, INPUT);
pinMode(iesch3, INPUT);
  digitalWrite(isyd, HIGH); // met les inter en pullup
  digitalWrite(iescb, HIGH);
  digitalWrite(isalon1, HIGH);
  digitalWrite(isalon2, HIGH);
  digitalWrite(ilan, HIGH);
  digitalWrite(isbd, HIGH);
  digitalWrite(ichev1, HIGH);
  digitalWrite(ichev3, HIGH);
  digitalWrite(ichev2, HIGH);
  digitalWrite(iesch1, HIGH);
  digitalWrite(iesch2, HIGH);
  digitalWrite(iesch3, HIGH);


stock();

for (i = 14; i<=21; i++) {
  digitalWrite(i, HIGH);
  Serial.println(i);
  delay ( 1000) ;
  digitalWrite(i, LOW);
}

  Ethernet.begin(mac);
  //Ethernet.begin(mac, ip, gateway, subnet); //for manual setup
  server.begin();
if (DEBUG) {
   Serial.println(Ethernet.localIP());
}
} // fin setup

void loop() { // --------------------------------debut loop --------------------------------------------------------
     
    // listen for incoming clients, and process qequest.
  checkForClient();
 
    stock();
//si etat d'un interrupteur difféent ca lance un relay
for (i = 29; i <= 51; i=i+2) {
  if (ancvalinter[i] != valinter[i]) {

 
  if(DEBUG){
      Serial.println( i);
     }
   
  switch (i) {
case 29 :
relaiCOM (chsyd) ;
break;

case 31 :
relaiCOM (lumhaut1) ;
relaiCOM (20) ;
break ;

case 33 :
relaiCOM (salon) ;
break;

case 35 :
//relaiCOM (18) ;
break ;

case 37 :
relaiCOM (chlan) ;
break ;

case 39 :
relaiCOM (sbd) ;
break ;

case 41 :
relaiCOM (lumhaut1) ;
break ;

case 43 :
//relaiCOM (15) ;
break ;

case 45 :
relaiCOM (pcchevet) ;
break ;

case 47 :
relaiCOM (lumhaut1) ;
break ;

case 49 :
//relaiCOM (15) ;
break ;
   
case 51 :
//relaiCOM (14) ;
break ;
   
  } // fin switch

   
  } // fin if
} // fin for

} // fin void loop

void relaiON (int numpin) {
digitalWrite (numpin, HIGH) ;
  }
 
void relaiOFF (int numpin) {
digitalWrite (numpin, LOW) ;
  }
 
void relaiCOM (int numpin) {
  val = digitalRead(numpin);
if(DEBUG){
  delay(pause); 
      Serial.println(numpin);
      delay(pause); 
     }
 
  if (val== HIGH) {
    digitalWrite (numpin, LOW) ;
  } else {
    digitalWrite (numpin, HIGH) ;
  }
}

int etat (int numpin) {
  val = digitalRead(numpin);
 
  delay(pause); 
  return val ;
  }
 
void stock (){

for (i = 29; i <= 51; i=i+2) {
  ancvalinter[i]=valinter[i];
  valinter[i]= etat(i);
 
}}
 
 
  void checkForClient(){

  EthernetClient client = server.available();

  if (client) {

    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;

    while (client.connected()) {
      if (client.available()) {

        if(!sentHeader){
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }

        char c = client.read();

        if(reading && c == ' ') reading = false;
        if(c == '?') reading = true; //found the ?, begin reading the info

        if(reading){
          Serial.print(c);

           switch (c) {
            case '2':
              //add code here to trigger on 2
              relaiCOM (21) ;
              break;
            case '3':
            //add code here to trigger on 3
              relaiCOM (20) ;
              break;
            case '4':
            //add code here to trigger on 4
              triggerPin(18, client);
              break;
            case '5':
            //add code here to trigger on 5
              triggerPin(5, client);
              break;
            case '6':
            //add code here to trigger on 6
              triggerPin(6, client);
              break;
            case '7':
            //add code here to trigger on 7
              triggerPin(7, client);
              break;
            case '8':
            //add code here to trigger on 8
              triggerPin(8, client);
              break;
            case '9':
            //add code here to trigger on 9
              triggerPin(9, client);
              break;
          }

        }

        if (c == '\n' && currentLineIsBlank)  break;

        if (c == '\n') {
          currentLineIsBlank = true;
        }else if (c != '\r') {
          currentLineIsBlank = false;
        }

      }
    }

    delay(1); // give the web browser time to receive the data
    client.stop(); // close the connection:

  }

}

void triggerPin(int pin, EthernetClient client){
//blink a pin - Client needed just for HTML output purposes. 
  client.print("Turning on pin ");
  client.println(pin);
  client.print("<br>");

  relaiCOM (pin) ;
}
Homidom sous win7pro (+Homidroid) avec :
1wire - ds18b20
arduino en USB
arduino via commmande HTTP (presque)
current cost envir - 1 transmetteur 3 pinces
fraborak
P'tit Dieu de domotique
 
Messages: 151
Inscription: 08 Mai 2012, 15:49


Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique