Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 01-02-2019 19:27:38

Debian Alain
Adhérent(e)
Lieu : Bretagne
Distrib. : bookworm unstable sid / bullseye (stable)
Noyau : Linux sid 5.16.0-rc7-amd64 (experimental)
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

[Résolu] repos / reveil nodeMcu

fils de discussion précédents : 

le deuxième :  https://debian-facile.org/viewtopic.php … 19#p291319

le premier    :  https://debian-facile.org/viewtopic.php?id=23508

les fils précédents , comme celui - ci , s'appliquent au nodeMcu ESP8266 ESP-F .

bonjour .

je ne sais pas  si vous pourrez m'aider et , à vrai dire , là , je sors un peu des clous .

je dois réfléchir à la conception electronique de mon montage .

comme il est trop gourmand en énergie , je pense qu'il faut gérer son alim .

j'ai pensé à un oscillateur qui commanderai la mise sous tension ou non du node mais je ne sais pas .

y a t il une soluce logicielle pour le gérer ?

si oui , comment ? un exemple ? langage similaire si possible ? fichier(s) exemple dans l' I.D.E. ?

trouvé ceci http://framboiseaupotager.blogspot.com/ … uence.html

Dernière modification par Debian Alain (02-02-2019 11:43:28)

En ligne

#2 01-02-2019 19:52:45

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : [Résolu] repos / reveil nodeMcu

Debian Alain a écrit :

j'ai pensé à un oscillateur qui commanderai la mise sous tension ou non du node mais je ne sais pas .

Ben, ça ne me semble pas possible si c'est un serveur. Par définition, il doit être joignable en permanence, et à l'écoute des requêtes.

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. C'est la que ton Raspberrypi peut t'être utilise en jouant le rôle de serveur smile

Debian Alain a écrit :

y a t il une soluce logicielle pour le gérer ?

Oui, dans l'autre fil, je t'ai passé un lien qui concerne la mise en veille wink


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

En ligne

#3 01-02-2019 20:17:43

Debian Alain
Adhérent(e)
Lieu : Bretagne
Distrib. : bookworm unstable sid / bullseye (stable)
Noyau : Linux sid 5.16.0-rc7-amd64 (experimental)
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : [Résolu] repos / reveil nodeMcu

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 brochage

mais 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 22:26:37)

En ligne

#4 01-02-2019 23:38:18

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : [Résolu] repos / reveil nodeMcu

Debian Alain a écrit :

MQTT ?? tu peux m'en dire plus ???

Non, je n'ai pas encore essayé wink

Debian Alain a écrit :

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 .

Dans ce cas, oublie la batterie. Ton ESP est un serveur, il doit donc être prêt en permanence à recevoir des requêtes de ton navigateur. Il ne peut donc pas être en veille à mon sens. Mais, sur le secteur, aucun problème smile


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

En ligne

#5 02-02-2019 11:26:52

Debian Alain
Adhérent(e)
Lieu : Bretagne
Distrib. : bookworm unstable sid / bullseye (stable)
Noyau : Linux sid 5.16.0-rc7-amd64 (experimental)
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : [Résolu] repos / reveil nodeMcu

arf ! c'est pas ce que je voulais , mais bon , je vais me pencher sur le mqtt , voir ...

En ligne

Pied de page des forums