Page 1 sur 2
récupérer fichier Json sous esp8266 et l’exploiter
Publié : 13 janv. 2019, 19:46
par marsflow
Bonjour,
je vous explique mon projet, j'ai un esp8266 (wemos D1 mini) qui est connecté sur le wifi de mon voisin, pour l'hygrométrie du sol et et un relais pour alimenter une pompe tout ça est en solaire et hors réseau et mon voisin n'a pas de DNS,
je souhaiterai récupérer la valeur d'un interrupteur de domoticz (fichier json) et si l'interrupteur est sur on lancer la pompe
j'arrive à envoyer les valeurs de l'hygrométrie par commande http/json à mon domoticz, mais je bloque un peu sur la partie récupérer et exploiter un fichier json,
je teste déjà sur la page de la librairie ArduinoJson et j'adapte la version qui fonctionne sur arduino et en ethernet, je vous transmet où j'en suis et si vous pouvez m'aider ou du moins me débloquer un peu.
merci
Mon code
Code : Tout sélectionner
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>
#include <SPI.h>
#include <ArduinoJson.h>
unsigned long delayTime;
const char* ssid = "Livebox-92";
const char* password = "00000000000000000";
const char* host = "arduinojson.org";
const char* url = "/example.json";
const int port2 = 9982;
const uint16_t port = 80;
const int watchdog = 30000; // Fréquence d'envoi des données à Domoticz - Frequency of sending data to Domoticz
unsigned long previousMillis = millis();
ESP8266WebServer server ( 80 );
HTTPClient http;
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("connection failed");
delay(5000);
return;
}
Serial.println("passage ok");
// Check HTTP status
http.begin(host,port,url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String client = http.getString();
Serial.println(client);
}
}
// Send HTTP request
client.println(F("GET /example.json HTTP/1.0"));
client.println(F("Host: arduinojson.org"));
client.println(F("Connection: close"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!client.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
return;
}
// Allocate the JSON document
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60;
DynamicJsonDocument doc(capacity);
// Parse JSON object
DeserializationError error = deserializeJson(doc, client);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
// Extract values
JsonObject root = doc.as<JsonObject>();
Serial.println(F("Response:"));
Serial.println(root["sensor"].as<char*>());
Serial.println(root["time"].as<char*>());
Serial.println(root["data"][0].as<char*>());
Serial.println(root["data"][1].as<char*>());
// Disconnect
client.stop();
}
int value = 0;
void loop() {
}
mon retour
Code : Tout sélectionner
Connecting Wifi...
scandone
f 0, scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 11
cnt
connected with Livebox-92, channel 6
dhcp client start...
.ip:192.168.1.44,mask:255.255.255.0,gw:192.168.1.1
.
WiFi connected
IP address:
192.168.1.44passage ok
{
"sensor": "gps",
"time": 1351824120,
"data": [
48.756080,
2.302038
]
}
Failed to send request
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 26 janv. 2019, 00:45
par marsflow
Bonsoir,
j'ai un peu avancé, j'arrive à récupérer les valeurs du site d'exemple
Code : Tout sélectionner
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>
#include <SPI.h>
#include <ArduinoJson.h>
unsigned long delayTime;
const char* ssid = "Livebox-E";
const char* password = "4C80";
const char* host = "arduinojson.org";
const char* url = "/example.json";
const int port2 = 9982;
const uint16_t port = 80;
const int watchdog = 30000; // Fréquence d'envoi des données à Domoticz - Frequency of sending data to Domoticz
unsigned long previousMillis = millis();
ESP8266WebServer server ( 80 );
HTTPClient http;
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("connection failed");
delay(5000);
return;
}
Serial.println("passage ok");
// Check HTTP status
http.begin(host,port,url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String client = http.getString();
}
}
// Send HTTP request
client.println(F("GET /example.json HTTP/1.0"));
client.println(F("Host: arduinojson.org"));
client.println(F("Connection: close"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
Serial.println("passage ok");
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!client.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
return;
}
Serial.println("passage ok");
// Allocate the JSON document
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60;
DynamicJsonDocument doc(capacity);
// Parse JSON object
DeserializationError error = deserializeJson(doc, client);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
// Extract values
JsonObject root = doc.as<JsonObject>();
Serial.println(F("Response:"));
Serial.println(root["sensor"].as<char*>());
Serial.println(root["time"].as<long>());
JsonArray data = root["data"];
Serial.println(root["data"][0].as<float>());
Serial.println(root["data"][1].as<float>());
const char* sensor = root["sensor"];
long time = root["time"];
JsonArray date = root["data"];
float lon = date[0];
float lat = date[1];
Serial.println(sensor);
Serial.println(time);
Serial.println(lat);
Serial.println(lon);
// Disconnect
client.stop();
}
int value = 0;
void loop() {
}
Code : Tout sélectionner
Connecting Wifi...
scandone
f 0, scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 7
cnt
connected with Livebox-EFC0, channel 1
dhcp client start...
.ip:192.168.1.36,mask:255.255.255.0,gw:192.168.1.1
.
WiFi connected
IP address:
192.168.1.36passage ok
passage ok
passage ok
Response:
gps
1351824120
48.76
2.30
gps
1351824120
2.30
48.76
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 26 janv. 2019, 00:48
par marsflow
voici mon code pour ma connection à domoticz en json, mais impossible à récupérer quoi que ce soit, je me doute que j'ai pas le bon the capacity et aussi la gestion des résultats de la page json.
Code : Tout sélectionner
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>
#include <SPI.h>
#include <ArduinoJson.h>
unsigned long delayTime;
const char* ssid = "Livebox-E";
const char* password = "4C0";
const char* host = "marsflow2.myasustor.com";
const char* url = "/json.htm?type=devices&rid=999";
const int port2 = 9982;
const uint16_t port = 9982;
const int watchdog = 30000; // Fréquence d'envoi des données à Domoticz - Frequency of sending data to Domoticz
unsigned long previousMillis = millis();
ESP8266WebServer server ( 80 );
HTTPClient http;
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("connection failed");
delay(5000);
return;
}
Serial.println("passage ok");
// Check HTTP status
http.begin(host,port,url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String client = http.getString();
}
}
// Send HTTP request
client.println(F("GET /json.htm?type=devices&rid=999 HTTP/1.0"));
client.println(F("Host: marsflow2.myasustor.com"));
client.println(F("Connection: close"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
Serial.println("passage ok");
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!client.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
return;
}
Serial.println("passage ok");
// Allocate the JSON document
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = 2*JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(16) + JSON_OBJECT_SIZE(33) + 1657;
DynamicJsonDocument doc(capacity);
// Extract values
JsonObject root = doc.as<JsonObject>();
Serial.println(F("Response:"));
Serial.println(root["Sunset"].as<char*>());
Serial.println(root["idx"].as<char*>());
Serial.println(root["Voltage"].as<char*>());
JsonArray resulte = root["result"];
long Data = resulte[8];
const char* Sunset = root["Sunset"];
long idx = root["idx"];
Serial.println(Data);
Serial.println(Sunset);
// Disconnect
client.stop();
}
int value = 0;
void loop() {
}
Code : Tout sélectionner
Connecting Wifi...
scandone
f 0, scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 7
cnt
..
connected with Livebox-EFC0, channel 1
dhcp client start...
.ip:192.168.1.36,mask:255.255.255.0,gw:192.168.1.1
.
WiFi connected
IP address:
192.168.1.36passage ok
passage ok
passage ok
Response:
0
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 26 janv. 2019, 16:20
par Neutrino
Bonjour,
Mes compétences en C++ sont limitées.
Par contre, en relisant ta problématique, je pencherais pour MQTT.
Soit via un serveur dans le cloud style cloudmqtt.com, soit directement via un serveur mqtt chez toi.
Ensuite, un firmware style Tasmota, Espurna ou dans une moindre mesure EspEasy doit pouvoir faire le Job.
Alors oui, je te l'accorde, c'est moins drôle que du fait maison

Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 28 janv. 2019, 00:07
par marsflow
Neutrino a écrit : 26 janv. 2019, 16:20
Bonjour,
Mes compétences en C++ sont limitées.
Par contre, en relisant ta problématique, je pencherais pour MQTT.
Soit via un serveur dans le cloud style cloudmqtt.com, soit directement via un serveur mqtt chez toi.
Ensuite, un firmware style Tasmota, Espurna ou dans une moindre mesure EspEasy doit pouvoir faire le Job.
Alors oui, je te l'accorde, c'est moins drôle que du fait maison
beaucoup moins drôle c'est sure, je vais étudier cette possibilité, mais je me suis presque débloqué,
j'ai testé pour le moment avec un interrupteur local, tout marche maintenant je le fais à distant et là je pense que je n'arrive pas à rentrer (utilisateur et mot de passe,
Code : Tout sélectionner
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>
#include <SPI.h>
#include <ArduinoJson.h>
unsigned long delayTime;
const char* ssid = "Livebox-E0";
const char* password = "4C40";
const char* host = "util:mdp@marsflow2.myasustor.com";
const char* host2 = "marsf.myasustor.com";
const char* url = "/json.htm?type=devices&rid=841";
const int port2 = 9982;
const uint16_t port = 9982;
const int watchdog = 30000; // Fréquence d'envoi des données à Domoticz - Frequency of sending data to Domoticz
unsigned long previousMillis = millis();
ESP8266WebServer server ( 80 );
HTTPClient http;
void setup() {
Serial.setDebugOutput(true);
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
}
int value = 0;
void loop() {
WiFiClient client;
if (!client.connect(host2, port)) {
Serial.println("connection failed");
delay(5000);
return;
}
Serial.println("passage ok");
// Check HTTP status
http.begin(host, port, url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String client = http.getString();
}
}
// Send HTTP request
client.println(F("GET /json.htm?type=devices&rid=841 HTTP/1.0"));
client.println(F("Host: util:mdp@mars.myasustor.com"));
client.println(F("Connection: close"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
Serial.println("passage ok");
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!client.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
return;
}
Serial.println("passage ok");
// Allocate the JSON document
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = 2*JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(16) + JSON_OBJECT_SIZE(50) + 1270;
DynamicJsonDocument doc(capacity);
Serial.println(capacity);
// Parse JSON object
DeserializationError error = deserializeJson(doc, client);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
// Extract values
JsonObject root = doc.as<JsonObject>();
Serial.println(F("Response:"));
long ActTime = root["ActTime"];
JsonObject result0 = root["result"][0];
const char* result0_Data = result0["Data"];
const char* result0_Name = result0["Name"];
int result0_Level = result0["Level"];
Serial.println(ActTime);
Serial.println(result0_Name);
Serial.println(result0_Data);
Serial.println(result0_Level);
// Disconnect
client.stop();
if (result0_Level == 20) {
Serial.println("niveau 20");
}
if (result0_Level == 10) {
Serial.println("niveau 10");
}
delay(10000);
}
ça me marque
j'ai mit en base64 en suivant les indications json, je vous tiens au courant
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 03 mars 2019, 22:11
par marsflow
Bonsoir,
donc j'ai réussi à faire mon script fonctionnel, je le mets pour les intéressés

(à adapter)
celui là permet de récupérer des valeurs d'une batterie (A0), récupérer les valeurs d'une sonde BME680 et les envoyer à domoticz et puis récupérer les valeurs d'un interrupteur virtuel par le biais de json pour démarrer un relais.
Code : Tout sélectionner
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>
#include <SPI.h>
#include <ArduinoJson.h>
#include "Zanshin_BME680.h" // Include the BME680 Sensor library
unsigned long delayTime;
const char* ssid = "ssid";
const char* password = "mot de passe";
const char* host = "util:mdp@marsflow2.myasustor.com";
const char* host2 = "marsflow2.myasustor.com";
const char* url = "/json.htm?username=utilisateur base64==&password= mot de passe base64==&type=devices&rid=841";
const int port2 = 9982;
const uint16_t port = 9982;
const int watchdog = 30000; // Fréquence d'envoi des données à Domoticz - Frequency of sending data to Domoticz
unsigned long previousMillis = millis();
const int relais = 2;
int sensorValue = analogRead(A0);
ESP8266WebServer server ( 80 );
HTTPClient http;
int led = D4;
BME680_Class BME680; ///< Create an instance of the BME680
float altitude(const float seaLevel=1013.25)
{
static float Altitude;
int32_t temp, hum, press, gas;
BME680.getSensorData(temp,hum,press,gas); // Get the most recent values from the device
Altitude = 44330.0*(1.0-pow(((float)press/100.0)/seaLevel,0.1903)); // Convert into altitude in meters
return(Altitude);
} // of method altitude()
void setup() {
pinMode(led, OUTPUT);
Serial.setDebugOutput(true);
Serial.begin(115200);
#ifdef __AVR_ATmega32U4__ // If this is a 32U4 processor, then wait 3 seconds to initialize USB
delay(3000);
#endif
Serial.println(F("Starting I2CDemo example program for BME680"));
Serial.print(F("- Initializing BME680 sensor\n"));
while (!BME680.begin(I2C_STANDARD_MODE)) // Start BME680 using I2C protocol
{
Serial.println(F("- Unable to find BME680. Waiting 3 seconds."));
delay(3000);
} // of loop until device is located
Serial.println(F("- Setting 16x oversampling for all sensors"));
BME680.setOversampling(TemperatureSensor,Oversample16); // Use enumerated type values
BME680.setOversampling(HumiditySensor, Oversample16);
BME680.setOversampling(PressureSensor, Oversample16);
Serial.println(F("- Setting IIR filter to a value of 4 samples"));
BME680.setIIRFilter(IIR4);
Serial.println(F("- Setting gas measurement to 320\xC2\xB0\C for 150ms"));
BME680.setGas(320,150); // 320�c for 150 milliseconds
Serial.println();
/*!
@brief Arduino method for the main program loop
@details This is the main program for the Arduino IDE, it is an infinite loop and keeps on repeating.
@return void
*/
Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
}
int value = 0;
void loop() {
unsigned long currentMillis = millis();
if ( currentMillis - previousMillis > watchdog ) {
previousMillis = currentMillis;
WiFiClient client;
if (!client.connect(host2, port)) {
Serial.println("connection failed");
delay(5000);
return;
}
if(WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi not connected !");
} else {
Serial.println("send and recept data to Domoticz");
Serial.println("passage ok");
// Check HTTP status
http.begin(host, port, url);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String client = http.getString();
Serial.println("200 OK");
}
}
// Send HTTP request
client.println(F("GET /json.htm?username=utilisateur base64==&password=mot de passe base64==&type=devices&rid=841 HTTP/1.0"));
client.println(F("Host: marsflow2.myasustor.com"));
client.println(F("Connection: close"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
Serial.println("passage ok");
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!client.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
return;
}
Serial.println("passage ok");
// Allocate the JSON document
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = 2*JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(16) + JSON_OBJECT_SIZE(50) + 1270;
DynamicJsonDocument doc(capacity);
Serial.println(capacity);
// Parse JSON object
DeserializationError error = deserializeJson(doc, client);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
// Extract values
JsonObject root = doc.as<JsonObject>();
Serial.println(F("Response:"));
long ActTime = root["ActTime"];
JsonObject result0 = root["result"][0];
const char* result0_Data = result0["Data"];
const char* result0_Name = result0["Name"];
int result0_Level = result0["Level"];
Serial.println(ActTime);
Serial.println(result0_Name);
Serial.println(result0_Data);
Serial.println(result0_Level);
// Disconnect
client.stop();
if (result0_Level == 20) {
Serial.println("niveau 20");
digitalWrite(led, HIGH); // Allume la Led
}d
if (result0_Level == 10) {
Serial.println("niveau 10");
// Attendre 1 seconde
digitalWrite(led, LOW); // Eteind la Led
// Pause de 2 secondes
}
static uint8_t loopCounter = 0;+-
.*3 static int32_t temperature, humidity, pressure, gas; // Variable to store readings
°¨%,
B02ME680.getSensorData(temperature,humidity,pressure,gas); // Get most recent readings
Serial.print(temperature/100.0,2); // Temperature in deci-degrees
#ifdef ESP32
Serial.print(F(" ")); // Esp32 compiler doesn't liked escaped string
#else
Serial.print(F("\xC2\xB0\C ")); // Representation of the � symbol
#endif
Serial.print(humidity/1000.0,2); // Humidity in milli-percent
Serial.print(F("%Hum "));
Serial.print(pressure/100.0,2); // Pressure in Pascals
Serial.print(F("hPa "));
Serial.print(altitude(),2);
Serial.print(F("m "));
Serial.print(gas/100.0,2);
Serial.println(F("mOhm"));
float t = (temperature/100);
float h = (humidity/1000);
float pa = (pressure/100); //bme.readPressure() / 100.0F;
float v = sensorValue * (31.54 / 1023.0);
if ( isnan(t) || isnan(h) || isnan(v) ) {
Serial.println("DHT KO");
} else {
int hum_stat;
int bar_for = 0;
if ( h > 70 ) {
hum_stat = 3;
} else if ( h < 30 ) {
hum_stat = 2;
} else if ( h >= 30 & h <= 45 ) {
hum_stat = 0;
} else if ( h > 45 & h <= 70 ) {
hum_stat = 1;
}
if ( pa > 1030 ) {
bar_for = 1;
} else if ( pa > 1010 & pa <= 1030 ) {
bar_for = 2;
} else if ( pa > 990 & pa <= 1010 ) {
bar_for = 3;
} else if ( pa > 970 & pa < 990 ) {
bar_for = 4;
}
//"=devices&rid=841";
String url2 = "/json.htm?username= utilisateur base64 ==&password=mot de passe base64==&type=command¶m=udevice&idx=1036&nvalue=0&svalue=";
url2 += String(t); url2 += ";";
url2 += String(h); url2 += ";";
url2 += String(hum_stat); url2 += ";";
url2 += String(pa); url2 += ";";
url2 += String(bar_for);
String url3 = "/json.htm?username=""""utilisateur en base64""""""==&password=MOT DE PASSE EN base64==&type=command¶m=udevice&idx=999&nvalue=0&svalue=";
url3 += String(v);
sendToDomoticz(url2);
sendToDomoticz2(url3);
}
}
}
}
//envoie donnee a domoticz
void sendToDomoticz(String url2){
Serial.print("connecting to ");
Serial.println(host2);
Serial.print("Requesting URL: ");
Serial.println(url2);
http.begin(host2,port,url2);
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) {
String payload = http.getString();
Serial.println("Domoticz response ");
Serial.println(payload);
}
}
Serial.println("closing connection");
http.end();
}
//envoie donnee a domoticz
void sendToDomoticz2(String url3){
Serial.print("connecting to ");
Serial.println(host2);
Serial.print("Requesting URL: ");
Serial.println(url3);
http.begin(host2,port,url3);
int httpCode3 = http.GET();
String payload = http.getString();
Serial.println(payload);
if (httpCode3) {
if (httpCode3 == 200) {
Serial.println("Domoticz response ");
Serial.println(payload);
}
}
Serial.println("closing connection");
http.end();
}
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 15 mai 2020, 10:33
par totof60
Bonjour
je déterre ce sujet pour l'adapter à mes besoins.
Le sketch semble avoir des erreurs.
Est ce dernier que tu utilises , ou y a t'il eu des corrections ?
Merci d'avance
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 15 mai 2020, 16:35
par marsflow
totof60 a écrit : 15 mai 2020, 10:33
Bonjour
je déterre ce sujet pour l'adapter à mes besoins.
Le sketch semble avoir des erreurs.
Est ce dernier que tu utilises , ou y a t'il eu des corrections ?
Merci d'avance
Bonjour,
il fonctionne, par contre il faut l'adapter, je n'ai pas marqué comment il faut faire je vais voir ça ce soir.
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 15 mai 2020, 23:49
par marsflow
bonsoir alors déjà pour décrypter le json distant tu as besoin de coller ton json actuel que tu souhaites récupérer sur ce site
https://arduinojson.org/v5/assistant/
Re: récupérer fichier Json sous esp8266 et l’exploiter
Publié : 17 mai 2020, 01:34
par marsflow
Code : Tout sélectionner
// Allocate the JSON document
// Use arduinojson.org/assistant to compute the capacity.
const size_t capacity = 2*JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(16) + JSON_OBJECT_SIZE(50) + 1270; // modifier cette partie pour l'adapter à votre json >>> https://arduinojson.org/v5/assistant/
DynamicJsonDocument doc(capacity);
Serial.println(capacity);