4.8 KiB
4.8 KiB
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
- Abre
http://157.180.77.232:18080/(ohttp://localhost:8000/en dev). - Crea una cuenta.
- Ve a Ajustes → Dispositivos, crea tu DummyBot y guarda el token.
- Flashea el firmware (ver
firmware/README.md). - 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. - 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