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,
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
#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() {
}
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