Bonjour, voici mon code,
cependant c'est un problème qui ne depend pas de ce code précisément, d'autre code avec MQTT avais le même soucis. Avec différents board je précise.
avez vous le souci sans MQTT ? ie avez vous fait un code qui ne fait qu'envoyer des requêtes IR de temps en temps en simulant une réception aléatoire de commande ? (ie sans le WiFi activé)
sinon la fonction serait plus lisible écrite comme cela (ou mettez au moins des else et utilisez la représentation sous forme de caractère plutôt que le code ASCII)
void onMqttMessage(int messageSize) {
int charread = mqttClient.read();
switch (charread) {
case '1':
Serial.print("a1");
sendCommand(0x0, 0x7);
break;
case '2':
Serial.print("a2");
sendCommand(0x0, 0x9);
break;
case '3':
Serial.print("a3");
sendCommand(0x0, 0x16);
break;
case '4':
Serial.print("a4");
sendCommand(0x0, 0x0D);
break;
case '5':
Serial.print("b1");
sendCommand(0x0, 0x8);
break;
case '6':
Serial.print("b2");
sendCommand(0x0, 0x5A);
break;
case '7':
Serial.print("b3");
sendCommand(0x0, 0x42);
break;
case '8':
Serial.print("b4");
sendCommand(0x0, 0x4A);
break;
default:
// Traitement pour les autres caractères non gérés
break;
}
Serial.println();
}
et si vous voulez simplifier avec des tableaux un truc du genre:
void onMqttMessage(int messageSize) {
int charread = mqttClient.read();
// Tableaux de correspondance entre les caractères et les valeurs hexadécimales
static char characters[] = {'1', '2', '3', '4', '5', '6', '7', '8'};
static byte hexValues[] = {0x7, 0x9, 0x16, 0x0D, 0x8, 0x5A, 0x42, 0x4A};
for (int i = 0; i < sizeof(characters); i++) {
if (charread == characters[i]) {
Serial.write( (i < 4) ? 'a' : 'b');
Serial.print((i < 4) ? i+1 : i - 3);
sendCommand(0x0, hexValues[i]);
break; // pour sortir de la boucle une fois la correspondance trouvée
}
}
Serial.println();
}