Skip to content

Repository files navigation

KTRMNL2 - Dashboard Híbrido (Tablet & TRMNL)

KTRMNL2 es un servidor personalizado (BYOS - Bring Your Own Server) diseñado originalmente para dispositivos de tinta electrónica TRMNL, pero evolucionado para funcionar también como un Dashboard Inteligente para Tablets y navegadores web.

Este proyecto permite reutilizar tablets antiguas o dispositivos móviles como pantallas de información "siempre encendidas", mostrando la hora, el clima local y frases motivacionales diarias.

🚀 Características Principales

📱 Modo Tablet / Navegador

  • Reloj en Tiempo Real: Actualización segundo a segundo sin recargar la página.
  • Auto-Refresco Inteligente: La página se recarga automáticamente cada 1 minuto para actualizar datos externos (clima, fecha).
  • Interfaz Adaptable: Diseño limpio y legible, ideal para dejar en una mesa o pared.
  • Frases Diarias: Muestra una frase de motivación diferente cada 24 horas.
  • Modos de Enfoque:
    • Modo Estudio: Temporizador Pomodoro (25 min) con overlay visual.
    • Modo Dormir: Reloj atenuado sobre fondo negro para la noche.
  • Pantalla Completa: Botón manual para activar el modo fullscreen.

📟 Modo TRMNL (E-Ink)

  • Generación de Imágenes: Renderiza la vista HTML a una imagen PNG optimizada (800x480) usando Puppeteer.
  • Anti-Caching: Headers HTTP configurados para asegurar que el dispositivo siempre reciba la imagen más reciente.
  • Bajo Consumo: Lógica de servidor optimizada para servir contenido estático cuando se solicita.

🌤️ Integraciones

  • Clima en Tiempo Real: Conexión con la API de Open-Meteo para obtener temperatura y condiciones climáticas.
    • Configurado actualmente para: Barquisimeto, Lara, Venezuela.
  • Criptomonedas:
    • Precios: Seguimiento en tiempo real de BTC, ETH y USDT vía CoinGecko.
    • Gráficas: Widget visual con historial de precios de 7 días (Sparkline) usando Chart.js.
  • Sistema de Frases: Base de datos local de frases inspiradoras que rotan diariamente.

🛠️ Tecnologías Utilizadas

  • Node.js: Entorno de ejecución del servidor.
  • Express: Framework web para manejar las rutas y la API.
  • EJS (Embedded JavaScript): Motor de plantillas para generar el HTML dinámico.
  • Chart.js: Librería para renderizar gráficas de criptomonedas en el cliente.
  • Puppeteer: Librería para controlar Chrome/Chromium y generar capturas de pantalla (para el modo TRMNL).
  • CSS3 / HTML5: Diseño y maquetación del dashboard.

📋 Requisitos Previos

  • Node.js (v16 o superior recomendado).
  • NPM (Gestor de paquetes de Node).
  • Conexión a Internet (para obtener datos del clima).

🔧 Instalación

  1. Clonar o descargar el repositorio:

    git clone <url-del-repo>
    cd KTRMNL2
  2. Instalar dependencias:

    npm install
  3. Configurar entorno (Opcional): Puedes crear un archivo .env si necesitas cambiar el puerto (por defecto 3000).

    PORT=3000

▶️ Ejecución

Para iniciar el servidor en modo desarrollo (con reinicio automático si usas nodemon):

npm run dev

O para producción:

npm start

El servidor iniciará en: http://localhost:3000

📖 Uso

1. En una Tablet / PC (Modo Interactivo)

Abre el navegador de tu tablet y navega a la IP de tu PC donde corre el servidor:

http://<TU-IP-LOCAL>:3000/dashboard

Ejemplo: http://192.168.1.50:3000/dashboard

2. En un Dispositivo TRMNL (Modo Imagen)

Configura tu dispositivo TRMNL para apuntar a la API de visualización:

http://<TU-IP-PUBLICO-O-TUNEL>:3000/api/display

Esto devolverá el JSON de configuración que instruye al dispositivo a descargar la imagen renderizada.

⚙️ Configuración Personalizada

Modo Sin Base de Datos (solo APIs externas)

Si no quieres guardar nada en KV/JSON y prefieres que los widgets se alimenten desde Internet, activa este modo en tu .env:

REMOTE_WIDGETS_ONLY=1
WIDGET_LAYOUT_API_URL=https://tu-api.com/layout
REMINDER_API_URL=https://api.adviceslip.com/advice

Comportamiento en este modo:

  • layout se toma desde WIDGET_LAYOUT_API_URL (si no existe, usa un layout por defecto en memoria).
  • reminder se toma desde REMINDER_API_URL.
  • /admin, /api/layout y /api/data quedan deshabilitados.
  • No se usa almacenamiento local ni Vercel KV.

Formato esperado para layout remoto:

{
    "widgets": [
        { "id": "w1", "type": "date", "title": "FECHA" },
        { "id": "w2", "type": "weather", "title": "CLIMA" },
        { "id": "w3", "type": "crypto", "title": "CRIPTOS" },
        { "id": "w4", "type": "reminder", "title": "RECORDATORIO" }
    ]
}

Tipos válidos: date, weather, crypto, crypto_chart, reminder.

Cambiar Ubicación del Clima

Editar el archivo src/server.js y buscar la función getWeatherData. Modificar las variables lat y lon:

// Coordenadas para tu ciudad
const lat = 10.0678; 
const lon = -69.3474;

Modificar Frases

Editar el array quotes en la función getMotivation dentro de src/server.js.

📂 Estructura del Proyecto

KTRMNL2/
├── config/             # Archivos de configuración (layout, data)
├── public/             # Archivos estáticos
├── src/
│   ├── server.js       # Punto de entrada y lógica del servidor
│   └── renderer.js     # Lógica de Puppeteer para capturas
├── views/              # Plantillas EJS
│   ├── dashboard.ejs   # Vista principal
│   └── widgets/        # Componentes (reloj, clima, fecha)
├── package.json        # Dependencias y scripts
└── README.md           # Documentación

⚖️ Propósito y Aviso Legal

Este proyecto es una iniciativa independiente de código abierto y no tiene ninguna intención de plagiar, competir ni menoscabar la tecnología original de TRMNL. No promuevo ninguna actividad ilegal ni la elusión de sistemas propietarios.

Mi misión es puramente ecológica y educativa: buscamos ofrecer una solución de software para reutilizar hardware antiguo (tablets, móviles viejos) que ha quedado obsoleto para el uso diario, dándoles una segunda vida útil como dashboards informativos. Respetamos y admiramos la innovación del producto original y animamos a quienes puedan a adquirir el hardware oficial.

👤 Autor

Desarrollado por Kenner Cadenas.

About

Crea tu entorno de Widgets en cualquier dispostivo que ya no uses 📲

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages