# Un mystère pour moi

**URL:** <https://forum.arduino.cc/t/un-mystere-pour-moi/1336918>\
**Category:** Français\
**Created:** [December 29, 2024, 4:11pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918 "2024-12-29T16:11:24Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 4:11pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/1 "2024-12-29T16:11:24Z")

</div>

Bonjour

J'ai écrit ce sketch qui me permet de surveiller à distance la t° interne d'un chalet sur mon gsm

Particularités :

- la transmission de la mesure se fait uniquement par envoi de la lettre "V" et une seule mesure me parvient
- Le réseau étant instable, je souhaite être informé de chaque rebootage de mon système

Tout fonctionne parfaitement mais :  
Si je conditionne la mesure à la lettre "V" tout va bien, je ne reçois qu'une seule mesure  
Mais si je la remplace par d'autres lettres, les envois sont lancés sans demandes et ne s'arrêtent plus

Pourquoi?

```arduino
 #include <SoftwareSerial.h>
#include <DHT.h>
#define brocheDeBranchementDHT 4 // pine de mesre DHT22
#define typeDeDHT DHT22 // type de DHT utilisé 

// Instanciation de la librairie DHT
DHT dht(brocheDeBranchementDHT, typeDeDHT);

char inchar; // variable du caractere reçu
int N=0;

SoftwareSerial mySerial(2, 3); // 2=TX 3=RX

void setup() {
  mySerial.begin(9600); // vitesse SIM900
  Serial.begin(9600); // vitesse moniteur
  delay(100);

  // Initialisation du DHT22;
  dht.begin();

  N=N+1;
                   
}
void loop() {

//envoi vers gsm de la signalisation du reboot du systeme
if (N==1)
 {
mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000); // Delay of 1 second
 mySerial.println("AT+CMGS=\"+xxxxxxxx\"\r"); // Replace x with mobile number
 delay(1000);
 mySerial.println("REBOOT Chalet"); // The SMS text you want to send
 delay(100);
 mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
                               // delay(5000);
 }     
 N=0;
  if (mySerial.available() > 0) {

    inchar = mySerial.read();
    Serial.println(inchar);
    delay(20);
    if (inchar == 'V') {
      delay(10);

      // Lecture des données
      float tauxHumidite = dht.readHumidity(); // Lecture du taux d'humidité (en %)
      float temperatureEnCelsius = dht.readTemperature(); // Lecture de la température, exprimée en degrés Celsius

      // Vérification si données bien reçues
      if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) {
        Serial.println("Aucune valeur retournée par le DHT22. Est-il bien branché ?");
        delay(2000);
        return; // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop()
      }

      // Affichage des valeurs dans moniteur
      Serial.print("Humidité = ");
      Serial.print(tauxHumidite);
      Serial.println(" %");
      Serial.println();

      // envoi des valeurs vers GSM
     mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
      delay(1000); // Delay of 1 second
     mySerial.println("AT+CMGS=\"+xxxxxx\"\r"); // Replace x with mobile number
      delay(1000);
      mySerial.print("Temperature = ");
      mySerial.print(temperatureEnCelsius);
      mySerial.print(" *c"); // The SMS text you want to send
      mySerial.println();
      mySerial.print("Humidite = ");
      mySerial.print(tauxHumidite);
      mySerial.print(" %"); // The SMS text you want to send
      delay(100);
      mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
      mySerial.println();
      // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)
      delay(2000);
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 4:34pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/2 "2024-12-29T16:34:15Z")

</div>

> [@jo\_6466](#):
>
> Le réseau étant instable, je souhaite être informé de chaque rebootage de mon système

votre code fait cela:

> [@jo\_6466](#):
>
> ```arduino
> int N=0;
> ...
> void setup() {
> ...
> N=N+1;              
> }
> 
> void loop() {
> if (N==1) {
> ...
> }
> N = 0;
> }
> 
> ```

si votre arduino reboote, N est remis à 0 puis incrémenté à 1 dans le setup et donc dans la loop le test N == 1 sera toujours vrai

autant mettre l'envoi du SMS dans le setup directement et vous passer de N

```arduino
#include <SoftwareSerial.h>
#include <DHT.h>
#define brocheDeBranchementDHT 4 // pine de mesre DHT22
#define typeDeDHT DHT22 // type de DHT utilisé 

// Instanciation de la librairie DHT
DHT dht(brocheDeBranchementDHT, typeDeDHT);
SoftwareSerial mySerial(2, 3); // 2=TX 3=RX

void setup() {
  mySerial.begin(9600); // vitesse SIM900
  Serial.begin(9600); // vitesse moniteur
  delay(100);

  // Initialisation du DHT22;
  dht.begin();

  //envoi vers gsm de la signalisation du reboot du systeme
  mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
  delay(1000); // Delay of 1 second
  mySerial.println("AT+CMGS=\"+32123456789\"\r"); // Replace x with mobile number
  delay(1000);
  mySerial.println("REBOOT Chalet"); // The SMS text you want to send
  delay(100);
  mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module

}
void loop() {
  if (mySerial.available() > 0) {
    char inchar = mySerial.read();
    Serial.println(inchar);

    if (inchar == 'V') {
      delay(10);

      // Lecture des données
      float tauxHumidite = dht.readHumidity(); // Lecture du taux d'humidité (en %)
      float temperatureEnCelsius = dht.readTemperature(); // Lecture de la température, exprimée en degrés Celsius

      // Vérification si données bien reçues
      if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) {
        Serial.println("Aucune valeur retournée par le DHT22. Est-il bien branché ?");
        delay(2000);
        return; // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop()
      }

      // Affichage des valeurs dans moniteur
      Serial.print("Humidité = ");
      Serial.print(tauxHumidite);
      Serial.println(" %");
      Serial.println();

      // envoi des valeurs vers GSM
      mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
      delay(1000); // Delay of 1 second
      mySerial.println("AT+CMGS=\"+32123456789\"\r"); // Replace x with mobile number
      delay(1000);
      mySerial.print("Temperature = ");
      mySerial.print(temperatureEnCelsius);
      mySerial.print(" *c"); // The SMS text you want to send
      mySerial.println();
      mySerial.print("Humidite = ");
      mySerial.print(tauxHumidite);
      mySerial.print(" %"); // The SMS text you want to send
      mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
      mySerial.println();
      mySerial.flush();
      // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)
      delay(2000);
    }
  }
}

```

* * *

> [@jo\_6466](#):
>
> Mais si je la remplace par d'autres lettres, les envois sont lancés sans demandes et ne s'arrêtent plus

quel code utilisez vous qui ne fonctionne pas ?

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 4:38pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/3 "2024-12-29T16:38:02Z")

</div>

De quel code parlez-vous?

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 4:39pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/4 "2024-12-29T16:39:27Z")

</div>

quel code utilisez vous quand ça ne marche pas ?

juste (disons pour tester avec W)

```arduino
    if (inchar == 'W') {
...

```

ou vous essayez de mettre plusieurs lettres

```arduino
    if (inchar == 'VWXYZ') {
...

```

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 4:42pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/5 "2024-12-29T16:42:58Z")

</div>

Une seule lettre (inchar == 'W") au lieu de (inchar == 'V')

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 4:45pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/6 "2024-12-29T16:45:44Z")

</div>

vous mettez "W" avec des guillemets ou 'W' avec des apostrophes ?

(pour une seule lettre il faut des apostrophes — les guillemets c'est pour les chaînes de caractères)

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 4:46pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/7 "2024-12-29T16:46:14Z")

</div>

> [@J-M-L](#):
>
> autant mettre l'envoi du SMS dans le setup directement et vous passer de N

Je l'avais fait et exactement comme vous mais pas d'affichage de "reboot chalet" sur mon gsm

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 4:47pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/8 "2024-12-29T16:47:10Z")

</div>

vous mettez "W" avec des guillemets ou 'W' avec des apostrophes ?

(pour une seule lettre il faut des apostrophes — les guillemets c'est pour les chaînes de caractères)

oupsss erreur de frappe ici mais pas dans mon sketch

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 4:51pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/9 "2024-12-29T16:51:04Z")

</div>

hum... il n'y a aucune raison que

` if (inchar == 'V') {`

et que

` if (inchar == 'W') {`

ne fonctionne pas...

il doit y avoir autre chose...

quand vous envoyez un SMS que lisez vous sur le port série ? il y a du bla-bla en plus du contenu du SMS normalement

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 4:53pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/10 "2024-12-29T16:53:23Z")

</div>

le moniteur série placé directement après l'arrivée du caractère indique parfaitement la lettre émise

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 4:59pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/11 "2024-12-29T16:59:03Z")

</div>

mais voyez vous autre chose (lié aux commandes AT)

pouvez vous postez le code qui ne fonctionne pas et une copie d'écran de ce que l'on voie dans la console lors de la réception de cette lettre

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 5:47pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/12 "2024-12-29T17:47:12Z")

</div>

> [@J-M-L](#):
>
> pouvez vous postez le code qui ne fonctionne pas et une copie d'écran de ce que l'on voie dans la console lors de la réception de cette lettre

Lorsque je n'envoie absolument rien, voici ce que je reçois : la décomposition de commandes AT qui sont celles qui ont été envoyées lors du rebootage  
Pourquoi me reviennent-elles sans demande?

On comprend donc que la lettre V fonctionne mais pas les lettres C,T etc

moniteur série :

 ![Capture d’écran 2024-12-29 à 18.46.53](https://europe1.discourse-cdn.com/arduino/original/4X/5/a/d/5adb5d726515d41a9bba4c0f5a4cc70ee520f9ff.jpeg)

mon sketch :

```arduino
#include <SoftwareSerial.h>
#include <DHT.h>
#define brocheDeBranchementDHT 4 // pine de mesre DHT22
#define typeDeDHT DHT22 // type de DHT utilisé 

// Instanciation de la librairie DHT
DHT dht(brocheDeBranchementDHT, typeDeDHT);

char inchar; // variable du caractere reçu
int N=0;

SoftwareSerial mySerial(2, 3); // 2=TX 3=RX

void setup() {
  mySerial.begin(9600); // vitesse SIM900
  Serial.begin(9600); // vitesse moniteur
  delay(100);

  // Initialisation du DHT22;
  dht.begin();

  N=N+1;
                   
}
void loop() {

//envoi vers gsm de la signalisation du reboot du systeme
if (N==1)
{
mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000); // Delay of 1 second
 mySerial.println("AT+CMGS=\"+xxxx\"\r"); // Replace x with mobile number
 delay(1000);
 mySerial.println("REBOOT Chalet"); // The SMS text you want to send
 delay(100);
 mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
Serial.print("REBOOT Chalet");
Serial.println();
 }     

 N=0;

  if (mySerial.available() > 0) {

    inchar = mySerial.read();
    Serial.print("lettre envoyée = ");
    Serial.println(inchar);
    delay(20);
    if (inchar == 'V') {
      delay(10);

      // Lecture des données
      float tauxHumidite = dht.readHumidity(); // Lecture du taux d'humidité (en %)
      float temperatureEnCelsius = dht.readTemperature(); // Lecture de la température, exprimée en degrés Celsius

      // Vérification si données bien reçues
      if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) {
        Serial.println("Aucune valeur retournée par le DHT22. Est-il bien branché ?");
        delay(2000);
        return; // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop()
      }

      // Affichage des valeurs dans moniteur
      Serial.print("Temperature = ");
      Serial.print(temperatureEnCelsius);
      Serial.println(" *C");
      Serial.print("Humidite = ");
      Serial.print(tauxHumidite);
      Serial.println(" %");
      Serial.println();

      // envoi des valeurs vers GSM
     mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
      delay(1000); // Delay of 1 second
     mySerial.println("AT+CMGS=\"+xxxx\"\r"); // Replace x with mobile number
      delay(1000);
      mySerial.print("Temperature = ");
      mySerial.print(temperatureEnCelsius);
      mySerial.print(" *c"); // The SMS text you want to send
      mySerial.println();
      mySerial.print("Humidite = ");
      mySerial.print(tauxHumidite);
      mySerial.print(" %"); // The SMS text you want to send
      delay(100);
      mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
      mySerial.println();
      // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)
      delay(2000);
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 6:17pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/13 "2024-12-29T18:17:05Z")

</div>

Je pense que votre module est en mode ECHO donc il répète la commande et affiche la réponse.

si vous envoyez un SMS est-ce que ça affiche quelque chose ?  
➜ copiez et collez le **texte** du moniteur série, ce sera plus utile qu'une image partielle...

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 7:08pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/14 "2024-12-29T19:08:59Z")

</div>

> [@J-M-L](#):
>
> Je pense que votre module est en mode ECHO donc il répète la commande et affiche la réponse.
> 
> Mon module est un SIM900 ... un mode Echo??
> 
> si vous envoyez un SMS est-ce que ça affiche quelque chose ?  
> ➜ copiez et collez le **texte** du moniteur série, ce sera plus utile qu'une image partielle...

1. Mon module est un SIM900 ... un mode Echo??

2. Si j'envoie l'sms "bonjour" je recois "bonjour" voici le rendu dans le monitor

lettre envoyée = ,

lettre envoyée = 2

lettre envoyée = 0

lettre envoyée = :

lettre envoyée = 0

lettre envoyée = 8

lettre envoyée = :

lettre envoyée = 1

lettre envoyée = 7

lettre envoyée = +

lettre envoyée = 0

lettre envoyée = 4

lettre envoyée = "

lettre envoyée =

lettre envoyée =

lettre envoyée = B

lettre envoyée = o

lettre envoyée = n

lettre envoyée = j

lettre envoyée = o

lettre envoyée = u

lettre envoyée = r

lettre envoyée =

lettre envoyée =

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 9:55pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/15 "2024-12-29T21:55:40Z")

</div>

J'ai trouvé une solution ... j'envoie de mon gsm la commande "TEMP" au lieu d'une seule lettre ... de cette façon la simple lettre,même tapée erronémment, ne causera plus de soucis

Tout fonctionne correctement maintenant

Le sketch modifié :

```arduino
#include <SoftwareSerial.h>
#include <DHT.h>
#define brocheDeBranchementDHT 4 // pine de mesre DHT22
#define typeDeDHT DHT22 // type de DHT utilisé 

// Instanciation de la librairie DHT
DHT dht(brocheDeBranchementDHT, typeDeDHT);

char inchar; // variable du caractere reçu
int N=0;

SoftwareSerial mySerial(2, 3); // 2=TX 3=RX

void setup() {
  mySerial.begin(9600); // vitesse SIM900
  Serial.begin(9600); // vitesse moniteur
  delay(100);

  // Initialisation du DHT22;
  dht.begin();

  N=N+1;
                   
}
void loop() {

//envoi vers gsm de la signalisation du reboot du systeme
if (N==1)
{
mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000); // Delay of 1 second
 mySerial.println("AT+CMGS=\"+xxxxxxx\"\r"); // Replace x with mobile number
 delay(1000);
 mySerial.println("REBOOT Chalet"); // The SMS text you want to send
 delay(100);
 mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
Serial.print("REBOOT Chalet");
Serial.println();
 }     

 N=0;

  if (mySerial.available() > 0) {

    inchar = mySerial.read();
    Serial.print("lettre envoyée = ");
    Serial.println(inchar);
    delay(20);
    if (inchar == 'T') {
      delay(10);
    }
      if (inchar == 'E') {
        delay(10);
      }
      if (inchar == 'M') {
        delay(10);
      }
      if (inchar == 'P') {
        
      // Lecture des données
      float tauxHumidite = dht.readHumidity(); // Lecture du taux d'humidité (en %)
      float temperatureEnCelsius = dht.readTemperature(); // Lecture de la température, exprimée en degrés Celsius

      // Vérification si données bien reçues
      if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) {
        Serial.println("Aucune valeur retournée par le DHT22. Est-il bien branché ?");
        delay(2000);
        return; // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop()
      }

      // Affichage des valeurs dans moniteur
      Serial.print("Temperature = ");
      Serial.print(temperatureEnCelsius);
      Serial.println(" *C");
      Serial.print("Humidite = ");
      Serial.print(tauxHumidite);
      Serial.println(" %");
      Serial.println();

      // envoi des valeurs vers GSM
     mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
      delay(1000); // Delay of 1 second
     mySerial.println("AT+CMGS=\"+xxxxxxx\"\r"); // Replace x with mobile number
      delay(1000);
      mySerial.print("Temperature = ");
      mySerial.print(temperatureEnCelsius);
      mySerial.print(" *c"); // The SMS text you want to send
      mySerial.println();
      mySerial.print("Humidite = ");
      mySerial.print(tauxHumidite);
      mySerial.print(" %"); // The SMS text you want to send
      delay(100);
      mySerial.println((char)26); // ASCII code of CTRL+Z for saying the end of sms to the module
      mySerial.println();
      // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)
      delay(2000);
    }
  }
  }

```

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 29, 2024, 10:50pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/16 "2024-12-29T22:50:50Z")

</div>

> [@jo\_6466](#):
>
> J'ai trouvé une solution

Non…seul le P déclenche le traitement….les autres tests avant ne servent à rien

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 29, 2024, 11:23pm UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/17 "2024-12-29T23:23:55Z")

</div>

je pense que ma solution est plus universelle et ne dépend pas du tout du contenu des commandes AT envoyées

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [December 30, 2024, 4:42am UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/18 "2024-12-30T04:42:22Z")

</div>

Si je peux me permettre, vous vous racontez une histoire… vous recevez un octet et le comparez à différentes choses… il ne va être égal qu’à un seul caractère s’il y a un match… tous ces delay ne servent à rien, tant que vous ne trouvez pas dans le flux la seule lettre qui déclenche la mesure et l’envoi de la réponse

Pour que votre code soit réellement fonctionnel, il vous faudrait

- arrêter d’utiliser delay() dans l’espoir que vous attendiez assez longtemps pour que la commande soit traitée
- Écouter la réponse pour voir si la commande a été correctement exécutée
- Ne pas tenir compte du langage de commande de la réponse lors d’une réception de SMS pour pouvoir extraire réellement uniquement le message envoyé
- Comparer ce message reçu avec les commandes possibles pour effectuer l’opération attendue.

Il existe des bibliothèques pour gérer cela, vous devriez explorer cette piste.

Ce n’est que mon avis, si vous pensez avoir la solution universelle et que ça vous convient, c’est votre projet…

---

<div class="post-metadata">

**Author:** ![jo\_6466](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jo_6466/32/846811_2.png) [@jo\_6466](https://forum.arduino.cc/u/jo_6466)\
**Post date:** [December 30, 2024, 10:18am UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/19 "2024-12-30T10:18:50Z")

</div>

Merci pour m'avoir fait constater une faiblesse dans la chaine des IF

Vous avez raison, en ne gardant que le dernier IF sur "P" on arrive au même résultat

Peut-être q'une concaténation des lettres reçues suivie d'une comparaison à "TEMP" résoudrait le problème?

Je te remercie de prendre du temps pour moi

---

<div class="post-metadata">

**Author:** ![lesept](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/lesept/32/238959_2.png) [@lesept](https://forum.arduino.cc/u/lesept)\
**Post date:** [December 30, 2024, 11:49am UTC](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918/20 "2024-12-30T11:49:56Z")

</div>

Tu ne devrais pas mettre un numéro de téléphone en clair sur le forum (juste un conseil).

> [@jo\_6466](#):
>
> `mySerial.println("AT+CMGS=\"+32 ********* \"\r");`

[Next page](https://forum.arduino.cc/t/un-mystere-pour-moi/1336918.md?page=2)
