Afficher la température sur un site et programmer l'envoi d'un sms et d'un email

Bonjour je m'appelle Simon, je souhaite avoir de l'aide pour mon projet ,
nous devons moi et mon groupe simuler un Mini Data center, l'en noncer est tel :

{

Problématique

On souhaite récupérer la quantité de chaleur pour chauffer des bureaux d'un local serveurs. On veut aussi
contrôler à distance la température ambiante et alerter par message le responsable en cas de température
maximale autorisé atteinte.

Fonctionnalités

  • L'administrateur réseau doit pouvoir être informé à distance de la température d'un local serveurs.
  • Un message d'alerte doit avertir un technicien de maintenance en cas de température limite.
  • Un système d'extraction et d'évacuation du flux de chaleur doit permettre de chauffer un local
    distant.

}

Donc on est trois on a chaqu'un une partis, moi je m'occupe d'alerter le technicien de maintenant en cas de température limite, j'aimerais que quand le capteur de température détecte la température limite imaginons x° cela envoi un sms sur le téléphone de technicien et ensuite un email.

Mais j'arrive pas à trouver de solution pour coder un envois l'envoi d'un sms quand mon capteur LM35 détecte une température supérieur a 24°C

Voila toute aide sur la programmation, idée, conseil est la bienvenue ! Merci d'avance.

Simon

Salut
Tu n'as pas beaucoup cherché !
Google donne pas mal de reponse dont celle-ci pour t'en inspirer.

:wink:
Chabot380

Merci mais ce système permet seulement de recevoir un sms sur demande moi je cherche a ce que quand le capteur de température atteint x° cela envoi un sms et (si possible) un email.. et je suis pas très fort en arduino..

un petit test http://arduino.cc/en/Reference/If

C'est en anglais et un petit test.. sa reste du arduino et j'y comprend rien..

un pour l'envoi d'un message d'alerte si la température dépasse un certain seuil.

Et si possible car je ne c'est pas si avec arduino c'est possible, de faire un envoi d'email alerte.

Maltar:
C'est en anglais et un petit test.. sa reste du arduino et j'y comprend rien..

C'est pas de l'arduino c'est du C/C++ de base et de la logique ...

Maltar:
Et si possible car je ne c'est pas si avec arduino c'est possible, de faire un envoi d'email alerte.

Par GPRS ?

Je ne comprend pas trop, si tu ne veux pas "taper" un peu dans l'Arduino, pourquoi venir quémander de l'aide ?

Les solutions toutes cuites existent rarement par rapport à un cahier des charge spécifique.
En gros on te donne des infos, tu décortiques et tu analyses.... (tu peux également poser des questions dans cette démarche) et ensuite tu composes.... et on sera là pour un coup de main, mais pas pour du tout cuit.

Et si possible car je ne c'est pas si avec arduino c'est possible, de faire un envoi d'email alerte.

avec arduino tout est possible! la seule limite c'est l'imagination! pour les alertes emails, l'ethernet shield reste quand même le mieux je pense...http://arduino.cc/en/Main/ArduinoEthernetShield

Bonjour Simon, je cherche à faire le même truc (du moins très similaire) On peut travailler en parallèle sur ce projet.

Je ne sais pas si tu à<as des équipements arduino?

J'ai un Ethenet shield monté sur un Duemilanove. L'exemple ''web temperature'' est un bon départ selon moi. Tu cliques sur le bouton et la température affiche à l'écran. Il faudrait juste ramasser les infos pour établir un seuil haut et un seuil bas pour l'envoie de email.

L'envoie de sms peux être simple selon le fournisseur, mais en gros ''ton_numeros_de_tel@ton_fournisseur'' ex: 8005559214@rogers.net envoie un email sous forme de sms sur un téléphone. Sinon il y a des serveurs qui peuvent le faire. Donc 2 email, un sur ton cell et un sur ta boîte courriel.

Peut-être commenceé avec le code du webserver et le modifier? Je vais l'afficher plus tard.

Pas de problème BTguillaume, on vas pouvoir s'entre aider, et non j'ai pas encore fait l'achat du matériel vue que je ne c'est pas encore exactement ce qu'il me faut, aussi merci à tous et non je ne cherche pas de réponse toute cuite, mais une grande aide vue que je suis pas super fort en arduino, mais je suis motiver, et sur tous obliger de le faire, mais cela m'intéresse beaucoup !

Aussi le mieux entre le capteur LM35 et le DS18B20 c'est le quelle ?

avec le enc28j60, il y a un exemple déjà fait. Reste qu'a adapter les valeurs + et - pour notification.

Pour introduire une variable quelqu'un peu me dire ou commencer. Le test serait avec l'exemple du site :

if (x > 120){
digitalWrite(LEDpin1, HIGH);
digitalWrite(LEDpin2, HIGH);
}

Si je comprend bien une valeur plus grand que 120 fera réagire la ledpin 1 et 2?

Il faut aussi mettre #define ledpin1 et 2.

EtherShield es=EtherShield();

// prepare the webpage by writing the data to the tcp send buffer
uint16_t print_webpage(uint8_t *buf);
int8_t analyse_cmd(char *str);
// get current temperature

#define TEMP_PIN  3
#define LEDpin 1
#define LEDpin 2

void getCurrentTemp( int *sign, int *whole, int *fract);

La condition sera dans le loop ou pas?

Meci

Maltar:
Pas de problème BTguillaume, on vas pouvoir s'entre aider, et non j'ai pas encore fait l'achat du matériel vue que je ne c'est pas encore exactement ce qu'il me faut, aussi merci à tous et non je ne cherche pas de réponse toute cuite, mais une grande aide vue que je suis pas super fort en arduino, mais je suis motiver, et sur tous obliger de le faire, mais cela m'intéresse beaucoup !

Aussi le mieux entre le capteur LM35 et le DS18B20 c'est le quelle ?

J'ai commencé avec un duemilanove et enc28j60.

le code affiche la température en pesant sur le bouton . Il faut un ds18b20 (1-wire) sur une entrée numérique (la 3) dans l'exemple.

Pour ma pars il faut pas que cela ce face via bouton, mais automatiquement, moi je doit seulment m'occuper de l'alerte, c'est à dire, quand il y a une température x°, un email et un sms sont envoyez ^^

Dans ce cas, tu gère une temporisation, pour prélever la température, toutes les 30 sec par exemple, et dans le cas où le seuil est dépassé, tu déclenches l'action souhaité (connexion a un socket serveur, envoi d'un signal sur une sortie du arduino, etc...)

Ah merci, tu à un tutoriel pour apprendre à faire cela ? Ou une aide ? je te remercie d'avance :slight_smile:

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
    }
  }
}

Ah merci beaucoup je vais étudier ton programme, et faire des recherches pour le "Ethernet", merci encore tonyryu !

J'ai débuté le programme voila ce que sa donne, pour le moment il marche pas, si vous avez des idées, aides ou même avis je suis ouvert à tous !

// Importation del a bibliothèque de GSM
#include <GSM.h>

// Définir le code PIN de la carte SIM
#define PINNUMBER ""

GSM gsmAccess; 
GSM_SMS sms;

int temp ;
#define TempMax 18

int MesureTemp()
{
int tempc=0;
for(int i = 0;i<10;i++)
{
samples[i] = ( Ref * analogRead(pinTemp) * 100.0) / 1024;
tempc = tempc + samples[i];
delay(200);
}
tempc = tempc/10 ;
return tempc ;
}


void setup(){
  temp = MesureTemp() ; // mesure de la temperature
if (temp > TempMax) // la temperature est superieure a 18°C 
  
  Serial.begin(9600); 
  Serial.println("SMS Messages Sender");
  
  boolean notConnected = true; // connection à l'état
   
   while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
  }
   Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNumber[20];  // numéro de téléphone pour envoyez le sms
  readSerial(remoteNumber);
  Serial.println(remoteNumber);

  // Texte du sms
  Serial.print("Seuil dépassé, fermeture trape");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}

bonjour,
sans les erreurs, un peu dur.
mais déjà, y a un truc qui cloche, non?

int MesureTemp()

int readSerial(char result[])