la solution logicielle me plaît assez mais , je nage un peu , à vrai dire .
ce document est intéressant :
-- merci bendia -- de même celui ci :
qui donne le brochagemais pour le programme , je sèche un peu .
s'il s'agit de modifier un pin , çà doit pas être compliqué . c'est tout ?
en interconnectant sd0 et rst (si j'ai bien compris) , on peut faire :
#define D0_PIN D0
void setup() {
pinMode(D0_PIN, OUTPUT);
digitalWrite(DO_PIN, 0);
delay(5000);
}
void loop() {
digitalWrite(DO_PIN, 0);
}
c'est çà ?
C'est l'intérêt d'un protocole comme MQTT, où ton objet connecté va être en veille, se réveiller périodiquement (ou sur une information extérieur), envoyer sa donnée au serveur, et se remettre en veille
MQTT ?? tu peux m'en dire plus ???
jusqu'ici , quand je m'en suis servi , c'est dans un client spécial (MQTT Box) , donc , çà ne m'intéresse pas .
je veux pouvoir me servir de mon capteur dans un navigateur .
bendia a écrit :être en veille, se réveiller périodiquement (ou sur une information extérieur), envoyer sa donnée au serveur, et se remettre en veille
très bien mais quoi comme info extérieure ?
j'aurai aimé depuis un navigateur .
ou , dans le pire des cas réveiller le node avec un B.P. pour une durée de 5-10 min par exemple .
en fait , je sais pas , je sais plus . et surtout , je sais pas faire ...
l'electronique , passe encore , à la rigueur ...
mais le logiciel ... pfiuuuu .... ???
J'ai lu ceci : -- deep sleep --
très intéressant mais très compliqué aussi .
j'ai essayé la partie logicielle (deep sleep) : site inaccessible . j'ai échoué . sûrement , je m'y suis mal pris .
je vais essayer la deuxième méthode : avec un transistor : plus facile , apparemment , ya pas de logiciel .
sauf erreur .
à moins que qqun n'arrive à me dépanner sur le deep sleep ????
bon , je manque de jus ce soir . on verra plus tard . peut être un peu demain ????
voilà mon code :
j'ai gaffé ?
par contre , je n'ai pas relié D0 à RST , erreur ?
/*
This sketch demonstrates how to set up a simple HTTP-like server.
The server will set a GPIO pin depending on the request
http://server_ip/gpio/0 will set the GPIO2 low,
http://server_ip/gpio/1 will set the GPIO2 high
server_ip is the IP address of the ESP8266 module, will be
printed to Serial when the module is connected.
*/
// librairies :
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Ticker.h>
#include <dht.h>
// initialisations :
#ifndef STASSID
#define STASSID "Bbox-9F38B11F"
#define STAPSK "5556E12CFF4553C1E734A347636EF6"
#endif
#define DHT11_PIN D3
#define LED D1
#define durationSleep 10 // secondes
#define NB_TRYWIFI 10 // nbr d'essai connexion WiFi, number of try to connect WiFi
dht DHT;
Ticker ticker;
const char* ssid = STASSID;
const char* password = STAPSK;
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void tick()
{
int state = digitalRead(LED); // get the current state of GPIO1 pin
digitalWrite(LED, !state); // set pin to the opposite state
}
void setup() { {
pinMode(LED, OUTPUT);
ticker.attach(0.5, tick);
Serial.begin(115200);
WiFi.begin(ssid, password);
//gestion du sommeil
int _try = 0;
while (WiFi.status() != WL_CONNECTED) {
Serial.print("..");
delay(500);
_try++;
if ( _try >= NB_TRYWIFI ) {
Serial.println("Impossible to connect WiFi network, go to deep sleep");
ESP.deepSleep(durationSleep * 1000000);
}
}
Serial.println("Connected to the WiFi network");
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );
ESP.deepSleep(durationSleep * 1000000);
}
// prepare LED
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, 0);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print(F("Connecting to "));
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println();
Serial.println(F("WiFi connected"));
// Start the server
server.begin();
Serial.println(F("Server started"));
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println(F("new client"));
client.setTimeout(5000); // default is 1000
// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(F("request: "));
Serial.println(req);
// Match the request
// serial println avec dht 11
// test dht_11
//lecture capteur
int chk = DHT.read11(DHT11_PIN);
// affichage données
Serial.print("Command is : [");
Serial.println(" is to show temperature!] ");
Serial.print(" Temp is: " );
Serial.print(DHT.temperature);
Serial.println(" ° C. Degrés Celcius");
Serial.print("Command is : [");
Serial.println("to show humidity!]");
Serial.print(" Humidity is: " );
Serial.print(DHT.humidity);
Serial.println(" % pour cent ");
Serial.println("quelle est la requète ?");
int val;
if (req.indexOf(F("/gpio/0")) != -1) {
val = 1;
Serial.println(" demande d'extinction de la led ");
} else if (req.indexOf(F("/gpio/1")) != -1) {
val = 0;
Serial.println(" demande d'allumage de la led");
} else {
Serial.println(F("invalid request"));
val = digitalRead(LED_BUILTIN);
}
// Set LED according to the request
digitalWrite(LED_BUILTIN, val);
Serial.println(" on réponds à la requète ");
// read/ignore the rest of the request
// do not client.flush(): it is for output only, see below
while (client.available()) {
// byte by byte is not very efficient
client.read();
}
// Send the response to the client
// it is OK for multiple small client.print/write,
// because nagle algorithm will group them into one single packet
Serial.println("envoi de la page web au client");
client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO est maintenant "));
client.println((val) ? F(" eteint") : F(" allume"));
client.print("<br><br>");
client.print(" la temperature est de : ");
client.print(DHT.temperature);
client.print(" C. Degres Celcius ");
client.print("<br><br>le taux d'humidite est de : ");
client.print(DHT.humidity);
client.print(" % pour cent ");
client.print(F("<br><br>Cliquez <a href='http://"));
client.print(WiFi.localIP());
client.print(F("/gpio/1'> ici </a> pour allumer la LED Integree , ou <a href='http://"));
client.print(WiFi.localIP());
client.print(F("/gpio/0'> ici </a> pour l'eteindre . </html>"));
// The client will actually be *flushed* then disconnected
// when the function returns and 'client' object is destroyed (out-of-scope)
// flush = ensure written data are received by the other side
Serial.println(F("Disconnecting from client"));
}
je dois dire (à ma grande honte) que j'ai pas tout compris au code proposé .
ni à la procédure , non plus .
en fait , j'ai pas compris grand chose ...
Dernière modification par Debian Alain (01-02-2019 21:26:37)