Skip to content

Commit

Permalink
commit init
Browse files Browse the repository at this point in the history
  • Loading branch information
system-fault committed Mar 15, 2024
1 parent 2b3ebf7 commit 54c5107
Show file tree
Hide file tree
Showing 13 changed files with 294 additions and 121 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
/build/*
/build/*/*
/build/*/*/*
/components/custom_HTTP_client/include/mydata_custom_HTTP_client.h
/components/init_custom_wifi/include/mydata_init_custom_wifi.h

!/.devcontainer/
!/.vscode/
Expand Down
5 changes: 3 additions & 2 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"${config:idf.espIdfPathWin}/components/**",
"${config:idf.espAdfPath}/components/**",
"${config:idf.espAdfPathWin}/components/**",
"${workspaceFolder}/**"
"${workspaceFolder}/**",
"${workspaceFolder}/main"
],
"browse": {
"path": [
Expand All @@ -24,4 +25,4 @@
}
],
"version": 4
}
}
4 changes: 3 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
"err.h": "c",
"freertos.h": "c",
"sensorbmp280.h": "c",
"esp_err.h": "c"
"esp_err.h": "c",
"data.h": "c",
"mydata.h": "c"
}
}
2 changes: 1 addition & 1 deletion components/custom_HTTP_client/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
idf_component_register(SRCS "custom_HTTP_client.c"
INCLUDE_DIRS "include"
INCLUDE_DIRS "include"
REQUIRES "esp_system" "esp_http_client" sensorbmp280 init_gpio)
72 changes: 52 additions & 20 deletions components/custom_HTTP_client/custom_HTTP_client.c
Original file line number Diff line number Diff line change
@@ -1,12 +1,38 @@
/**
* @file custom_HTTP_client.c
*
* @brief Este archivo contiene las funciones para el manejo de solicitudes GET y POST
* a un servidor web utilizando la librería custom_HTTP_client.
*
* Descripción:
* Este código proporciona funciones para manejar solicitudes GET y POST a un servidor web.
* Incluye funciones para manejar eventos relacionados con la recepción y envío de datos,
* así como tareas para consultar periódicamente el estado del LED y enviar datos de temperatura
* y presión al servidor mediante solicitudes HTTP.
* Además, define constantes y variables globales necesarias para el funcionamiento del programa.
*
** Nombre: David Martinez Henares
** Email: [email protected]
** Universidad: UPV-EHU
*/


#include "custom_HTTP_client.h"

#define IP_SERVER IP_HOME //& Introduce la ip de tu servidor

static const char *TAG_http_client = "HTTP-CLIENT";

//$ FUNCIONES PARA MANEJAR LAS PETICIONES GET AL SERVIDOR WEB //

static int level;
datosSensor http_medidas_var;

//$ FUNCIONES PARA MANEJAR LAS PETICIONES GET AL SERVIDOR WEB //

/**
* @brief Maneja los eventos relacionados con la recepción de datos en una solicitud GET al
* servidor web.
*/
esp_err_t client_event_get_handler(esp_http_client_event_handle_t evt)
{
switch (evt->event_id)
Expand All @@ -27,13 +53,18 @@ esp_err_t client_event_get_handler(esp_http_client_event_handle_t evt)
return ESP_OK;
}

/**
* @brief Tarea que consulta el estado del LED mediante una solicitud GET al servidor web.
*/
void lectura_estado_led_Task(void *pvParameters)
{
while (1)
{
char url[200]; // Asegúrate de que el tamaño del buffer sea suficiente
snprintf(url, sizeof(url),"http://%s/control/Proyecto_empotrados/php/variable.php", IP_SERVER);
// Get estado led
esp_http_client_config_t config_get = {
.url = "http://192.168.1.34/control/Proyecto_empotrados/php/variable.php",
.url = url,
.method = HTTP_METHOD_GET,
.cert_pem = NULL,
.event_handler = client_event_get_handler};
Expand All @@ -46,6 +77,9 @@ void lectura_estado_led_Task(void *pvParameters)
}
}

/**
* @brief Actualiza el estado del LED.
*/
esp_err_t actualizar_led(int *estado)
{

Expand All @@ -56,8 +90,11 @@ esp_err_t actualizar_led(int *estado)

//& FUNCIONES PARA MANEJAR LOS ENVIOS POST AL SERVIDOR WEB //

datosSensor http_medidas_var;


/**
* @brief Adquiere las medidas de temperatura y presión para su posterior envío al servidor.
*/
esp_err_t adq_medidas(datosSensor datos)
{

Expand All @@ -70,6 +107,9 @@ esp_err_t adq_medidas(datosSensor datos)
return ESP_OK;
}

/**
* @brief Maneja los eventos relacionados con el envío de datos de temperatura mediante una solicitud POST al servidor web.
*/
esp_err_t client_event_post_handler_temp(esp_http_client_event_handle_t evt)
{

Expand All @@ -87,6 +127,10 @@ esp_err_t client_event_post_handler_temp(esp_http_client_event_handle_t evt)
}
return ESP_OK;
}

/**
* @brief Maneja los eventos relacionados con el envío de datos de presión mediante una solicitud POST al servidor web.
*/
esp_err_t client_event_post_handler_pres(esp_http_client_event_handle_t evt)
{

Expand All @@ -106,6 +150,9 @@ esp_err_t client_event_post_handler_pres(esp_http_client_event_handle_t evt)
return ESP_OK;
}

/**
* @brief Tarea que envía periódicamente datos de temperatura y presión al servidor mediante solicitudes POST.
*/
void envio_datos_post_Task(void *pvParameters)
{

Expand All @@ -118,11 +165,11 @@ void envio_datos_post_Task(void *pvParameters)

// Temperatura
char url_temp[200]; // Asegúrate de que el tamaño del buffer sea suficiente
snprintf(url_temp, sizeof(url_temp), "http://192.168.1.34/control/Proyecto_empotrados/php/temperatura.php?temperatura=%.2f", temp_debug);
snprintf(url_temp, sizeof(url_temp), "http://%s/control/Proyecto_empotrados/php/temperatura.php?temperatura=%.2f", IP_SERVER, temp_debug);

// Presion
char url_pres[200]; // Asegúrate de que el tamaño del buffer sea suficiente
snprintf(url_pres, sizeof(url_pres), "http://192.168.1.34/control/Proyecto_empotrados/php/presion.php?presion=%.2f", pres_debug);
snprintf(url_pres, sizeof(url_pres), "http://%s/control/Proyecto_empotrados/php/presion.php?presion=%.2f",IP_SERVER, pres_debug);

//POST temperatura
esp_http_client_config_t config_post_temp = {
Expand All @@ -137,20 +184,5 @@ void envio_datos_post_Task(void *pvParameters)
esp_http_client_cleanup(client_temp);

vTaskDelay(pdMS_TO_TICKS(500));

//POST presion
esp_http_client_config_t config_post_pres = {
.url = url_pres,
.method = HTTP_METHOD_POST,
.cert_pem = NULL,
.event_handler = client_event_post_handler_pres};

esp_http_client_handle_t client_pres = esp_http_client_init(&config_post_pres);

esp_http_client_perform(client_pres);
esp_http_client_cleanup(client_pres);

vTaskDelay(pdMS_TO_TICKS(DELAY_POST_DATA));

}
}
132 changes: 109 additions & 23 deletions components/custom_HTTP_client/include/custom_HTTP_client.h
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
/*
* Nombre: David Martinez Henares
* Email: [email protected]
* Universidad: UPV-EHU
*
* Archivo: custom_HTTP_client.h
*
* Descripción:
*/

/**
* @file custom_HTTP_client.h
* @headerfile custom_HTTP_client.h
*
* @brief Cabecera para la librería custom_HTTP_client, que permite realizar conexiones HTTP GET y POST
* con un servidor web para intercambiar información de un LED y datos de temperatura y presión.
*
* Descripción:
* Este archivo contiene las funciones para el manejo de solicitudes GET y POST
* a un servidor web utilizando la librería custom_HTTP_client.
* Incluye funciones para manejar eventos relacionados con la recepción y envío de datos,
* así como tareas para consultar periódicamente el estado del LED y enviar datos de temperatura
* y presión al servidor mediante solicitudes HTTP.
* Además, define constantes y variables globales necesarias para el funcionamiento del programa.
*
* @authors: David Martinez Henares
* @email: [email protected]
* @universidad: UPV-EHU
*
* @defgroup wifi http
* @{
*
* ESP-IDF app
* @tipo:ESP-IDF app
*
*/

#ifndef CUSTOM_HTTTP_CLIENT_H
#define CUSTOM_HTTTP_CLIENT_H


#include <stdio.h>
#include <string.h>
#include "esp_http_client.h"
Expand All @@ -33,6 +36,7 @@
#include "sensorbmp280.h"
#include "driver/gpio.h"
#include "init_gpio.h"
#include "mydata_custom_HTTP_client.h"

#ifndef DELAY_LED_REQUEST
#define DELAY_LED_REQUEST 200
Expand All @@ -42,28 +46,110 @@
#define DELAY_POST_DATA 5000
#endif


extern datosSensor http_medidas_var;



#endif /* CUSTOM_HTTTP_CLIENT_H */

//$ FUNCIONES PARA MANEJAR LAS PETICIONES GET AL SERVIDOR WEB //

esp_err_t client_event_get_handler_temp(esp_http_client_event_handle_t evt);
esp_err_t client_event_get_handler_pres(esp_http_client_event_handle_t evt);

/**
* @brief Maneja los eventos relacionados con la recepción de datos en una solicitud GET al
* servidor web.
*
* ?@method: Se llama automaticamente desde
*
* Descripción:
* Esta función maneja los eventos recibidos durante una solicitud GET al servidor web.
* Actualiza el estado del LED basado en los datos recibidos.
*
* @param evt Puntero al evento HTTP.
*
* @return esp_err_t
*/
esp_err_t client_event_get_handler(esp_http_client_event_handle_t evt);

/**
* @brief Tarea que consulta el estado del LED mediante una solicitud GET al servidor web.
*
* ?@method: Se llama como tarea con xTaskCreatePinnedToCore()
*
* Descripción:
* Esta tarea realiza periódicamente una solicitud GET al servidor web para obtener el estado del LED.
* Utiliza la función client_event_get_handler para manejar la respuesta del servidor.
*/
void lectura_estado_led_Task(void *pvParameters);

/**
* @brief Actualiza el estado del LED.
*
* ?@method: actualizar_led(int *parametro)
*
* Descripción:
* Esta función actualiza el estado del LED basado en el valor recibido en la solicitud GET al servidor web.
*
* @param estado Puntero al estado del LED.
*
* @return esp_err_t
*/
esp_err_t actualizar_led(int *estado);


//& FUNCIONES PARA MANEJAR LOS ENVIOS POST AL SERVIDOR WEB //


/**
* @brief Adquiere las medidas de temperatura y presión para su posterior envío al servidor.
*
* ?@method: adq_medidas(datosSensor estrucutura) (pasamos una estrucutura de datos)
*
* Descripción:
* Esta función adquiere las medidas de temperatura y presión y las almacena en una estructura para su posterior envío al servidor.
*
* @param datos Estructura donde se almacenarán las medidas.
*
* @return esp_err_t
*/
esp_err_t adq_medidas(datosSensor datos);

esp_err_t client_event_post_handler(esp_http_client_event_handle_t evt);

/**
* @brief Maneja los eventos relacionados con el envío de datos de temperatura mediante una solicitud POST al servidor web.
*
* ?@method: manejador de eventos se lanza desde una peticion post
*
* Descripción:
* Esta función maneja los eventos recibidos durante una solicitud POST al servidor web para enviar datos de temperatura.
* Realiza acciones basadas en los eventos, como indicar el éxito del envío mediante el LED.
*
* @param evt Puntero al evento HTTP.
*
* @return esp_err_t
*/
esp_err_t client_event_post_handler_temp(esp_http_client_event_handle_t evt);

/**
* @brief Maneja los eventos relacionados con el envío de datos de presión mediante una solicitud POST al servidor web.
*
* ?@method: manejador de eventos se lanza desde una peticion post
*
* Descripción:
* Esta función maneja los eventos recibidos durante una solicitud POST al servidor web para enviar datos de presión.
* Realiza acciones basadas en los eventos, como indicar el éxito del envío mediante el LED.
*
* @param evt Puntero al evento HTTP.
*
* @return esp_err_t
*/
esp_err_t client_event_post_handler_pres(esp_http_client_event_handle_t evt);


/**
* @brief Tarea que envía periódicamente datos de temperatura y presión al servidor mediante solicitudes POST.
*
* ?@method: Se llama como tarea con xTaskCreatePinnedToCore()
*
* Descripción:
* Esta tarea se encarga de enviar periódicamente datos de temperatura y presión al servidor mediante solicitudes POST.
* Utiliza las funciones client_event_post_handler_temp y client_event_post_handler_pres para manejar la respuesta del servidor.
*/
void envio_datos_post_Task(void *pvParameters);
Loading

0 comments on commit 54c5107

Please sign in to comment.