J'ai fait ça rapidement au boulot, pour expliquer la gestion de timer et de flag de dépassement pour ne pas envoyer une alerte à tous les cycles, mais uniquement quant il ya dépassement du seuil.
Pour la gestion Eternet, tu trouveras de nombreux exemples et tutoriel expliquant comment se connecter à un socket serveur.
// Définir la constante 10 sec
#define TPS_ATTENTE 10000
// Définir le seuil de température à 25°
#define SEUIL_TEMP 25
// Définir la sortie qui déclenchera l'allumage d'une led
#define PIN_LED 13
// déclarer les variables de gestion de temps
long previousMillis = 0;
unsigned long currentMillis = 0;
float temperature;
bool seuil_depasse;
void setup()
{
// Démarrage du timer
currentMillis = millis();
previousMillis = currentMillis;
// Placer le flag de détection de dépassement de seuil à faux
seuil_depasse = false;
// Définir la PIN de sortie
pinMode(PIN_LED, OUTPUT);
}
void loop()
{
// Vérification de la temporisation
currentMillis = millis();
if(currentMillis - previousMillis > TPS_ATTENTE)
{
Serial.println("Releve de temperature");
// Code pour récupérer la valeur de température et la stocker en degrés dans la variable : temperature
if(seuil_depasse && temperature < SEUIL_TEMP)
{
// Etteindre la LED
digitalWrite(PIN_LED, LOW);
// Remettre le flag de seuil dépassé à faux
seuil_depasse = false;
}
else if( !seuil_depasse && temperature >= SEUIL_TEMP)
{
// Allumer la LED
digitalWrite(PIN_LED, HIGH);
// mettre le flag de seuil dépassé à vrai
seuil_depasse = true;
// Mettre ici le code de connexion à un socket pour envoyer une trame d'alerte
// Afin que le serveur recevant cette trame, s'occupe d'envoyer un mail ou un SMS
}
}
}