Sonde DS18B20 bloquée à 85

Bonjour,
une de mes 2 sondes DS18B20 reste bloquée à 85.

J’utilise Jeedom sur Raspberry. Je capte la température sur 2 sondes dallas DS18B20 sur bus 1 wire via un Arduino méga connecté en Ethernet. J’utilise le plugin jeeduino pour réaliser cela. je n’ai pas touché au script généré par Jeeduino.
Les 2 sondes sont correctement câblées et renvoient les bonnes informations (programme de tests IDE ARDUINO).
Les 2 commandes remontent bien distinctement dans le plugin jeeduino.
Une des 2 sondes renvoit la bonne température. L’autre reste bloquée à 85.

Avez-vous une idée de ce que j’ai loupé?

Merci de votre aide.

T’as pas mis un seuil dans les options de ta commande ?

Résolu!!
Auto réponse qui peut aider la communauté.
en comparant le script généré par jeeduino et celui de l’exemple de la librairie one wire, j’ai rajouté « delay(1000); » après le ds.write(0x44, 1);
Je ne comprends pas tout mais il semble que le scan du bus one wire nécessite un temps de pause entre 2 capteurs.
En tout cas ça marche avec 3 sondes, tout remonte sur jeeduino. Je vais charger mon bus avec d’autres sondes et vérifier que tout est ok dans la durée.

Merci quand même.

Voir ci-dessous.
#if (UseDS18x20 == 1)
int read_DSx(int pinD)
{
byte data[12];
byte addr[8];
long first, temp;
char buffer[3];
OneWire ds(pinD);
byte nb_ds18 = 0;

ds.reset_search();
while (ds.search(addr))
{
	if (OneWire::crc8(addr, 7) != addr[7]) //Check if there is no errors on transmission
	{
		#if (DEBUGtoSERIAL == 1)
			Serial.println(F("CRC invalide..."));
		#endif
		return 99999;
	}
	if (addr[0] != 0x28)
	{
		#if (DEBUGtoSERIAL == 1)
			Serial.println(F("Device is not a DS18B20."));
		#endif
		return 99999;
	}
	ds.reset();
	ds.select(addr);
	ds.write(0x44, 1);
delay(1000);  // c'est ici que cela se passe...
	nb_ds18++;
}
if (nb_ds18 == 0)
{
	ds.reset_search();
	#if (DEBUGtoSERIAL == 1)
		Serial.println(F("ds not found..."));
	#endif
	delay(250);
	return 99999;
}
nb_ds18 = 0;
delay(800);
jeedom = F("&DS18list_");
jeedom += pinD;
jeedom += F("={");
ds.reset_search();
while (ds.search(addr))
{
	jeedom += '"';
	jeedom += F("28-");
	for (int ii = 6; ii > 0; ii--)
	{
		if (addr[ii] < 16) jeedom += '0';
		itoa (addr[ii], buffer, 16);
		jeedom += buffer;
	}
	jeedom += '"';
	jeedom += ':';
	jeedom += '"';
	ds.reset();
	ds.select(addr);
	ds.write(0xBE);
	for (int ii = 0; ii < 9; ii++)
	{
		data[ii] = ds.read();
	}
	temp = (int16_t) ((data[1] << 8) | data[0]) * 6.25;
	if (nb_ds18 == 0) first = temp;
	nb_ds18++;
	#if (DEBUGtoSERIAL == 1)
		Serial.println(temp / 100);
	#endif
	jeedom += temp;
	jeedom += '"';
	jeedom += ',';
}
jeedom += '}';
return first;

}
#endif