# 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`)

```

```