inclure une variable dans une requete GET pour envoi Domoticz

Bonjour :slight_smile:

débutant en programmation, j'essaye désespérément de faire interagir un arduino uno avec un shield ethernet, avec un serveur domoticz sous raspi.

J'ai choisi l'envoi de requête json pour mettre à jour des capteurs virtuels (dummy), et si effectivement l'envoi se passe bien et le capteur se met bien à jour, l'information envoyée elle ne varie pas.

Impossible en effet d'inclure une variable dans la requête GET.

Le but final est d'envoyer une valeur correspondant à un capteur à ultrason HC-SR04 pour visualiser le remplissage d'une cuve d'eau.

Le code

#include <Ethernet.h>
#include <SPI.h>

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

/* Changez cette ip par celle correspondant à votre réseau HOST. Plupart des réseaux domestiques on
 * La sous-plage 192.168.0.XXX ou 192.168.1.XXX. Choisissez une adresse
 * atention a ne pas prendre une ip en cours d'utilisation et ne va pas être attribué automatiquement par
 * DHCP de votre routeur. */
 

//static uint8_t ip[] = { 192, 168, 0, 20 };
char server [] = "192.168.0.50";

EthernetClient client;

void setup()
{
  Ethernet.begin(mac);
  Serial.begin(9600);
Serial.println(Ethernet.localIP());
  delay(1000);
  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 8080)) {
     Serial.println("connexion avec le serveur OK");
    // Make a HTTP request:
    client.println("GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=123");//
client.println("Host: 192.168.0.50");//
client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

Donc la valeur que j'aimerais faire varier est le "123" à la fin de la ligne "GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=123".

Si une âme charitable passe dans le coin… ^^

Merci d'avance :wink:

Yoann

Salut,
cherche à créer une String dans le format qui t'arrange.
Du genre

String s="GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue="
//ensuite tu modifies ici ta valeur:
s+="123"
//et si c'est une variable decimale que tu as ailleurs, tu peux utiliser: s+=String(123);

bonjour

yoonie:

...

Serial.println("connexion avec le serveur OK");
    // Make a HTTP request:
    client.println("GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=123");//
client.println("Host: 192.168.0.50");//
client.println();
...

faire simplement

...
     Serial.println("connexion avec le serveur OK");
    // Make a HTTP request:
    client.print("GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=");//
    client.println(valeurAEnvoyer);
client.println("Host: 192.168.0.50");//
client.println();
...

a+

Merci pour vos réponses, je teste ça ce soir et je vous dit :wink:

caape:
bonjour

faire simplement

...

Serial.println("connexion avec le serveur OK");
    // Make a HTTP request:
    client.print("GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=");//
    client.println(valeurAEnvoyer);
client.println("Host: 192.168.0.50");//
client.println();
...




a+

Magnifique, ça marche nickel :wink:
J'essaye de me débrouiller pour la suite :smiley:

Merci :wink:

De retour avec un nouveau petit soucis :smiley:
j'en suis maintenant à l'envoi des vrai valeurs, et si pour le 1er capteur tout se passe bien, il n'arrive pas à se connecter pour envoyer le 2eme GET...

le code actuel :

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

boolean received = false;
boolean get2 = false;  // bascule entre les 2 GET
EthernetClient client;

char server[] = "192.168.0.150"; 
unsigned long lastConnectionTime = 0;
boolean lastConnected = false;
const unsigned long postingInterval = 10000;  // delay between updates, in milliseconds de base 5000
// declaration capteur
int trig = 6;
int echo = 7;
long lecture_echo;
long cm;
int trig2 = 8;
int echo2 = 9;
long lecture_echo2;
long cm2;
// fin declaration capteur
void setup() {
  // capteur
   pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(echo2, INPUT);
  //
  randomSeed(analogRead(0));
  Serial.begin(9600);
  delay(1000);
  Ethernet.begin(mac);
}

void loop() {
  //capteur
   digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  lecture_echo = pulseIn(echo, HIGH);
  cm = lecture_echo / 58;
  Serial.print("Distancem : ");
  Serial.println(cm);
  delay(2000); 
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);
  lecture_echo2 = pulseIn(echo2, HIGH);
  cm2 = lecture_echo2 / 58;
  Serial.print("Distancem2 : ");
  Serial.println(cm2);
  delay(2000);
  // fin capteur
  while (client.available()) {
    char c = client.read();
    Serial.print(c);
    received = true;
  }
 if(received)
 {
        client.stop();
        received = false;
 }

  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
      }

  if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest(reading);
  }
  lastConnected = client.connected();
}

void httpRequest(String val) {
  if (client.connect(server, 8080) && !get2) {  // rajout
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    client.print("GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=");
    client.print(cm);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = true;
      } 
  // 2eme get
  else if (client.connect(server, 8080) && get2) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    client.print("GET /json.htm?type=command&param=udevice&idx=32&nvalue=0&svalue=");
    client.print(cm2);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = false;
      } 
  // fin 2eme get
  
  else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    get2 = false; // debug
  }
}

et le joli retour série :

Distancem : 141
Distancem2 : 0
connecting...
Sending 1:8943
Distancem : 142
Distancem2 : 0
HTTP/1.0 200 OK
Content-Length: 53
Content-Type: text/html;charset=UTF-8
Cache-Control: no-cache
Pragma: no-cache

{
"status" : "OK",
"title" : "Update Device"
}

disconnecting.
Distancem : 140
Distancem2 : 0
connection failed
disconnecting.
Distancem : 140
Distancem2 : 0

(le 2eme capteur à 0 c'est normal, pas branché)

si je laisse tourner, il arrive toujours à envoyer la 1ere requête, et me met toujours un "connection failed" pour la 2eme.
ça doit pas être grand chose, mais la j'avoue je bloque complètement...

tu peux envoyer plusieurs valeurs en une seule ligne
GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&value1=123&value2=456"

Christian_R:
tu peux envoyer plusieurs valeurs en une seule ligne
GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&value1=123&value2=456"

par contre chaque valeur correspond à un idx différent, on peut également le préciser dans une seule ligne?

merci :wink:

réponse depuis le forum de domoticz : on ne peut pas envoyer sur une même requête json plusieurs valeurs pour plusieurs capteurs différents.. le problème reste entier :confused:

bon en fait j'ai trouvé une solution temporaire qui fonctionne, si ça peut servir a quelqu'un :

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

boolean received = false;
boolean get2 = false;
EthernetClient client;

char server[] = "192.168.0.150"; 
unsigned long lastConnectionTime = 0;
boolean lastConnected = false;
const unsigned long postingInterval = 30000;  // delay between updates, in milliseconds de base 5000
// declaration capteur
int trig = 6;
int echo = 7;
long lecture_echo;
long cm;
int trig2 = 8;
int echo2 = 9;
long lecture_echo2;
long cm2;
//
void setup() {
  // capteur
   pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(echo2, INPUT);
  //
  randomSeed(analogRead(0));
  Serial.begin(9600);
  delay(1000);
  Ethernet.begin(mac);
}

void loop() {
  //capteur
   digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  lecture_echo = pulseIn(echo, HIGH);
  cm = lecture_echo / 58;
  Serial.print("Distancem : ");
  Serial.println(cm);
  delay(1000);
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);
  lecture_echo2 = pulseIn(echo2, HIGH);
  cm2 = lecture_echo2 / 58;
  Serial.print("Distancem2 : ");
  Serial.println(cm2);
  delay(1000);
  // fin capteur
  while (client.available()) {
    char c = client.read();
    Serial.print(c);
    received = true;
  }
 if(received)
 {
        client.stop();
        received = false;
 }

  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }

  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && !get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest(reading);
  }
  
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest2(reading);
  }
  lastConnected = client.connected();
  lastConnected = client.connected();
}

void httpRequest(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    client.print("GET /json.htm?type=command&param=udevice&idx=33&nvalue=0&svalue=");
    client.print(cm);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = true;
  } 
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    
   }
}
  void httpRequest2(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    client.print("GET /json.htm?type=command&param=udevice&idx=32&nvalue=0&svalue=");
    client.print(cm2);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = false;
 
   }
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    get2 = false; // debug
  }
  }

je vais maintenant essayer d’alléger un peu tout ça :wink:

Merci pour ce petit post :slight_smile: car c'est exactement ce que je veut faire sauf que la c'est pour une sonde ds18b20 et j'aimerais aussi ajouter des interrupteurs et pouvoir actionner actionner des relais ... etc

Donc ton code me semblais une bonne base cela dit en passant je suis vraiment noob de chez noob en code et du coup je galère pas mal et la j'ai une erreur a la con car j'essaye forcement de rajouter des truc et ca plante

l'erreur c'est ca :

sketch_sep11a.ino: In function ‘void httpRequest(String)’:
sketch_sep11a.ino:165:18: error: ‘celsius’ was not declared in this scope

et pour le code :

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = { 192,168,0, 177 };

boolean received = false;
boolean get2 = false;
EthernetClient client;

OneWire  ds(7);  // on pin 7 (a 4.7K resistor is necessary)

char server[] = "192.168.0.10"; 
unsigned long lastConnectionTime = 0;
boolean lastConnected = false;
const unsigned long postingInterval = 30000;  // delay between updates, in milliseconds de base 5000
// declaration capteur
int trig = 6;
int echo = 7;
long lecture_echo;
long cm;
int trig2 = 8;
int echo2 = 9;
long lecture_echo2;
long cm2;

//
void setup() {
  // capteur
   pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(echo2, INPUT);
  //
  randomSeed(analogRead(0));
  Serial.begin(9600);
  delay(1000);
  Ethernet.begin(mac);
  analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
}

void loop() {
  
  //capteur ds18b20
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;

  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(10*1000);                  //10 secondes de pause
    return;
  }

  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1); 
  delay(1000);     // maybe 750ms is enough, maybe not

  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);  

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  
   celsius = (float)raw / 16.0;
  
  //capteur
   digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  lecture_echo = pulseIn(echo, HIGH);
  cm = lecture_echo / 58;
  Serial.print("Distancem : ");
  Serial.println(cm);
  delay(1000);
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);
  lecture_echo2 = pulseIn(echo2, HIGH);
  cm2 = lecture_echo2 / 58;
  Serial.print("Distancem2 : ");
  Serial.println(cm2);
  delay(1000);
  // fin capteur
  while (client.available()) {
    char c = client.read();
    Serial.print(c);
    received = true;
  }
 if(received)
 {
        client.stop();
        received = false;
 }

  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }

  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && !get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest(reading);
  }
  
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest2(reading);
  }
  lastConnected = client.connected();
  lastConnected = client.connected();
}



void httpRequest(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    client.print("GET /json.htm?type=command&param=udevice&idx=175&nvalue=0&svalue=");
    client.print(celsius);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = true;
  } 
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    
   }
}




void httpRequest2(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    client.print("GET /json.htm?type=command&param=udevice&idx=320&nvalue=0&svalue=");
    client.print(cm2);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = false;
 
   }
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    get2 = false; // debug
}
}

Voila si une ame charitable pourrais me dire pourquoi mon celsius est hors perimetre par ce que moi je capte pas :s

Merci à tous

vin100

bonjour,
que vient faire ton

  float celsius, fahrenheit;

dans le loop?
mets ca avant le setup pour le déclarer.

super ca fonctione :slight_smile: encore merci tu ma sauvé de ma noobitude :s mais bon faire des erreurs c'est le meilleur moyen d'apprendre

Merci encore :slight_smile:

vin100duino:
super ca fonctione :slight_smile: encore merci tu ma sauvé de ma noobitude :s mais bon faire des erreurs c'est le meilleur moyen d'apprendre

Merci encore :slight_smile:

de rien :wink:

Bon je reviens un peut moins noob mais quand meme encore trop pour reussir a comprendre comment faire pour rajouter la troisième requette car j'ai bien reussi a faire fonctionné la ds18b20 depuis la derniere ca tourne h24 et no problem; Mais j'essaie de rajouter une sonde dht22 a un autres endroit et malheureusement il n'y avait que deux requette differente de prévue et pour tunning le code et rajouté une troisième je galère enfin disont plutot que je ne comprend pas trop cette partie

  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }

  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && !get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest(reading);
  }
  
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest2(reading);
  }
  
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && !get3) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest3(reading);
  }
  lastConnected = client.connected();
  lastConnected = client.connected();
  lastConnected = client.connected();
}

C'est la que j'ai essayer de rajouter la troisième requette mais ca ne fonctionne pas ... et je comprend pas spécialement :s

voila le code intégrale que j'ai simplifié pour mon projet

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include "DHT.h"

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = { 192,168,0, 177 };


boolean received = false;
boolean get2 = false;
boolean get3 = false;
EthernetClient client;

OneWire  ds(7);  // on pin 7 (a 4.7K resistor is necessary)
#define DHTPIN 2     // what pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)

DHT dht(DHTPIN, DHTTYPE);

char server[] = "192.168.0.10"; 
unsigned long lastConnectionTime = 0;
boolean lastConnected = false;
const unsigned long postingInterval = 30000;  // delay between updates, in milliseconds de base 5000

// declaration capteur ds18b20
float celsius, fahrenheit; // declaration pour ds18b20
float t, h;

void setup() {
  randomSeed(analogRead(0));
  Serial.begin(9600);
  delay(1000);
  Ethernet.begin(mac);
  analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
  dht.begin();
  
}

void loop() {
  
  //capteur ds18b20
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  

  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(10*1000);                  //10 secondes de pause
    return;
  }

  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1); 
  delay(1000);     // maybe 750ms is enough, maybe not

  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);  

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  
   celsius = (float)raw / 16.0;
   
   float h = dht.readHumidity();
   float t = dht.readTemperature();
   
// check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.println(" Temp ds18b20: ");
    Serial.println(celsius);
  }
   
  
  while (client.available()) {
    char c = client.read();
    Serial.print(c);
    received = true;
  }
 if(received)
 {
        client.stop();
        received = false;
 }

  if (!client.connected() && lastConnected) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }

  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && !get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest(reading);
  }
  
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && get2) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest2(reading);
  }
  
  if(!client.connected() && (millis() - lastConnectionTime > postingInterval) && !get3) {
    int i = random(10000);
    String reading = "1:" + String(i);
    httpRequest3(reading);
  }
  lastConnected = client.connected();
  lastConnected = client.connected();
  lastConnected = client.connected();
}



void httpRequest(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    Serial.println("request1");
    client.print("GET /json.htm?type=command&param=udevice&idx=175&nvalue=0&svalue=");
    client.print(celsius);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = true;
  } 
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    
   }
}




void httpRequest2(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    Serial.println("request2");
    float h = dht.readHumidity();
    client.print("GET /json.htm?type=command&param=udevice&idx=183&nvalue=");
    client.print(h);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get2 = false;
 
   }
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    get2 = false; // debug
}
}

void httpRequest3(String val) {
  if (client.connect(server, 8080)) {
    Serial.println("connecting...");
    Serial.println("Sending " + val);
    Serial.println("request3");
    client.print("GET /json.htm?type=command&param=udevice&idx=182&svalue=");
    client.print(t);
    client.println(" HTTP/1.1");
    client.println("Host: *HOST*");
    client.println("Connection: keep-open");
    client.println();
    lastConnectionTime = millis();
    get3 = false;
 
   }
   else {
    Serial.println("connection failed");
    Serial.println("disconnecting.");
    client.stop();
    get3 = false; // debug
}



}

j'aimerais surtout bien comprendre le processus de lancement des requette json

en tout cas merci les gars pour les futures réponse

Vin100

Bonjour,

Où en êtes vous dans cette application car je souhaite faire la même chose avec des fonctionnalités complémentaires.

Peut-être que nous pouvons unir nos forces...

Voici mes posts en cours:
forum sur FR Domoticz : http://easydomoticz.com/forum/viewtopic.php...

Puis ceux liés a Arduino:

Description du projet: http://forum.arduino.cc/index.php?topic=292994...

Node 1 : http://forum.arduino.cc/index.php?topic=296538...

Qu'en pensez-vous?

Etant dans la similitude du projet dans les relevés de cuve, j'ai créé avec le Wiznet shield 5100 une page web qui affiche l'état et autorise la commande des sorties programmées! C'est cool ça marche...

Puis comme vous, j'ai implémenté les codes ci-dessus pour permettre l'envoi des infos à Domoticz...
ça semble fonctionner. Puis chose étrange, les envois se font très bien si le moniteur série est ouvert... Puis il redémarre tout seul quand il veux et aléatoirement si le moniteur série est fermé.

Est-ce normal?