Nommer un ESP au format ESP_1A2B3C

Bonjour,

J'ai pour projet de créer un petit réseau de capteurs à base de ESP8266 qui se connecterons par le WIFI sur un serveur MQTT.
Je tente d'écrire un bout de code pour nommer automatiquement le nom des mes ESP8266 en fonction de leur adresse MAC. Je pense installer par exemple plusieurs capteurs de température qui auront strictement le même hardware et le même code, ce sera juste à la génération de son nom que je pourrais les différencier dans MQTT. Par la suite, ce nom espname est utilisé pour le nom du client MQTT et dans le nom des topics (in et out).

Il y a quelques mois j'avais écrit ce code à base de 'String'. Mais je devais le transformer en 'char' pour l'exploiter. Je tente aujourd'hui de l'écrire en 'char' directement.

Voici mon code (pour l'exemple j'ai créé manuellement la variable mac)

// Nommer un ESP à partir de son adresse MAC
// exemple : MAC=4C:75:25:0B:9E:6D => espname=ESP_0B9E6D
char espname [11]; // sizeof = 10+1
byte mac[6] = {0x4c,0x75,0x25,0x0b,0x9E,0x6D};
void setup() {
  Serial.begin(115200);
  sprintf(espname, "ESP_%02x%02x%02x",(mac[3]),(mac[4]),(mac[5]));
  Serial.print("espname = ");
  Serial.println(espname);
  }
void loop () {}

Dans la version avec 'String', je met en majuscule avec espname.toUpperCase(); comment mettre en majuscule les lettres de l'adresse MAC ?

Merci.

X à la place de x

sprintf(espname, "ESP_%02X%02X%02X",(mac[3]),(mac[4]),(mac[5]));

Merci beaucoup @fdufnews :+1:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.