Pour ce qui est du client, il s'agit d'un serveur qui envoie simplement un caractère ou un autre, je peux vous fournir le code de mon client de test en php, mais c'est sûr que l'erreur vient pas de lui : ça a été testé avec d'autres clients codés en python/php et pas tous par moi...
Pour ce qui est du code complet :
#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h>
#include <Wire.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9E, 0xAC };
IPAddress ip(192,168,15,64);
EthernetServer server(4998);
EthernetClient client;
String valdht;
String vallum;
String valtemp;
String reponse;
char cmd;
String trame;
float voltLuminosite = 0;
int luminositeFinale = 0;
const float ordonneeALOrigine = 44.86;
const float coeffDirecteur = 1.153;
void getLuminosite();
int port=72;
byte octet1 = 0;
byte demiOctet = 0;
int TemperatureFinale = 0;
const float celsius = 0.0625;
void getTemperature();
void analyTrame(EthernetClient client, char cmd, String reponse);
void recupdht();
void setup() {
dht.begin();
Ethernet.begin(mac, ip);
server.begin();
Wire.begin();
}
void loop () {
client = server.available();
if (client) {
analyTrame(client, cmd, reponse);
}
}
void analyTrame(EthernetClient client, char cmd, String reponse) {
while(client.connected()) {
if (client.available()) {
cmd=NULL;
reponse=NULL;
while (cmd!='
PS : pour le DEC, je dois avouer que je ne me suis pas interessé à son interet, j'ai trouvé la fonction sur le site d'arduino ainsi écrite, j'ai fait plusieurs tests avec des variables de types différents et j'ai vu que ça fonctionnait, je suis pas allé chercher plus loin
) {
cmd = client.read();
reponse += cmd;
}
if (reponse.length()==2) {
reponse=reponse.substring(0,1);
if (reponse=="m") {
trame = lireCapteur();
client.print(trame);
}
else {
//erreur
}
}
else {
//erreur
}
}
}
}
String lireCapteur() {
trame=NULL;
recupdht();
trame += valdht;
trame+="|";
getTemperature();
trame += valtemp;
trame+="|";
getLuminosite();
trame+=vallum;
trame+="$";
return trame;
}
void recupdht() {
int humidite = dht.readHumidity();
int temperature = dht.readTemperature();
if (isnan(humidite) || (isnan(temperature)) || (humidite==0)) {
valdht = "e|e";
}
else {
String transitoire = String(humidite, DEC);
transitoire += "|";
transitoire += String(temperature, DEC);
valdht = transitoire;
Serial.println(transitoire);
}
}
void getLuminosite () {
voltLuminosite=analogRead(A0);
if(voltLuminosite==1023) {
vallum = "e";
}
else {
luminositeFinale=(voltLuminosite-ordonneeALOrigine)/coeffDirecteur; //operation pour passer de volt a lux
vallum = String(luminositeFinale, DEC);
}
}
void getTemperature() {
Wire.requestFrom(port,2);
int detecterreur = Wire.available();
if (detecterreur == 2) {
octet1 = Wire.read();
demiOctet = Wire.read();
TemperatureFinale = ((octet1 << 8) | demiOctet) >> 4;
TemperatureFinale = TemperatureFinale*celsius;
valtemp = String(TemperatureFinale, DEC);
}
else {
valtemp = "e";
}
}
PS : pour le DEC, je dois avouer que je ne me suis pas interessé à son interet, j'ai trouvé la fonction sur le site d'arduino ainsi écrite, j'ai fait plusieurs tests avec des variables de types différents et j'ai vu que ça fonctionnait, je suis pas allé chercher plus loin :blush: