User Tools

Site Tools


tecnologia:iot:esp32_post

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tecnologia:iot:esp32_post [2022/05/06 10:42] – admintecnologia:iot:esp32_post [2022/05/06 15:39] (current) – admin
Line 1: Line 1:
 ====== ESP32 POST ====== ====== ESP32 POST ======
 +Consumo con deep sleep: 0.013A
 +
 +Cálculo:
 +  156mWh - 2 horas
 +  1872mWh dia
 +  pila tiene 11W -> 5.8 dias
 +
 Queremos hacer la lectura de un valor y enviarlo por post. Empezamos por la plantilla de OTA: Queremos hacer la lectura de un valor y enviarlo por post. Empezamos por la plantilla de OTA:
  
Line 54: Line 61:
  
  
 +Aladimos que haga un post. El tiempo hay que poner el incial igual al final, para que haga una nada mas empezar y luego se espere el tiempo que queramos, en este caso 1 hora
 +<code>
 +#include <WiFi.h>
 +#include <ESPAsyncWebServer.h>
 +#include <AsyncElegantOTA.h>
 +#include <HTTPClient.h>
 +
 +const char* ssid     = "pitufina";
 +const char* password = "reyvisigodo";
 +
 +IPAddress ip(192,168,1,79);     
 +IPAddress gateway(192,168,1,1);   
 +IPAddress subnet(255,255,255,0); 
 +IPAddress dns(8,8,8,8);
 +
 +AsyncWebServer server(80);
 +
 +
 +//Your Domain name with URL path or IP address with path
 +String serverName = "http://bateriaseko.lobo99.com/agua.php";
 +
 +// the following variables are unsigned longs because the time, measured in
 +// milliseconds, will quickly become a bigger number than can be stored in an int.
 +unsigned long lastTime = 3600000;
 +// Timer set to 10 minutes (600000)
 +//unsigned long timerDelay = 600000;
 +// Set timer to 5 seconds (5000)
 +unsigned long timerDelay = 3600000;
 +
 +
 +void setup() {
 +  Serial.begin(115200);
 +  delay(10);
 +  Serial.println('\n');
 +  
 +  WiFi.begin(ssid, password);
 +  WiFi.config(ip, gateway, subnet, dns);
 +
 +  Serial.print("Conectando a ");
 +  Serial.print(ssid);
 +
 +  while (WiFi.status() != WL_CONNECTED) {
 +    delay(500);
 +    Serial.print('.');
 +  }
 +
 +  Serial.println('\n');
 +  Serial.println("Conectado correctamente");  
 +  Serial.print("IP:\t");
 +  Serial.println(WiFi.localIP());
 +
 +  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
 +    request->send(200, "text/plain", "V1.0 Primer OTA");
 +  });
 +
 +  AsyncElegantOTA.begin(&server);    // Start AsyncElegantOTA
 +  server.begin();
 +  Serial.println("HTTP server started");
 +  delay(1000);
 +  
 +}
 +
 +void loop() { 
 +
 +    if ((millis() - lastTime) > timerDelay) {
 +    //Check WiFi connection status
 +    if(WiFi.status()== WL_CONNECTED){
 +      HTTPClient http;
 +
 +      String serverPath = serverName + "?agua=24";
 +      
 +      // Your Domain name with URL path or IP address with path
 +      http.begin(serverPath.c_str());
 +      
 +      // Send HTTP GET request
 +      int httpResponseCode = http.GET();
 +      
 +      if (httpResponseCode>0) {
 +        Serial.print("HTTP Response code: ");
 +        Serial.println(httpResponseCode);
 +        String payload = http.getString();
 +        Serial.println(payload);
 +      }
 +      else {
 +        Serial.print("Error code: ");
 +        Serial.println(httpResponseCode);
 +      }
 +      // Free resources
 +      http.end();
 +    }
 +    else {
 +      Serial.println("WiFi Disconnected");
 +    }
 +    lastTime = millis();
 +  }
 +  
 +}
 +</code>
 +
 +
 +Añadimos la lectura para que la envíe en el POST:
 +<code>
 +#include <WiFi.h>
 +#include <ESPAsyncWebServer.h>
 +#include <AsyncElegantOTA.h>
 +#include <HTTPClient.h>
 +
 +const char* ssid     = "pitufina";
 +const char* password = "reyvisigodo";
 +
 +IPAddress ip(192,168,1,79);     
 +IPAddress gateway(192,168,1,1);   
 +IPAddress subnet(255,255,255,0); 
 +IPAddress dns(8,8,8,8);
 +
 +AsyncWebServer server(80);
 +
 +
 +//Your Domain name with URL path or IP address with path
 +String serverName = "http://bateriaseko.lobo99.com/agua.php";
 +
 +// the following variables are unsigned longs because the time, measured in
 +// milliseconds, will quickly become a bigger number than can be stored in an int.
 +unsigned long lastTime = 3600000;
 +// Timer set to 10 minutes (600000)
 +//unsigned long timerDelay = 600000;
 +// Set timer to 5 seconds (5000)
 +unsigned long timerDelay = 3600000;
 +
 +///////////////////////////////////////////////
 +////                                      /////
 +////     Variables lector ultrasonido     /////
 +////                                      /////
 +///////////////////////////////////////////////
 +const int trigPin = 5;
 +const int echoPin = 18;
 +  
 +//define sound speed in cm/uS
 +#define SOUND_SPEED 0.034
 +#define CM_TO_INCH 0.393701
 +
 +long duration;
 +float distanceCm;
 +float distanceInch;
 +  
 +
 +void setup() {
 +  Serial.begin(115200);
 +  delay(10);
 +  Serial.println('\n');
 +
 +  // Definimos pin ultrasonido
 +  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
 +  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
 +  
 +  WiFi.begin(ssid, password);
 +  WiFi.config(ip, gateway, subnet, dns);
 +
 +  Serial.print("Conectando a ");
 +  Serial.print(ssid);
 +
 +  while (WiFi.status() != WL_CONNECTED) {
 +    delay(500);
 +    Serial.print('.');
 +  }
 +
 +  Serial.println('\n');
 +  Serial.println("Conectado correctamente");  
 +  Serial.print("IP:\t");
 +  Serial.println(WiFi.localIP());
 +
 +  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
 +    request->send(200, "text/plain", "V1.0 Primer OTA");
 +  });
 +
 +  AsyncElegantOTA.begin(&server);    // Start AsyncElegantOTA
 +  server.begin();
 +  Serial.println("HTTP server started");
 +  delay(1000);
 +  
 +}
 +
 +void loop() { 
 +
 +    // Clears the trigPin
 +    digitalWrite(trigPin, LOW);
 +    delayMicroseconds(2);
 +    // Sets the trigPin on HIGH state for 10 micro seconds
 +    digitalWrite(trigPin, HIGH);
 +    delayMicroseconds(10);
 +    digitalWrite(trigPin, LOW);
 +    
 +    // Reads the echoPin, returns the sound wave travel time in microseconds
 +    duration = pulseIn(echoPin, HIGH);
 +    
 +    // Calculate the distance
 +    distanceCm = duration * SOUND_SPEED/2;
 +
 +    
 +    if ((millis() - lastTime) > timerDelay) {
 +    //Check WiFi connection status
 +    if(WiFi.status()== WL_CONNECTED){
 +      HTTPClient http;
 +
 +      String serverPath = serverName + "?agua=" + distanceCm;
 +      
 +      // Your Domain name with URL path or IP address with path
 +      http.begin(serverPath.c_str());
 +      
 +      // Send HTTP GET request
 +      int httpResponseCode = http.GET();
 +      
 +      if (httpResponseCode>0) {
 +        Serial.print("HTTP Response code: ");
 +        Serial.println(httpResponseCode);
 +        String payload = http.getString();
 +        Serial.println(payload);
 +      }
 +      else {
 +        Serial.print("Error code: ");
 +        Serial.println(httpResponseCode);
 +      }
 +      // Free resources
 +      http.end();
 +    }
 +    else {
 +      Serial.println("WiFi Disconnected");
 +    }
 +    lastTime = millis();
 +  }
 +  
 +}
 +</code>
 +
 +Ahora hacemos un sleep para que no gaste energía durante esa hora:
 +<code>
 +
 +#include <WiFi.h>
 +#include <ESPAsyncWebServer.h>
 +#include <AsyncElegantOTA.h>
 +#include <HTTPClient.h>
 +
 +const char* ssid     = "pitufina";
 +const char* password = "reyvisigodo";
 +
 +IPAddress ip(192,168,1,79);     
 +IPAddress gateway(192,168,1,1);   
 +IPAddress subnet(255,255,255,0); 
 +IPAddress dns(8,8,8,8);
 +
 +AsyncWebServer server(80);
 +
 +
 +//Your Domain name with URL path or IP address with path
 +String serverName = "http://bateriaseko.lobo99.com/agua.php";
 +
 +#define uS_TO_S_FACTOR 1000000ULL  //Conversion factor for micro seconds to seconds
 +#define TIME_TO_SLEEP  3600        //Time ESP32 will go to sleep (in seconds)
 +RTC_DATA_ATTR int bootCount = 0;
 +
 +
 +///////////////////////////////////////////////
 +////                                      /////
 +////     Variables lector ultrasonido     /////
 +////                                      /////
 +///////////////////////////////////////////////
 +const int trigPin = 5;
 +const int echoPin = 18;
 +  
 +//define sound speed in cm/uS
 +#define SOUND_SPEED 0.034
 +#define CM_TO_INCH 0.393701
 +
 +long duration;
 +float distanceCm;
 +float distanceInch;
 +  
 +
 +void setup() {
 +  Serial.begin(115200);
 +  delay(10);
 +  Serial.println('\n');
 +
 +  // Definimos pin ultrasonido
 +  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
 +  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
 +  
 +  WiFi.begin(ssid, password);
 +  WiFi.config(ip, gateway, subnet, dns);
 +
 +  Serial.print("Conectando a ");
 +  Serial.print(ssid);
 +
 +  while (WiFi.status() != WL_CONNECTED) {
 +    delay(500);
 +    Serial.print('.');
 +  }
 +
 +  Serial.println('\n');
 +  Serial.println("Conectado correctamente");  
 +  Serial.print("IP:\t");
 +  Serial.println(WiFi.localIP());
 +
 +  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
 +    request->send(200, "text/plain", "V1.0 Primer OTA");
 +  });
 +
 +  AsyncElegantOTA.begin(&server);    // Start AsyncElegantOTA
 +  server.begin();
 +  Serial.println("HTTP server started");
 +  delay(1000);
 +
 +  enviaLectura();
 +
 +  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
 +  Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) + " Seconds");
 +
 +  //Go to sleep now
 +  esp_deep_sleep_start();
 +}
 +
 +void loop() {}
 +
 +
 +String enviaLectura() { 
 +
 +    // Clears the trigPin
 +    digitalWrite(trigPin, LOW);
 +    delayMicroseconds(2);
 +    // Sets the trigPin on HIGH state for 10 micro seconds
 +    digitalWrite(trigPin, HIGH);
 +    delayMicroseconds(10);
 +    digitalWrite(trigPin, LOW);
 +    
 +    // Reads the echoPin, returns the sound wave travel time in microseconds
 +    duration = pulseIn(echoPin, HIGH);
 +    
 +    // Calculate the distance
 +    distanceCm = duration * SOUND_SPEED/2;
 +
 +    
 +    //Check WiFi connection status
 +    if(WiFi.status()== WL_CONNECTED){
 +      HTTPClient http;
 +
 +      String serverPath = serverName + "?agua=" + distanceCm;
 +      
 +      // Your Domain name with URL path or IP address with path
 +      http.begin(serverPath.c_str());
 +      
 +      // Send HTTP GET request
 +      int httpResponseCode = http.GET();
 +      
 +      if (httpResponseCode>0) {
 +        Serial.print("HTTP Response code: ");
 +        Serial.println(httpResponseCode);
 +        String payload = http.getString();
 +        Serial.println(payload);
 +      }
 +      else {
 +        Serial.print("Error code: ");
 +        Serial.println(httpResponseCode);
 +      }
 +      // Free resources
 +      http.end();
 +    }
 +    else {
 +      Serial.println("WiFi Disconnected");
 +    }
 +  delay(1000);
 +  return "OK";
 +}
 +</code>
tecnologia/iot/esp32_post.1651833760.txt.gz · Last modified: by admin