diff --git a/README.md b/README.md index 76391a0..a18c692 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,15 @@ -# Monitor de Sistema Avanzado (Python/Tkinter) +Tienes toda la razón, fallo mío al delimitar el bloque de código. Aquí tienes el contenido íntegro y limpio, exactamente como debe ir, listo para que le des a copiar y pegar directamente en tu archivo `README.md`: -Aplicación de escritorio multiplataforma para el monitoreo en tiempo -real de recursos del sistema (CPU, Memoria, Red, Disco), complementada -con funciones avanzadas como administración de procesos, alarmas -programables, web scraping y utilidades adicionales (Juego, Música, -Notas, Backup). +```markdown +# Monitor de Sistema Avanzado - TFG (Python/Tkinter) -Desarrollada en **Python 3.x** usando **tkinter**, junto con librerías -especializadas como **psutil** y **matplotlib**. +Aplicación de escritorio multiplataforma orientada al monitoreo en tiempo real de recursos del sistema (CPU, Memoria, Red, Disco), complementada con herramientas de red avanzadas y utilidades integradas. + +Desarrollada en **Python 3.x** usando **tkinter** con una interfaz moderna (fuentes personalizadas y temas `ttk`), junto con librerías especializadas como **psutil** y **matplotlib**, y comunicaciones por red (Sockets, SMTP, IMAP). ------------------------------------------------------------------------ -## Enlace al Video Explicativo +## 🔗 Enlaces al Video Explicativo **En Drive**: https://drive.google.com/file/d/1mqQ41Z2r3j3VkGJUgI2dmPMIH5i2lHNq/view?usp=sharing @@ -20,22 +18,19 @@ https://youtu.be/efW9_IRp9UY ------------------------------------------------------------------------ - ## ✨ Características Destacadas -- **Gráficos en Tiempo Real:** CPU (total y cores), memoria, disco y - red. -- **Gestión de Procesos:** Vista detallada, con opción de finalización - segura en segundo plano. -- **Alarmas Inteligentes:** Por hora o por umbrales de recursos (ej. - alerta por CPU \> 90%). -- **Web Scraping Integrado:** Extracción por selectores CSS usando - *requests* + *BeautifulSoup*. +- **Gráficos en Tiempo Real:** Monitorización de CPU (total y cores), memoria, E/S de disco y tráfico de red. +- **Gestión de Procesos:** Vista detallada de procesos activos, con opción de finalización segura en segundo plano. +- **Chat Local Multipípedo (IPC):** Sistema de comunicación entre múltiples procesos/ventanas de la aplicación en el mismo equipo, usando *sockets* locales (puerto 54321) y lectura concurrente de archivos compartidos. +- **Cliente de Correo Electrónico:** Gestor interno con inicio de sesión seguro, envío de correos vía **SMTP** (tolerante a Relay abierto) y lectura de la bandeja de entrada sincronizada mediante **IMAP**. +- **Web Scraping Integrado:** Extracción inteligente de datos por selectores CSS usando *requests* + *BeautifulSoup*, con soporte para cargar configuraciones vía JSON. +- **Alarmas Inteligentes:** Programación de alarmas por hora con reproducción de sonido personalizado. - **Utilidades Extra:** - - Reproductor de audio (pygame) - - Bloc de Notas - - Juego "Carrera de Camellos" - - Sistema de Backup automático + - Reproductor de audio integrado (`pygame`). + - Bloc de Notas local. + - Simulación de Juego "Carrera de Camellos" (Thread-Safe). + - Sistema automático de Backup en `.zip` vía script Bash. ------------------------------------------------------------------------ @@ -55,97 +50,106 @@ https://youtu.be/efW9_IRp9UY ### 2. Clonar el Repositorio -``` bash -git clone https://git.ieslamar.org/luka/ProyectoPHP +```bash +git clone [https://git.ieslamar.org/luka/ProyectoPHP](https://git.ieslamar.org/luka/ProyectoPHP) + ``` ### 3. Instalar Dependencias -``` bash +El sistema utiliza varias librerías de la biblioteca estándar (como `socket`, `smtplib`, `imaplib`, `threading`), pero requiere las siguientes dependencias externas: + +```bash pip install psutil matplotlib numpy pygame requests beautifulsoup4 + ``` -**Librería \| Propósito** - `psutil` -- Métricas del sistema (CPU, RAM, -Procesos...) - `matplotlib` + `numpy` -- Renderizado de gráficos en -tiempo real - `pygame` -- Música y sonidos de alarma - `requests` + -`bs4` -- Web Scraping por selectores CSS +**Librería | Propósito** - `psutil` -- Métricas del sistema (CPU, RAM, Procesos Zombi...) + +* `matplotlib` + `numpy` -- Renderizado de gráficos en tiempo real +* `pygame` -- Música y sonidos de alarma +* `requests` + `bs4` -- Web Scraping por selectores CSS ### 4. Ejecutar la Aplicación -``` bash +```bash python proyecto.py + ``` ------------------------------------------------------------------------- +--- ## 📁 Estructura del Proyecto ### `proyecto.py` -- Punto de entrada de la aplicación. -- Inicializa la ventana (`tk.Tk()`) y construye la UI mediante - `ui_layout.crear_ui_completa(root)`. +* Punto de entrada de la aplicación. +* Inicializa la ventana (`tk.Tk()`) y construye la UI mediante `ui_layout.crear_ui_completa(root)`. ------------------------------------------------------------------------- +--- ### `config.py` -Incluye: - Rutas importantes\ -- Buffers de datos\ -- Flags de control\ -- Widgets compartidos +Archivo central de configuración que incluye: ------------------------------------------------------------------------- +* Rutas importantes y variables globales. +* Buffers de datos para gráficos. +* Credenciales y configuración de red (IPs de servidor de correo, puertos SMTP/IMAP). +* Flags de control de estado e hilos. + +--- ### `ui_layout.py` -Construye: - Menú superior\ -- Panel lateral\ -- Área de gráficos\ -- Pestañas funcionales +Motor visual de la aplicación. Construye: ------------------------------------------------------------------------- +* Menú superior y panel lateral de estado. +* Área de gráficos renderizada con Matplotlib. +* Pestañas funcionales (Monitor, Alarmas, Notas, Scraping, Juegos, Música, **Chat Local** y **Correo**). +* Aplica el tema moderno (`clam`) y gestiona las tipografías (*Marko One*, *Trirong*, *Nunito*). + +--- ### `monitor_manager.py` - Función Descripción - ------------------------------ ------------------------------------ - `actualizar_resumen_lateral` Datos generales + recursos rápidos - `actualizar_datos_graficos` Obtiene métricas desde psutil - `actualizar_graficos` Renderiza de nuevo los gráficos - `guardar_registro_csv` Escribe métricas en archivo CSV - `mostrar_procesos` Lista los procesos activos - `terminar_proceso` Finaliza procesos de forma segura +Función | Descripción +------------------------------ | ------------------------------------ +`actualizar_resumen_lateral` | Datos generales (OS, Uptime) +`actualizar_metricas` | Obtiene métricas desde psutil en un hilo +`dibujar_graficos` | Renderiza y actualiza los *subplots* +`manejar_registro_csv` | Escribe métricas en archivo CSV +`actualizar_process_treeview` | Lista los procesos activos +`terminar_proceso` | Finaliza procesos de forma segura ------------------------------------------------------------------------- +--- ### `system_utils.py` -Incluye: +Contiene toda la lógica de negocio secundaria de la aplicación, separada por bloques: -#### Registro +#### Comunicaciones y Red (NUEVO) -- `log_event`\ -- `bytes_a_human_readable` +* `inicializar_chat()`: Controla instancias por sockets para vaciar el historial. +* `enviar_mensaje_chat()` / `monitor_chat_file()`: Lógica del chat (IPC). +* `comprobar_login_correo()`: Validación inicial de credenciales. +* `enviar_correo()`: Lógica SMTP con bypass de errores 535 en red local. +* `cargar_correos()`: Lógica IMAP segura con limpieza de conexión. -#### Alarmas +#### Registro y Utilidades -- `cargar_alarmas` / `guardar_alarmas` -- `comprobar_alarmas` +* `log_event` / `bytes_a_human_readable` -#### Web Scraping +#### Alarmas y Música -- `iniciar_scraping` -- `scraping_logica_web` +* `cargar_alarmas` / `guardar_alarmas` / `verificar_alarma` +* `reproducir_mp3` / `detener_mp3` / `ajustar_volumen_alarma` -#### Música +#### Web Scraping y Archivos -- `reproducir_mp3` -- `detener_mp3` -- `ajustar_volumen_mp3` +* `scrappear_pagina_principal` +* Bloc de Notas local +* Sistema de Backup (`backup_script.sh`) -#### Extras +``` -- Juego "Carrera de Camellos" -- Bloc de Notas -- Sistema de Backup (`backup_script.sh`) \ No newline at end of file +``` \ No newline at end of file