Go Down

Topic: inclure une variable dans une requete GET pour envoi Domoticz (Read 6888 times) previous topic - next topic

yoonie

Aug 07, 2014, 03:11 pm Last Edit: Aug 08, 2014, 12:30 pm by yoonie Reason: 1
Bonjour :)

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
Code: [Select]

#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 ;)

Yoann

Hiko

#1
Aug 07, 2014, 03:24 pm Last Edit: Aug 07, 2014, 03:27 pm by Hiko Reason: 1
Salut,
cherche à créer une String dans le format qui t'arrange.
Du genre
Code: [Select]
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);

caape

bonjour

Code: [Select]

...
     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

Code: [Select]

...
     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+
StandAlone domotique<br />Volet roulant, Capteur T° sur p iles, (Eclairage Salon SAM en cour)(Pilotage via WEB + Mobile (base ok))(Sonnette)(Alarme)...

yoonie

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

yoonie


bonjour

faire simplement

Code: [Select]

...
     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 ;)
J'essaye de me débrouiller pour la suite :D

Merci ;)

yoonie

#5
Aug 08, 2014, 01:43 am Last Edit: Aug 08, 2014, 01:46 am by yoonie Reason: 1
De retour avec un nouveau petit soucis :D
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 :
Code: [Select]

#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 :
Quote

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...


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"
Christian

yoonie


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 ;)

yoonie

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 :/

yoonie

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

#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 ;)

vin100duino

Merci pour ce petit post :) 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 :
Code: [Select]
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 :
Code: [Select]
#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

infobarquee

bonjour,
que vient faire ton
Code: [Select]
  float celsius, fahrenheit;
dans le loop?
mets ca avant le setup pour le déclarer.
AUCUNE AIDE PAR MP

vin100duino

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

Merci encore :)

infobarquee


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

Merci encore :)


de rien ;)
AUCUNE AIDE PAR MP

vin100duino

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

Code: [Select]
  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

Code: [Select]
#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

Go Up