# Monitor de Sistema Avanzado - TFG (Python/Tkinter) 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). ------------------------------------------------------------------------ ## 🔗 Enlaces al Video Explicativo **En Drive**: https://drive.google.com/file/d/1mqQ41Z2r3j3VkGJUgI2dmPMIH5i2lHNq/view?usp=sharing **En YouTube:** https://youtu.be/efW9_IRp9UY ------------------------------------------------------------------------ ## ✨ Características Destacadas - **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 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. ------------------------------------------------------------------------ ## 🖼️ Captura de Pantalla ![alt text](image.png) ------------------------------------------------------------------------ ## ⚙️ Instalación y Requisitos ### 1. Requisitos del Sistema - Python **3.8+** - Git - Compatible con **Windows**, **macOS** y **Linux** ### 2. Clonar el Repositorio ```bash git clone [https://git.ieslamar.org/luka/ProyectoPHP](https://git.ieslamar.org/luka/ProyectoPHP) ``` ### 3. Instalar Dependencias 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 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 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)`. --- ### `config.py` 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` 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 (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` Contiene toda la lógica de negocio secundaria de la aplicación, separada por bloques: #### Comunicaciones y Red (NUEVO) * `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. #### Registro y Utilidades * `log_event` / `bytes_a_human_readable` #### Alarmas y Música * `cargar_alarmas` / `guardar_alarmas` / `verificar_alarma` * `reproducir_mp3` / `detener_mp3` / `ajustar_volumen_alarma` #### Web Scraping y Archivos * `scrappear_pagina_principal` * Bloc de Notas local * Sistema de Backup (`backup_script.sh`) ``` ```