#define wifi_ssid « NUMERICABLE-A9BE » #define wifi_password « ********** »
#define mqtt_server « test.mosquitto.org »
long lastMsg = 0;
float DS18B20_temperature;
WiFiClient espClient; PubSubClient client(espClient);
OneWire ds(2);
void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883);
}
/* ————— loop ———————————– */ void loop() { long now = millis(); if (now – lastMsg > 1000 * 10) {
lastMsg = now;
if (WiFi.status() != WL_CONNECTED) {setup_wifi();} if (!client.connected()) {reconnect();}
client.loop();
char message_temperature[10] = « »; DS18B20_temperature = getTemperatureDS18b20(); dtostrf(DS18B20_temperature, 3, 2, message_temperature); if (client.publish(« victor », message_temperature, true)){ Serial.println(« message publie »); } else { Serial.println(« Message non publie »); } Serial.println(message_temperature); }
}
/* ————— Connexion au réseau WIFI ———————————– */ void setup_wifi() { delay(10); Serial.println(); Serial.print(« Connection a « );
Serial.print(wifi_ssid);
WiFi.begin(wifi_ssid, wifi_password);
while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print( » . »);
}
Serial.println(« »); Serial.println(« WiFi connecte, « ); Serial.print(« adresse IP : « ); Serial.println(WiFi.localIP());
}
/* ————— Connexion au serveur MQTT ———————————– */ void reconnect() { while (!client.connected()) { Serial.print(« Connexion au serveur MQTT… »); if (client.connect(« ESP8266Client »)) { Serial.println(« OK »); } else { Serial.println(« KO, erreur : « ); Serial.print(client.state()); if (client.state() == -2) { if (WiFi.status() != WL_CONNECTED) {setup_wifi();} } Serial.println(« On attend 5 secondes avant de recommencer »); delay(5000); } }
}
/* ————— Acquisition de la température ———————————– */ float getTemperatureDS18b20() { byte i; byte data[12]; byte addr[8];
float temp = 0.0;
ds.search(addr);
// Cette fonction sert à surveiller si la transmission s’est bien passée if (OneWire::crc8( addr, 7) != addr[7]) { Serial.println(« CRC is not valid! »); return false;
}
// Demander au capteur de mesure et mémoriser la température ds.reset(); ds.select(addr);
ds.write(0x44);
delay(800);
// Demander au capteur de nous envoyer la température mémorisé ds.reset(); ds.select(addr);
ds.write(0xBE);
// Le MOT reçu du capteur fait 9 octets, on les charge donc un par un dans le tableau data[] for ( i = 0; i < 9; i++) { data[i] = ds.read();
}
// Puis on converti la température (*0.0625 car la température est stockée sur 12 bits)
temp = ( (data[1]