/************************************************************************/ /* Réception des signaux d'alertes du détecteur de fumée Chacon */ /* et émission d'une requête HTTP (pour alerte SMS par exemple) */ /* Version 1.0 du 10/02/2012 */ /* www.domocreation.fr */ /* */ /* !!! Non fonctionnel en l'état !!! */ /* 1 : Entrez l'adresse mac de votre shield Ethernet */ /* 2 : Saisissez la configuration de votre réseau */ /* 3 : Saisissez l'ip du serveur qui enverra l'alerte SMS */ /* 4 : Remplacez URL_A_SAISIR par l'url de la page d'alerte SMS */ /************************************************************************/ #include #include #define DEBUG 1 // 1 : Adresse MAC du shield Ethernet byte mac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // 2 : Configuration du réseau byte ip[] = { 192, 168, 0, 1 }; byte gateway[] = { 192, 168, 0, 254 }; byte subnet[] = { 255, 255, 255, 0 }; // 3 : ip du serveur pour l'alerte SMS byte server[] = { 0, 0, 0, 0 }; EthernetClient client; volatile word pulse; volatile bool etat=LOW; void ext_int_1(void) { static word last; pulse = micros() - last; last += pulse; etat=!digitalRead(2); } int state; void setup () { Ethernet.begin(mac, ip, subnet, gateway); Serial.begin(115200); Serial.println("\n[RFX - v1]"); attachInterrupt(0,ext_int_1,CHANGE); state=-1; etat=digitalRead(2); } unsigned long bits; int decoding; boolean eP; void loop () { cli(); word p = pulse; word e = etat; pulse = 0; sei(); if(p>500) { if(decoding>0 && decoding<25) { if((e==1) && (p>700 && p<900)) { //etat haut eP=1; } else if((e==0) && (p>1250 && p<1450)) { //etat court bas if(eP==1) { bitWrite(bits,decoding-1,1); decoding++; eP=0; } } else if((e==0) && (p>2650 && p<2850)) { //etat long bas if(eP==1) { bitWrite(bits,decoding-1,0); decoding++; eP=0; } } else { decoding=0; eP=0; } if(decoding==24) { decoding=0; eP=0; Serial.print("DATA : "); Serial.println(bits,BIN); cli(); //émission de l'alerte au serveur SMS if(client.connect(server,80)){ Serial.println("connected"); // 4 : Remplacez URL_A_SAISIR par l'url de la page faisant l'émission de l'alerte SMS client.println("GET URL_A_SAISIR HTTP/1.0"); client.println("\r\n"); Serial.println("disconnecting."); client.stop(); } else { Serial.println("connection failed"); } sei(); } } else { //Preambule if(e==1 && (p>7900 && p<8300)) { state=1; } else if(e==0 && (p>900 && p<1000)) { if(state==1) { decoding=1; } else state=0; } else { state=-1; } } } else if (p!=0) { state=-1; } }