Bonjour à vous,
depuis quelques jours maintenant je cherche à faire fonctionner mon Nodemcu ESP12E en mode serveur mais aussi client.
Le projet est une centrale d'affichage météo qui reçois des données de plusieurs satellites avec des BMP280. Ca c'est la partie serveur, la centrale écoute les requêtes des satellites.
Quand un des satellite n'envoi plus de données depuis un certains temps j'ai besoin d'envoyer une url a ifttt pour recevoir une notification sur mon portable. c'est cette partie qui ne fonctionne pas.
je test actuellement avec ce code:
//---declaration des bibliotheques---
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>
#include <ESP8266HTTPClient.h>
//---configuration du reseau---
const char* ssid = "xxxxx";
const char* password = "xxxxxxxx";
IPAddress ip(192, 168, 1, 60);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
//---demarrage du server sur port 80
WiFiServer server(80);
String req;
String httpurl;
HTTPClient http;
void setup() {
Serial.begin(9600);
//---connexion au reseau domestique---
WiFi.mode(WIFI_STA);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
Serial.print("connexion au reseau");
while (WiFi.status() != WL_CONNECTED) { //attente de la connexion
delay(500);
Serial.print(".");
}
Serial.println("connection : OK");
//---initialisation et configuration de l'interface de MAJ en WIFI---
ArduinoOTA.setHostname("essai");
ArduinoOTA.begin();
//---demarrage du serveur et declaration des pages d'appel---
server.begin();
Serial.println("Server started");
Serial.println(WiFi.localIP());
Serial.println("");
}
void loop() {
//---ecoute du reseau pour MAJ en WIFI---
ArduinoOTA.handle();
//---ecoute des requetes sur le reseau---
WiFiClient client = server.available();
if (client) {
while (!client.available()) {
delay(1);
}
req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
if (req.indexOf("gpio") != -1) {
String e = req.substring(10, 14);
Serial.println(e);
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nOK!!! ";
s += "</html>\n";
client.print(s);
client.flush();
delay(20);
}
}
if (req != "") {
req = "";
httpurl = "http://maker.ifttt.com/trigger/erreur1/with/key/XXXXXXXXXXX";
http.begin(httpurl);
int r= http.GET();
Serial.println(r);
http.end();
delay(20);
}
}
Quand je tappe dans mon naviguateur http://192.168.1.60/gpio=12.7 j'obtient cette réponse:
connexion au reseau.connection : OK
Server started
192.168.1.60
GET /gpio=12.7 HTTP/1.1
12.7
-1
GET /favicon.ico HTTP/1.1
-1
la partie serveur fonctionne, j'obtient bien le "12.7" mais l'envoi de l'url plante .
Auriez-vous une idée ?
Merci