-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2b3ebf7
commit 54c5107
Showing
13 changed files
with
294 additions
and
121 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
|
@@ -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}; | ||
|
@@ -46,6 +77,9 @@ void lectura_estado_led_Task(void *pvParameters) | |
} | ||
} | ||
|
||
/** | ||
* @brief Actualiza el estado del LED. | ||
*/ | ||
esp_err_t actualizar_led(int *estado) | ||
{ | ||
|
||
|
@@ -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) | ||
{ | ||
|
||
|
@@ -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) | ||
{ | ||
|
||
|
@@ -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) | ||
{ | ||
|
||
|
@@ -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) | ||
{ | ||
|
||
|
@@ -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 = { | ||
|
@@ -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)); | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
|
@@ -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 | ||
|
@@ -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); |
Oops, something went wrong.