Ta chaîne correspond à une syntaxe json correcte et pourtant le parseur de json dit le contraire à l'exécution.
Ta fonction callback une fois mise au clair (à ma sauce) donne ceci
Code : Tout sélectionner
void callback(char* topic, byte* payload, unsigned int length)
{
// Message reçu du Broker.
String string;
// On vérifie qu'il vient bien de Domoticz.
int valeur = strcmp(topic, topicIn);
if (valeur == 0)
{
Serial.print("Message arrivé [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++)
{
string+=((char)payload);
}
// Affiche le message entrant - display incoming message
Serial.println(string);
// Parse l'objet JSON nommé "root"
StaticJsonBuffer<512> jsonBuffer;
JsonObject &root = jsonBuffer.parseObject(string);
if (root.success())
{
int idx = root["idx"];
int nvalue = root["nvalue"];
if (idx == idxDevice && nvalue == 0)
{
digitalWrite(MOCP, HIGH);
digitalWrite(MOCN, LOW);
Serial.print("Device ");
Serial.print(idx);
Serial.println(" sur ARRET " );
}
else if (idx == idxDevice && nvalue == 10)
{
digitalWrite(MOCP, LOW);
digitalWrite(MOCN, HIGH);
Serial.print("Device " );
Serial.print(idx);
Serial.println(" sur HORS GEL " );
}
else if (idx == idxDevice && nvalue == 20)
{
digitalWrite(MOCP, HIGH);
digitalWrite(MOCN, HIGH);
Serial.print("Device " );
Serial.print(idx);
Serial.println(" sur ECONOMIE " );
}
else if (idx == idxDevice && nvalue == 30 )
{
digitalWrite(MOCP, LOW);
digitalWrite(MOCN, LOW);
Serial.print( "Device " );
Serial.print(idx);
Serial.println( " sur CONFORT " );
}
else if (idx != idxDevice)
{
Serial.print( "Reçu informations du Device : " );
Serial.println(idx);
}
}
else
{
Serial.println("Erreur de lecture du JSON !");
}
}
}