Bonjour,
Je suis actuellement entrain de faire une Station Météo avec un capteur de Pression, d'Humidité et de Température, ainsi qu'un Site Web. Avec le code-ci dessous j'arrive a afficher mes données sur une page html créer par le programme mais j'aimerais qu'il affiche les valeurs sur une page html déjà existante qui est sur ma carte SD (index.htm). J'ai essayé d'utiliser Webduino en regardant les différents exemples mais aillant des lacunes en programmation je n'arrive pas a adapté mon code. Pouvez-vous m'éclairer sur l'adaptation de celui-ci ?
Merci,
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <WeatherShield1.h>
#include <SD.h>#define BUFSIZ 48
#define DS1621_ID 0x90 >> 1//ADRESSE LOCAL MAC ET IP
byte ip[] = { 192,168,1,15 };
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x1F, 0xED };
#define RXBUFFERLENGTH 4
WeatherShield1 weatherShield;//SD Carte
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
#define error(s) error_P(PSTR(s))/* Capteur /
class WeatherData {
private:
float fTemperature;
unsigned short shTemperature;
float fPressure;
unsigned short shPressure;
float fHumidity;
unsigned short shHumidity;
public:
WeatherData() { bReady = false; }
// Méthode
float getAvgTemperature() { return fTemperature; }
float getInstTemperature() { return ((float)shTemperature/16); }
float getAvgPressure() { return fPressure; }
float getInstPressure() {
float value ;
value = (((float)shPressure/1024)+0.095)/0.009;
return value;
}
float getAvgHumidity() { return fHumidity; }
float getInstHumidity() {
float value;
value = (((float)shHumidity/1024)-0.1515)/0.00636;
// humidité avec la temperature
value = value/(1.0546-0.00216getInstTemperature());
return value;
}
// Méthode
void setAvgTemperature(float Temperature) { fTemperature=Temperature; }
void setInstTemperature(unsigned short Temperature) { shTemperature=Temperature; }
void setAvgPressure(float Pressure) { fPressure=Pressure; }
void setInstPressure(unsigned short Pressure) { shPressure=Pressure; }
void setAvgHumidity(float Humidity) { fHumidity=Humidity; }
void setInstHumidity(unsigned short Humidity) { shHumidity=Humidity; }
public:
boolean bReady;
};
// serveur
EthernetServer server(80);
char rootFileName[] = "index.htm";
String readString;
float temp;
WeatherData weatherData;
boolean currentLineIsBlank = true;
void setup() {Ethernet.begin(mac, ip);
server.begin();
}void loop() {
EthernetClient client = server.available();
if (client) {// client.print("\n");
// client.print(");readString="";
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c);
if (c == '\n') {
break; }
}
}
if(readValues(weatherShield))
client.print("Temperature:(Celsius)\n");
client.print(weatherData.getInstTemperature());
client.print("\nPression: (hPa)\n");
client.print(weatherData.getInstPressure());
client.print("\nHumidite: (%)\n");
client.print(weatherData.getInstHumidity());
client.print("\n");
client.print("");delay(1);
// fermer connection
client.stop();
}
}boolean readValues(WeatherShield1 &weatherShield) {
unsigned char ucBuffer[RXBUFFERLENGTH];
/* connection /
if (weatherShield.sendCommand(CMD_ECHO_PAR, 100, ucBuffer)) {
/ temperature /
if (weatherShield.sendCommand(CMD_GETTEMP_C_AVG, 0, ucBuffer))
weatherData.setAvgTemperature(weatherShield.decodeFloatValue(ucBuffer));
if (weatherShield.sendCommand(CMD_GETTEMP_C_RAW, PAR_GET_LAST_SAMPLE, ucBuffer))
weatherData.setInstTemperature(weatherShield.decodeShortValue(ucBuffer));
/ pression /
if (weatherShield.sendCommand(CMD_GETPRESS_AVG, 0, ucBuffer))
weatherData.setAvgPressure(weatherShield.decodeFloatValue(ucBuffer));
if (weatherShield.sendCommand(CMD_GETPRESS_RAW, PAR_GET_LAST_SAMPLE, ucBuffer))
weatherData.setInstPressure(weatherShield.decodeShortValue(ucBuffer));
/ humidité */
if (weatherShield.sendCommand(CMD_GETHUM_AVG, 0, ucBuffer))
weatherData.setAvgHumidity(weatherShield.decodeFloatValue(ucBuffer));
if (weatherShield.sendCommand(CMD_GETHUM_RAW, PAR_GET_LAST_SAMPLE, ucBuffer))
weatherData.setInstHumidity(weatherShield.decodeShortValue(ucBuffer));
return true;
}
return false;
}