Salut, j’ai reussi a faire une actualisation, mais maintenant que j’ai ajouté du ode pour un “chauffage”, j’ai un petit probleme : L’arduino se connecte au réseau … ok ensuite il telecharge la page …ok mais il me met quand meme que la connexion a échoué. Voici le code:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x00, 0xAB, 0xCB, 0xCD, 0xDE, 0x03 };
IPAddress ip(192, 168, 1, 100);
IPAddress server(xx, xx, xx, xx);
//IPAddress ip(192,168,23,71);
//IPAddress dnsserver(192,168,23,2);
//IPAddress gateway(192,168,23,250);
//IPAddress subnet(255,255,255,0);
EthernetClient client;
String str;
int i = 0 ;
char c;
int PinLed = 13;
int etatLed;
int commandeh;
int commandeb;
int commande;
#include <OneWire.h>
#define DS18B20 0x28 // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire
OneWire ds(BROCHE_ONEWIRE); // Création de l'objet OneWire ds
// 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 erreur
if (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 scratchpad
for (byte i = 0; i < 9; i++) // On lit le scratchpad
data[i] = 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;
}
void connect() {
if (client.connect(server, 80)) {
Serial.print("Telechargement de la page ... ");
client.println("GET /info.php HTTP/1.1");
client.println("HOST: xx.xx.xx");
client.println();
Serial.println("ok");
}
else {// if you didn't get a connection to the server:
Serial.println("Connexion echoue");
}
}
void setup() {
pinMode(PinLed, OUTPUT);
Serial.begin(9600);
Serial.print("Connexion au reseau ... ");
delay(1000);// give the Ethernet shield a second to initialize:
Ethernet.begin(mac, ip);
//Ethernet.begin(mac, ip, dnsserver, gateway, subnet);
Serial.println("ok");
delay(1000);
}
void loop() {
connect();
for (i = 0; i < 350; i++) {
if (client.available()) {
c = client.read();
str += c;
}
}
if ((str.indexOf("arrosage=0")) >= 0) {
Serial.println(F("L'arrosage est eteint"));
}
if ((str.indexOf("arrosage=1")) >= 0) {
Serial.println(F("L'arrosage est allume"));
}
if ((str.indexOf("alarme=0")) >= 0) {
Serial.println(F("L'alarme est eteinte"));
}
if ((str.indexOf("alarme=1")) >= 0) {
Serial.println(F("L'alarme est allumee"));
}
if ((str.indexOf("chauffage=0")) >= 0) {
Serial.println(F("Le chauffage est eteint"));
commande = 0;
}
if ((str.indexOf("chauffage=7")) >= 0) {
Serial.println(F("Le chauffage est en mode Hors-Gel"));
commande = 7;
}
if ((str.indexOf("chauffage=16")) >= 0) {
Serial.println(F("Le chauffage est regle pour 16°C"));
commande = 16;
}
if ((str.indexOf("chauffage=17")) >= 0) {
Serial.println(F("Le chauffage est regle pour 17°C"));
commande = 17;
}
if ((str.indexOf("chauffage=18")) >= 0) {
Serial.println(F("Le chauffage est regle pour 18°C"));
commande = 18;
}
if ((str.indexOf("chauffage=19")) >= 0) {
Serial.println(F("Le chauffage est regle pour 19°C"));
commande = 19;
}
if ((str.indexOf("chauffage=20")) >= 0) {
Serial.println(F("Le chauffage est regle pour 20°C"));
commande = 20;
}
if ((str.indexOf("chauffage=21")) >= 0) {
Serial.println(F("Le chauffage est regle pour 21°C"));
commande = 21;
}
if ((str.indexOf("chauffage=22")) >= 0) {
Serial.println(F("Le chauffage est regle pour 22°C"));
commande = 22;
}
if ((str.indexOf("chauffage=23")) >= 0) {
Serial.println(F("Le chauffage est regle pour 23°C"));
commande = 23;
}
if ((str.indexOf("chauffage=24")) >= 0) {
Serial.println(F("Le chauffage est regle pour 24°C"));
commande = 24;
}
if ((str.indexOf("chauffage=25")) >= 0) {
Serial.println(F("Le chauffage est regle pour 25°C"));
commande = 25;
}
if ((str.indexOf("chauffage=26")) >= 0) {
Serial.println(F("Le chauffage est regle pour 26°C"));
commande = 26;
}
float temp;
commandeh = commande + 1;
commandeb = commande - 1;
// Lit la température ambiante à ~1Hz
if (temp < commandeb)
{
etatLed = HIGH;
}
if (temp > commandeh)
{
etatLed = LOW;
}
digitalWrite(PinLed, etatLed);
if (etatLed == LOW)
{
delay(4000);
}
else {}
if (!client.connected()) {
// vide la chaîne et le tampon de réception en prévision de la prochain requête
str = "";
client.flush();// met fin à la connexion
Serial.println(commandeb);
Serial.println(commandeh);
Serial.println("Deconnexion.");
Serial.println();
client.stop();
delay(3000);
}
}
Et voici ce qui se trouve dans le serial :
Connexion au reseau ... ok
Telechargement de la page ... ok
Connexion echoue
Connexion echoue
L'arrosage est allume
L'alarme est allumee
Le chauffage est regle pour 22°C
21
23
Deconnexion.
En gros, le programme me dit que la connexion n’est pas bonne alors qu’elle est bonne mais continue de tourner.
Merci