oui il est vrai que j'avais mis qu'une partie du code pour que ce soit plus lisible désoler je pensé que cela aurait suffit.....ci dessous le code complet qui tourne sur un esp32:
//#include "WiFi.h"
#include <WiFi.h>
#include <Preferences.h>
#include <AM2320.h>
#include <Arduino.h>
WiFiClient client;
Preferences preferences;
AM2320 th(&Wire);
#define ADC_PIN 34
#define uS_TO_S_FACTOR 1000000
bool modeparametrage=0;
const int boutonparametrage=15;
String msg = " ";
int vref = 1100;
int compteurwifi=0;
float temptemp=0;
String wifitemp="";
String mdptemp="";
double temppause=10000000 ;
float showVoltage(){
uint16_t v = analogRead(ADC_PIN);
float battery_voltage = ((float)v / 4095.0) * 2.0 * 3.3 * (vref / 1000.0);
return battery_voltage;
}
void setup(void) {
Wire.begin();
Serial.begin(115200);
pinMode(boutonparametrage, INPUT_PULLUP);
preferences.begin("myfile", false);
String wifitemp = preferences.getString("nomwifi","non trouvé");
String mdptemp=preferences.getString("mdpwifi","non trouvé");
temppause=preferences.getULong("temppause",1);
Serial.println("Temp de pause="+String(temppause*uS_TO_S_FACTOR)+"µs");
preferences.end();
#define WIFI_SSID wifitemp.c_str()
#define WIFI_PASSWORD mdptemp.c_str()
Serial.print("SSID=");
Serial.println(WIFI_SSID);
Serial.print("PSW=");
Serial.println(WIFI_PASSWORD);
if (digitalRead(boutonparametrage) == LOW) {
// mise en mode parametrage jusqu'au prochain démarrage
modeparametrage=1;
Serial.println("Mode parametrage");
} else {
//connection au wifi
WiFi.setHostname("Capteur temperature 1");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
++compteurwifi;
Serial.print(".");
if (compteurwifi>30){
break;
}
delay(200);
}
Serial.println(".");
if(WiFi.status() == WL_CONNECTED){ //Si on est connecté on imprime les info tcp
Serial.println("Connecté au WIFI: "+String(WIFI_SSID));
Serial.println("Mode parametrage= "+String(modeparametrage));
Serial.print("mon ip=");
Serial.println(WiFi.localIP());
Serial.println("mon nom machine="+String(WiFi.getHostname()));
Serial.println("Adresse MAC= "+WiFi.macAddress());
}
}
}
void loop() {
temptemp=showVoltage();
if (modeparametrage==0) { //si on est en mode parametrage on ne fait pas de lecture de température
switch(th.Read()) {
case 2:
//tft.println(" CRC failed");
break;
case 1:
//tft.println(" Sensor offline");
break;
case 0:
//chargement des info du serveur a contacter
preferences.begin("myfile", false);
byte toto1=preferences.getUChar("IP1",192);
byte toto2=preferences.getUChar("IP2",168);
byte toto3=preferences.getUChar("IP3",0);
byte toto4=preferences.getUChar("IP4",0);
int port=preferences.getUInt("port",0);
IPAddress ipaddr(toto1, toto2, toto3, toto4);
preferences.end();
Serial.print("Adresse et Port du serveur=");
Serial.print(ipaddr);
Serial.println("/"+String(port));
compteurwifi=0;
while (! client.connect(ipaddr, port)){
Serial.println("Tentative de connection au Serveur n°"+ String(compteurwifi++ +1) +"=>fail");
if (compteurwifi==3){
break;
}
}
//on verifie si on est connecté ou pas
if (compteurwifi==3){
compteurwifi=0;
Serial.println("pas de connection au Serveur");
}
else{ //si on est connecté on envoie au serveur
Serial.println("connecté au Serveur");
Serial.println("Transfert de => Adresse Mac="+WiFi.macAddress()+" Temperature="+(th.cTemp+0.4)+"°C Humidité="+th.Humidity+"% Tension="+String(temptemp)+"V\r");
client.print(WiFi.macAddress()+"@@@"+(th.cTemp+0.4)+"@@@"+th.Humidity+"@@@"+String(temptemp)+"\r");
while(client.available()){ //le port série
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println(F("Connexion fermee"));
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
client.flush();
client.stop();
delay(100);
}
Serial.println("mise en sommeil");
esp_sleep_enable_timer_wakeup(temppause*uS_TO_S_FACTOR);
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
esp_deep_sleep_start();
break;
}
} ////fin du mode parametrage
if (Serial.available() )
{
msg = Serial.readString(); //Stocke le message sous forme de String dans msg
int longueur=msg.length(); //On calcul la longueur
msg=msg.substring(0,longueur-2);
//Serial.println(msg); //Puis votre message
////enregistre le SSID
if (msg.indexOf("@wifi")>0){
preferences.begin("myfile", false);
preferences.putString("nomwifi",msg.substring(6));//
preferences.end();
Serial.print(msg.substring(6));
Serial.println("=>OK");
}
///demande du SSID
if (msg.indexOf("@?wifi")>0){
preferences.begin("myfile", false);
Serial.println(preferences.getString("nomwifi","non trouvé"));
preferences.end();
}
//Mots de passe du wifi
if (msg.indexOf("@mdp")>0){
preferences.begin("myfile", false);
preferences.putString("mdpwifi",msg.substring(5));//
preferences.end();
Serial.print(msg.substring(5));
Serial.println("=>OK");
}
if (msg.indexOf("@?mdp")>0){
preferences.begin("myfile", false);
Serial.println(preferences.getString("mdpwifi","non trouvé"));
preferences.end();
}
//temp de pause du µc entre deux envoie de données
if (msg.indexOf("@temppause")>0){
String tempmsg=msg.substring(11);
preferences.begin("myfile", false);
preferences.putULong("temppause",atol(tempmsg.c_str()));//
preferences.end();
temppause=atol(tempmsg.c_str())*1000000;
Serial.println("=>OK");
}
if (msg.indexOf("@?temppause")>0){
preferences.begin("myfile", false);
Serial.println(preferences.getULong("temppause",0));
preferences.end();
}
//reponse a l'intérogation de l'adresse du mac du capteur
if (msg.indexOf("@?mac")>0){
Serial.println(WiFi.macAddress());
}
//Enregistrement de l'adresse du serveur
if (msg.indexOf("@serveur")>0){
String tempip=msg.substring(9);
preferences.begin("myfile", false);
String test=tempip.substring(0,3);
int tretre=test.toInt();
preferences.putUChar("IP1",tretre);
test=tempip.substring(3,6);
tretre=test.toInt();
preferences.putUChar("IP2",tretre);
test=tempip.substring(6,9);
tretre=test.toInt();
preferences.putUChar("IP3",tretre);
test=tempip.substring(9,12);
tretre=test.toInt();
preferences.putUChar("IP4",tretre);
preferences.end();
Serial.print(tempip);
Serial.println("=>OK");
}
//reponse a l'intérogation de l'adresse du serveur
if (msg.indexOf("@?serveur")>0){
preferences.begin("myfile", false);
Serial.print(preferences.getUChar("IP1",192));
Serial.print(".");
Serial.print(preferences.getUChar("IP2",168));
Serial.print(".");
Serial.print(preferences.getUChar("IP3",0));
Serial.print(".");
Serial.print(preferences.getUChar("IP4",0));
preferences.end();
}
if (msg.indexOf("@port")>0){
String tempmsg=msg.substring(6);
preferences.begin("myfile", false);
preferences.putUInt("port",tempmsg.toInt());//
preferences.end();
Serial.print(tempmsg.toInt());
Serial.println("=OK");
}
if (msg.indexOf("@?port")>0){
preferences.begin("myfile", false);
Serial.println(preferences.getUInt("port",0));
preferences.end();
}
if (msg.indexOf("@start")>0){
modeparametrage=0;
}
}
}