1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
#include <SPI.h> // librairie pour Ethernet et ecran LCD
#include <Ethernet.h> // librairie Ethernet
#include <SD.h> // librairie lecteur carte SD
#include <SFE_BMP180.h>
#include <RCSwitch.h>
#include <Wire.h>
RCSwitch mySwitch = RCSwitch();
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
float temporaryValue;
double t,h,T1 = 0;
bool first;
unsigned long previousMillis=0 ;
unsigned long interval = 30000;
long value = mySwitch.getReceivedValue();
IPAddress ip(192,168,1,77);
EthernetServer server(80);
void setup()
{
Serial.begin(9600); // ouverture de la communication série
// activation du serveur
Ethernet.begin(mac, ip);
server.begin();
SD.begin(4);
}
void loop() {
////////// démarrage du serveur Web ////////////////
EthernetClient client = server.available();
if (client)
{
String buffer = "";
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
buffer +=c;
static String requeteHTML;
int GetPosition = buffer.indexOf("GET /");// position de la chaine "GET /" dans la requête
int HTTPPosition = buffer.indexOf(" HTTP");// position de la chaine " HTTP" dans la requête
requeteHTML = buffer.substring(GetPosition+5, HTTPPosition); // récupère la valeurs en chaîne de caractère.
if (c == '\n' && currentLineIsBlank) {
Serial.println ();
Serial.print(F("La requete est "));
Serial.print (requeteHTML);
Serial.println ();
// traitement de la requête et envoie des images et fichier stocker sur la carte microsd
if (requeteHTML != "")
{
// debut
static char namefile[20];
requeteHTML.toCharArray(namefile, 20); // conversion en char pour afficher dans la fonction SD.open
File webFile;
webFile = SD.open(namefile);
if (webFile)
{
while(webFile.available())
{
client.write(webFile.read()); // send web page to client
}
//webFile.close();
}
}
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
//Serial.println("client disconnected");
}
////////// extinction du serveur Web ////////////////
if( millis() - previousMillis >= interval)
{
previousMillis = millis();
server.available().stop();
////////// lecture donnée température du capteur BMP180 ////////////////
char status;
SFE_BMP180 pressure;
pressure.begin();
status = pressure.startTemperature();
if (status != 0)
{
status = pressure.getTemperature(T1);
}
////////// lecture donnée du module radio 433ghZ////////////////
mySwitch.enableReceive();
temporaryValue = mySwitch.getReceivedValue();
if(temporaryValue >= -300 && temporaryValue < 700)
{
t = temporaryValue /10;
}
////////// Ouverture du fichier de données, écriture de la donnée température, fermeture du fichier de données ////////////////
File webFile;
webFile = SD.open("DATA.CSV", FILE_WRITE);
if (webFile)
{
Serial.println(F(" le fichier DATA ouvert"));
}
Serial.println(T1);
webFile.print(T1);
webFile.println(F(";"));
webFile.flush();
first = false;
webFile.close();
} // fin de la fonction if( millis)
} |
Partager