1 pièce(s) jointe(s)
Problème de souscription à un topic MQTT
Bonjour,
J'ai un broker dans un Pi qui diffuse en local 3 Topic. Voici une copie d'écran de MQTT Eplorer
Pièce jointe 633697
Les topics TFA et CPT sont gérés par moi, le topic Meteo par le programme WeeWX http://weewx.com/ . On voit qu'il est présenté différemment et je ne sais pas pourquoi.
Je sais lire sur un ESP8266 les messages de TFA et de CPT, mais pas de Meteo.
Auriez-vous une idée ?
Merci d'avance
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #include <ESP8266WiFi.h>
#include <PubSubClient.h>
static const char alphanum[] = "0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
void setup_mqtt() {
client.setServer(mqtt_server, mqttPort);
client.setCallback(callback);//Déclaration de la fonction de souscription
reconnect();
}
void reconnect() {
while (!client.connected()) {
Serial.print("Connection au serveur MQTT avec le nom ");
char* clientName = "\0\0\0\0\0\0\0\0";
randomSeed(analogRead(A0));
for (int i = 0; i < 8; i++) {
clientName[i] = alphanum[random(61)];
}
Serial.println(clientName);
if (client.connect(clientName)) {
Serial.println("MQTT connecté");
}
else {
Serial.print("echec, code erreur= ");
Serial.println(client.state());
Serial.println("nouvel essai dans 1.5 s");
delay(1500);
}
}
client.subscribe("TFA");
client.subscribe("CPT");
client.subscribe("Meteo"); // ou "Meteo/loop" ou d'autres combinaisons
}
void callback(char* topic, byte *payload, unsigned int length) {
byte cnl;
char sTmp[1700];
for (int i = 0; i < length; i++) {
sTmp[i] = (char)payload[i];
}
sTmp[length] = '\0'; // important : termine la chaine de caractères
Serial.print(topic);
Serial.print(" => ")
Serial.println(sTemp);
//le reste du traitement n'a pas d'importance
} |
en ne mettant que
Code:
1 2 3 4
|
//client.subscribe("TFA");
//client.subscribe("CPT");
client.subscribe("#"); |
je n'ai que TFA et CPT ...