Bonsoir,
J'ai retourné un bon bout d'Internet et de ce forum mais impossible de trouver la solution. J'ai une sonde 1Wire et je souhaite l'injecter dans une base de donnée toute les heures. Pour l'instant l'envoi de la requete est dans le setup une fois que ca fonctionnera je le mettrais dans le loop pour que ca boucle. J'ai testé plein de config mais impossible d'envoyer la requete. Actuellement je fais un get avec la temperature inscrite directement en paramètre pour débugger mais rien n'y fais. J'ai l'impression que la requête est mal formée et que ca "ne part pas". Au niveau du get j'ai essayer avec un / devant le http comme dans certains ex ca ne passe pas, j'ai essayer avec juste le fond de l'url dans l'hôte c'est pareil... Si vous avez une idée..
Merci.
// ***** INCLUSION DES LIBRAIRIES NECESSAIRES *****
#include <OneWire.h>
#include <SPI.h>
#include <WiFly.h>
#include "Credentials.h"// ***** DEFINITIONS DES VARIABLES *****
#define DS18B20 0x28 // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 8 // Broche utilisée pour le bus 1-WireOneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds
byte server[] = { 66, 249, 89, 104 }; // Google
//////////////////////////////Client client(server, 80);
// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d'erreur
boolean getTemperature(float *temp){
byte data[9], addr[8];
// data : Données lues depuis le scratchpad
// addr : adresse du module 1-Wire détectéif (!ds.search(addr)) { // Recherche un module 1-Wire
ds.reset_search(); // Réinitialise la recherche de module
return false; // Retourne une erreur
}if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue
return false; // Si le message est corrompu on retourne une erreurif (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20
return false; // Si ce n'est pas le cas on retourne une erreur
ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20
ds.write(0x44, 1); // On lance une prise de mesure de température
delay(800); // Et on attend la fin de la mesure
ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20
ds.write(0xBE); // On envoie une demande de lecture du scratchpadfor (byte i = 0; i < 9; i++) // On lit le scratchpad
data = ds.read(); // Et on stock les octets reçus
- // Calcul de la température en degré Celsius*
_ *temp = ((data[1] << 8) | data[0]) * 0.0625;_- // Pas d'erreur*
- return true;*
}
WiFlyClient client;
void setup() {Serial.begin(9600);
WiFly.setUart(&Serial);
WiFly.begin();
float temp;
if (!WiFly.join(ssid, passphrase)) {*
Serial.println("Association failed.");*
while (1) {*
// Hang on failure.*
}*
} *
Serial.println("connecting...");*
if (client.connect("192.168.100.2", 80)) {*
Serial.println("connected");*
if(getTemperature(&temp)) {*
client.print("GET http://192.168.100.2/InjectTempBD.php?Temperature=25"); *
client.println(" HTTP/1.1\r\n");*
client.println("Host: http://192.168.100.2");*
client.println("Content-Type: application/x-www-form-urlencoded");*
client.println("Connection: close");*
// client.print("Temperature=");*
// client.print(temp); *
}*
} else {*
Serial.println("connection failed");*
}*
}
void loop() {
if (client.available()) {*
float temp;*
char c = client.read();*
Serial.print(c);*
delay(10000);*
}*
if (!client.connected()) {*
Serial.println();*
Serial.println("disconnecting.");*
client.stop();*
for(;;)*
;*
}*
}
[/quote]