DummyBot - task manager ESP32 + Laravel
Go to file
2026-06-17 14:04:22 +02:00
backend-laravel@3a5da955a4 docs: actualizar README raíz con OLED y nueva arquitectura 2026-06-17 14:04:22 +02:00
firmware@9fb87a4d62 docs: actualizar README raíz con OLED y nueva arquitectura 2026-06-17 14:04:22 +02:00
README.md docs: actualizar README raíz con OLED y nueva arquitectura 2026-06-17 14:04:22 +02:00

DummyBot

Bot físico de tareas para personas con TDAH, basado en ESP32 + pantalla OLED SSD1306 128x64 (I2C) + 3 botones TTP223 + vibrador.

Las tareas se gestionan desde una mini-app web Laravel (dark mode, atajos de teclado, responsive). El ESP32 hace polling HTTP cada 30 s y vibra cuando llega una tarea nueva. Se configura por captive portal: abre un AP DummyBot-Setup con un formulario web.

Arquitectura

┌──────────────────┐    HTTP/JSON (Bearer token)    ┌──────────────────────┐
│  Navegador web   │ ◀───────────────────────────▶ │  Laravel + MySQL     │
│  (Tailwind+Alpine)│                               │  /api/auth           │
└──────────────────┘                                │  /api/tasks          │
                                                    │  /api/projects       │
                                                    │  /api/tags           │
                                                    │  /api/devices        │
                                                    │  /api/device/...     │
                                                    └──────────┬───────────┘
                                                               │ HTTP
                                                               │ (device token)
                                                    ┌──────────▼───────────┐
                                                    │  ESP32               │
                                                    │  OLED SSD1306 128x64│
                                                    │  3 botones TTP223    │
                                                    │  Vibrador            │
                                                    └──────────────────────┘

Estructura del proyecto

dummybot/
├── firmware/                # PlatformIO  ESP32 Arduino
│   ├── platformio.ini
│   ├── src/main.cpp         # Lógica principal (OLED + WiFi + portal)
│   ├── partitions.csv
│   └── README.md
└── backend-laravel/         # Laravel 12 (PHP 8.4, MySQL, Sanctum)
    ├── app/Models/Task.php
    ├── app/Models/Project.php
    ├── app/Models/Tag.php
    ├── app/Models/Device.php
    ├── app/Http/Controllers/Auth/  # AuthController, LoginController
    ├── app/Http/Controllers/Api/   # Project, Tag, Device
    ├── app/Http/Controllers/TaskController.php
    ├── app/Http/Controllers/PageController.php
    ├── app/Http/Middleware/AuthenticateDevice.php
    ├── database/migrations/
    ├── resources/views/pages/      # home, login, register, app, settings
    ├── resources/views/layouts/base.blade.php
    ├── routes/{web,api}.php
    ├── Dockerfile
    ├── docker-compose.yml
    └── nginx.conf

Endpoints clave (resumen)

Ver backend-laravel/README.md para detalle completo.

POST   /api/auth/register
POST   /api/auth/login
GET    /api/auth/me                  (auth)

GET    /api/tasks                    (auth)
POST   /api/tasks                    (auth)
POST   /api/tasks/{id}/done          (auth o device)
POST   /api/tasks/{id}/snooze        (auth o device)
GET    /api/tasks/stats              (auth)

GET    /api/projects                 (auth)
POST   /api/projects                 (auth)

GET    /api/tags                     (auth)
POST   /api/tags                     (auth)

GET    /api/devices                  (auth)
POST   /api/devices                  → devuelve token (solo 1 vez)

# Para el ESP32 (auth.device)
GET    /api/device/tasks/pending
POST   /api/device/heartbeat

Setup del usuario

  1. Abre http://157.180.77.232:18080/ (o http://localhost:8000/ en dev).
  2. Crea una cuenta.
  3. Ve a Ajustes → Dispositivos, crea tu DummyBot y guarda el token.
  4. Flashea el firmware (ver firmware/README.md).
  5. En el primer arranque, el ESP32 abre un AP DummyBot-Setup. Conéctate desde el móvil y configura WiFi + token desde el formulario web.
  6. Tras guardar, el bot se reinicia y se conecta solo.

Hardware

  • ESP32-D0WD-V3 (DevKitC / WROOM-32, 4 MB flash)
  • Pantalla OLED SSD1306 0.96" (128x64, I2C, 4 pines: GND/VDD/SCK/SDA)
  • 3× TTP223 (botones táctiles: Siguiente / Hecha / Snooze)
  • 1× motor vibrador 1027 (3V DC, controlado por MOSFET en GPIO 25)

Ver firmware/README.md para detalle completo de cableado.

Licencia

MIT