Tecnologías y componentes principales
La arquitectura de la aplicación podría ser desarrollada con tecnologías como Spring Boot para el backend, JavaScript, HTML y CSS para el frontend, y bases de datos para el almacenamiento de datos.
El frontend será una interfaz interactiva desarrollada con HTML, CSS, y JavaScript. Utilizará AJAX para realizar peticiones al servidor sin necesidad de recargar la página. Los usuarios interactuarán a través de un navegador web, e ingresarán datos como la vestimenta, fototipo de piel y opcionalmente, la dieta que lleva.
Esta interfaz presentará información al usuario como la cantidad de vitamina D producida en ese día, el historial de exposición y las recomendaciones personalizadas a cada usuario.
El backend se desarrollará utilizando Spring Boot, un framework basado en Java que facilita la creación de aplicaciones web RESTful. Spring Boot manejará toda la lógica de la aplicación, incluyendo el cálculo de la vitamina D en función de la geolocalización, la radiación solar, consultando los datos necesarios a las APIs externas. También se encargará del registro de los datos del usuario en la base de datos y de la creación de endpoints REST que el frontend utilizará para enviar y recibir información.
El servidor gestionará la autenticación y autorización de los usuarios, y almacenará en la base de datos la información sobre el historial de exposición solar de cada usuario, el fototipo de piel, la dieta y las recomendaciones personales.
Se utilizará una base de datos como PostgreSQL o MySQL para almacenar los datos en la aplicación. Spring Boot facilitará este proceso a través de Spring Data, lo que permitirá realizar operaciones de manera eficiente.
La aplicación utilizará APIs de geolocalización como Google Maps API o Geolocation API para obtener la ubicación del usuario. Esta información será utilizada para calcular los niveles de radiación UV en función de la ubicación y hora del día. También se utilizarán APIs para obtener datos meteorológicos como la intensidad de radiación para obtener un cálculo más preciso de la vitamina D.
Funciones de los componentes
Funciones del frontend:
- Formulario de entrada de datos para registrar la vestimenta, fototipo y dieta.
- Interfaz de visualización para mostrar la cantidad de vitamina D producida, las recomendaciones de vestimenta y la radiación UV en tiempo real.
- Notificaciones de alertas en tiempo real para recomendar al usuario aplicar protector solar o ajustar su vestimenta según las condiciones del sol.
Funciones del backend:
- Gestiona la lógica de la aplicación y la interacción con las APIs externas.
- Calcula la vitamina D y almacena los datos del usuario en la base de datos.
La base de datos almacenará:
- Usuarios: Nombre, dirección de correo electrónico, preferencias notificación y otros datos personales.
- Exposición solar: Fecha, hora, duración y ubicación de cada exposición.
- Vestimenta: Registro de la ropa que el usuario lleva puesta durante la exposición.
- Historial de recomendaciones: Registro de las recomendaciones de vestimenta y protección solar dadas al usuario.
- Dieta: Registro de todas las comidas ingeridas diarias y semanales.
Flujo de datos y funcionamiento
- El usuario ingresa datos en el frontend como vestimenta, fototipo de piel y dieta.
- El frontend envía los datos del usuario al backend mediante una solicitud Rest.
- El backend consulta el historial de exposiciones solares y recomendaciones previas del usuario.
- El backend consulta las APIs externas como la API de geolocalización para obtener la ubicación y la API meteorológica para obtener datos de radiación UV.
- El backend realiza los cálculos de vitamina D y genera recomendaciones personalizadas.
- El backend envía la información al frontend, incluyendo la vitamina D, radiación UV y recomendaciones.
- El frontend muestra los resultados, recomendaciones y alertas al usuario.
- El backend actualiza los datos de exposición solar y recomendaciones en la base de datos.
Fuente: Iván Delgado Alcoebenda
7.2. Notificaciones automatizadas
Las notificaciones se gestionarán en el backend utilizando Spring Boot y un sistema de colas de mensajes o eventos programados, de esta manera el servidor notificará al frontend sin necesidad de que el usuario tenga que actualizar la página.
Utilizaremos Spring Scheduler para ejecutar tareas programadas, como enviar recordatorios periódicos o alertas de exposición solar. Las notificaciones pueden llegar a los usuarios a través del correo electrónico o mensajes dentro de la propia interfaz de la aplicación.
7.2.1. Registro de vestimenta
La vestimenta juega un papel clave en la protección solar, y al registrar qué ropa lleva puesta el usuario, el sistema puede calcular la efectividad de la protección contra la radiación UV.
Funcionamiento del registro de vestimenta
- En la interfaz del usuario se diseñará un formulario sencillo donde los usuarios ingresarán el tipo de ropa que están usando en ese momento. Este formulario incluirá campos de selección para diferentes categorías de vestimenta, por ejemplo, “Camisa de manga larga”, “Pantalones largos”, “Sombrero o gorra”, “Protección solar”, etc.
- Una vez el usuario ingresa su vestimenta, los datos serán enviados al backend mediante una solicitud POST que será manejada por Spring Boot. La información será almacenada en la base de datos utilizando la API (Java Persistence) para asegurar todos los datos.
- Con los datos de la vestimenta, el backend realizará los cálculos que determinen la cantidad de protección que ofrece la ropa del usuario. Esto puede hacerse utilizando tablas de factores de protección basados en estudios de protección UV. También se tendrá en cuenta el material, ya que se ha demostrado que una camisa de un material denso ofrecerá más protección que una camisa ligera de algodón.
- Una vez se haya registrado la vestimenta, el sistema podrá generar recomendaciones personalizadas sobre si el usuario debiera cubrirse más o si necesita aplicar protector solar adicional en función de los cálculos sobre la exposición solar realizados por el backend. Si el usuario se encuentra en una zona de alta radiación UV, se le enviará un mensaje de advertencia para que se ponga ropa que cubra las zonas expuestas o utilice protector solar.
7.2.2. Integración del reloj y sensor de luz
La integración de un reloj inteligente y sensores de luz es una de las piezas clave para obtener datos de la exposición solar con la mayor precisión posible, ya que estos pueden captar en tiempo real si el usuario se está exponiendo directamente a la luz. Si un usuario se encuentra en un punto geográfico donde las APIs registran que hay sol, pero el usuario está bajo la sombra, no se estaría calculando de forma óptima los niveles reales aproximados de síntesis de vitamina D.
Los relojes inteligentes como los de Apple o Fitbit pueden enviar información sobre la actividad física del usuario y su exposición al sol. Estos relojes son capaces de registrar la cantidad de tiempo que el usuario pasa al aire libre gracias a su sensor de luz y otras herramientas que permiten medir la frecuencia cardíaca, o los pasos dados. Sin embargo, estos sensores no miden la radiación UV directamente y no distinguen entre luz natural y luz solar.
La forma más eficiente de conectar un reloj inteligente con el backend de la aplicación es mediante una aplicación móvil intermedia. El reloj se vincula con la app instalada en el smartphone del usuario utilizando tecnología Bluetooth, lo que permite que el reloj recoja datos en tiempo real, como la exposición solar a través de su sensor de luz o UV.
Estos datos son transmitidos desde el reloj al móvil, y luego, la app móvil envía la información al backend usando una API REST. Esta solución mejora la fiabilidad de la transmisión de datos y reduce el consumo energético del reloj al delegar la comunicación continua al móvil. Además, esta arquitectura es compatible con la mayoría de los dispositivos disponibles en el mercado, lo que facilita la implementación real del sistema descrito en el proyecto.
Posible integración de sensores UV
Actualmente existen sensores compactos como el VEML6075 o el SI1145, que pueden medir la radiación ultravioleta en tiempo real y proporcionar datos más exactos sobre la exposición del usuario al sol. Si un reloj inteligente incorporase este tipo de sensor, podría detectar la intensidad real de la radiación UV para lograr una mayor precisión junto a los factores mencionados en puntos anteriores.
Para poder integrar un sensor de radiación UV en un reloj inteligente, debemos tener en cuenta varios aspectos importantes a la hora de instalarlo:
- Los sensores UV consumen energía y los relojes inteligentes son dispositivos pequeños con baterías limitadas. El sensor UV debe ser de bajo consumo energético para que no agote la batería rápidamente.
- El procesador del reloj tiene que ser capaz de procesar los datos del sensor UV y calcular cuánta radiación está recibiendo el usuario.
- Para que el backend sea capaz de procesar todos los datos y realizar cálculos precisos, necesitará que el reloj tenga conectividad con este.
Limitaciones de la integración
- El sensor debe estar expuesto a la luz solar directa. Si el usuario está bajo la sombra, usa mangas largas o el reloj está cubierto, los valores de la radiación no podrían indicar la radiación real que está recibiendo.
- Los sensores UV pueden requerir una cantidad de energía adicional, lo que podría reducir la autonomía del reloj.
Para compensar el gasto energético, el reloj tendría que incluir una pantalla con células fotovoltaicas integradas para aprovechar la luz solar para ampliar la duración de la batería como las Power Glass o las Garmin Instinct 2 Solar de la marca Garmin.
Hoy en día, no hay ningún reloj inteligente en el mercado que integre sensores específicos de radiación UV de manera estándar, por lo tanto, la implementación de estos sensores está en una fase experimental. Pese a esta situación, la integración de sensores UV es muy viable con el estudio realizado en este proyecto.
7.3. Flujo de trabajo con el reloj
Para que la aplicación funcione correctamente, se deberá seguir el siguiente flujo de trabajo, donde el reloj, el frontend, el backend con las APIs y el usuario, trabajan de forma integrada y coordinada:
- El usuario ingresa datos en el frontend como vestimenta, fototipo de piel y dieta.
- El frontend envía los datos del usuario al backend mediante una solicitud REST.
- El backend consulta el historial de exposiciones solares y recomendaciones previas del usuario en la base de datos.
- El backend consulta las APIs externas como la API de geolocalización para obtener la ubicación y la API meteorológica para obtener datos de radiación UV.
- El reloj inteligente vinculado con la aplicación móvil mide la radiación UV en tiempo real y envía los datos al móvil mediante Bluetooth.
- La aplicación móvil transmite esta información al backend a través de una API REST para ajustar los cálculos personalizados de síntesis de vitamina D.
- El backend integra los datos del reloj, las APIs externas y el historial del usuario para realizar los cálculos personalizados de síntesis de vitamina D.
- El backend genera recomendaciones personalizadas y envía los resultados al frontend, incluyendo los niveles de vitamina D, la radiación UV real y los avisos.
- El frontend muestra los resultados, recomendaciones y alertas sobre su exposición solar y estado de vitamina D.
- El backend actualiza los datos de exposición solar y recomendaciones en la base de datos.