J'ai développé un truc dans le genre, je remercie par avance les nombreux sites dont je me suis inspiré, voici le code :
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include <Ethernet.h>
#define ONE_WIRE_BUS 7
#define TEMPERATURE_PRECISION 12
byte mac[] = { 0xDE, 0xAD, 0xCA, 0xFE, 0xBA, 0xBE };
byte ip[] = { 192, 168, 0, 100 };
byte server[] = { 37, 59, 122, 168 }; // IP serveur MySQL + PHP
byte gateway[] = { 192, 168, 0, 254 };
byte dns[] = { 192, 168, 0, 254 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetClient client;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress DS0, DS1, DS2;
void setup(void)
{
Serial.begin(9600);
sensors.begin();
if (!sensors.getAddress(DS0, 0)) Serial.println("Pas d'adresse pour le capteur 0");
if (!sensors.getAddress(DS1, 1)) Serial.println("Pas d'adresse pour le capteur 1");
if (!sensors.getAddress(DS2, 2)) Serial.println("Pas d'adresse pour le capteur 2");
sensors.setResolution(DS0, TEMPERATURE_PRECISION);
sensors.setResolution(DS1, TEMPERATURE_PRECISION);
sensors.setResolution(DS2, TEMPERATURE_PRECISION);
Ethernet.begin(mac, ip, dns, gateway, subnet);
}
void getTemp(void)
{
int i = 0;
int numSensors = sensors.getDeviceCount();
float temparray[numSensors];
sensors.requestTemperatures();
delay(100);
for(i=0; i<numSensors; i++)
{
float temp = sensors.getTempCByIndex(i);
temparray[i] = temp;
}
client.print("GET /getTemp.php?");
for (i=0; i<numSensors; i++)
{
client.print("t");
client.print(i);
client.print("=");
client.print(temparray[i]);
if (i < numSensors-1)
{
client.print("&");
}
else
{
}
}
client.println(" HTTP/1.1");
client.println("Host: 37.59.122.168");
client.println("User-Agent: Arduino");
client.println("Accept: text/html");
client.println("Connection: close");
client.println();
delay(50);
}
void loop(void)
{
if(client.connect(server, 80))
{
getTemp();
}
else
{
Serial.println("Echec de connexion (loop). Essayez de nouveau plus tard.");
}
client.stop();
delay(60000); // 1 minute
}
Et le résultat en ligne après une interprétation PHP/JpGraph :
http://37.59.122.168/ds18b20.php
Ca fonctionne depuis une cinquantaine de jours, plus de 70000 lignes à raison d'un relevé par minute, pas de reset.
Bonne chance.