Constitución de ESP Platform
ESP Platform
Constitución del Proyecto
Documento maestro
Versión: 1.0
Introducción
Bienvenido a la Constitución de ESP Platform.
Este documento constituye la referencia arquitectónica oficial del proyecto.
Su finalidad es proporcionar una visión completa del sistema antes de comenzar cualquier implementación, garantizando que todas las decisiones técnicas respeten una arquitectura común y puedan evolucionar sin perder coherencia.
La Constitución está formada por veinte especificaciones (SPEC) que describen la filosofía del proyecto, su arquitectura, los estándares de desarrollo y el Roadmap de evolución.
Todas las implementaciones realizadas por desarrolladores humanos o agentes de inteligencia artificial deberán respetar las decisiones recogidas en este documento.
Cuando sea necesario modificar la arquitectura, dichas modificaciones deberán aprobarse explícitamente y documentarse mediante un ADR (Architecture Decision Record).
Cómo utilizar este documento
Las SPEC deben leerse en orden.
Cada una desarrolla un aspecto concreto de la plataforma y complementa a las anteriores.
No constituyen documentos independientes, sino capítulos de una misma arquitectura.
Índice
Arquitectura
- SPEC-001 — Filosofía y Visión
- SPEC-002 — Arquitectura Global
- SPEC-003 — Aeizoon Edge Platform
- SPEC-004 — Edge OS
- SPEC-005 — Backend Central
Infraestructura de dispositivos
- SPEC-006 — Flasher Web
- SPEC-007 — OTA y Rollback
- SPEC-008 — Recovery
- SPEC-009 — Provisioning y QR
- SPEC-010 — Fleet Management
Plataforma
- SPEC-011 — Seguridad
- SPEC-012 — Modelo SaaS
- SPEC-013 — Modelo de Datos
- SPEC-014 — APIs
Desarrollo
- SPEC-015 — Estándares de Desarrollo
- SPEC-016 — Estándares UI/UX
- SPEC-017 — Convenciones de Nomenclatura
- SPEC-018 — Architecture Decision Records (ADR)
- SPEC-019 — Normas para Codex
- SPEC-020 — Roadmap
Estado del documento
Documento: ESP_PLATFORM_ARCHITECTURE_v1.0.md
Versión: 1.0
Estado: Aprobado
Número de SPEC: 20
Número de ADR: 0
Fecha de creación: julio de 2026
Responsable de arquitectura:
Juan Antonio
Arquitectura:
ESP Platform
Estado del proyecto:
Fase de implementación.
SPEC-001 — Filosofía y Visión de ESP Platform
Documento: SPEC-001
Título: Filosofía y Visión
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define la filosofía, visión y principios generales de ESP Platform.
Su función es dar contexto a Codex y a cualquier desarrollador que participe en el proyecto, evitando que las primeras implementaciones se conviertan en soluciones aisladas sin coherencia futura.
ESP Platform debe desarrollarse como una plataforma reutilizable, no como una colección de firmwares independientes.
2. Visión
ESP Platform nace inicialmente para cubrir necesidades propias de domótica, automatización, monitorización y control.
Sin embargo, desde el primer día se diseñará con mentalidad de producto profesional, de forma que pueda evolucionar en el futuro hacia:
- uso doméstico avanzado;
- instalaciones profesionales;
- aplicaciones industriales ligeras;
- producto comercial;
- backend multiinstalación;
- posible modelo SaaS.
El objetivo inicial no es construir una empresa ni una plataforma completa desde el primer día.
El objetivo inmediato es construir una base técnica correcta que permita validar el concepto y crecer sin rehacerlo todo.
3. Misión
La misión de ESP Platform es permitir crear dispositivos basados inicialmente en ESP32 que compartan:
- arquitectura común;
- sistema de configuración;
- sistema de actualización;
- modelo de comunicaciones;
- backend;
- experiencia de usuario;
- herramientas de desarrollo;
- gestión centralizada futura.
Cada nuevo dispositivo deberá aprovechar el trabajo ya realizado en los anteriores.
4. Qué NO es ESP Platform
ESP Platform no es:
- un sketch suelto de Arduino;
- un firmware único para un ESP32;
- una web aislada para flashear dispositivos;
- una colección de pruebas;
- un simple servidor MQTT;
- un backend sin relación con el firmware;
- una solución cerrada solo para AZ-TEMP.
La web de flasheo, los firmwares, el backend, el OTA y las aplicaciones son piezas de un sistema mayor.
5. Componentes principales
ESP Platform se organizará en los siguientes bloques.
5.1 Edge OS
Base común que residirá en los dispositivos.
Deberá proporcionar servicios reutilizables como:
- red;
- configuración persistente;
- almacenamiento;
- OTA;
- rollback;
- recovery;
- MQTT;
- Modbus;
- web local;
- API local;
- logs;
- diagnóstico;
- seguridad;
- provisioning.
5.2 Aplicaciones
Cada aplicación añadirá lógica específica sobre Edge OS.
Aplicaciones previstas:
AZ-TEMP
Dispositivo para adquisición de temperaturas.
Funciones previstas:
- sondas DS18B20;
- nombres configurables;
- calibración;
- MQTT;
- Modbus TCP;
- API REST;
- alarmas futuras.
AZ-POWER
Pasarela para medidores de energía.
Funciones previstas:
- RS485;
- Modbus RTU Master;
- lectura de analizadores eléctricos;
- publicación MQTT;
- integración con backend, Node-RED y Grafana.
AZ-NFC
Dispositivo para identificación y control mediante NFC.
Funciones previstas:
- lectura de tarjetas;
- identificación de usuarios;
- control de accesos;
- automatización;
- integración con backend.
AZ-IO
Módulo de entradas y salidas.
Funciones previstas:
- entradas digitales;
- salidas digitales;
- entradas analógicas;
- salidas analógicas;
- contadores;
- integración con automatización.
AZ-RELAY
Módulo de relés y actuadores.
Funciones previstas:
- control de relés;
- contactores;
- escenas;
- temporizaciones;
- maniobras;
- control remoto.
5.3 Plataforma central
Backend previsto en:
iot.aeizoon.com
Funciones futuras:
- inventario de dispositivos;
- catálogo de firmwares;
- flasher web;
- OTA centralizada;
- provisioning;
- QR de alta;
- usuarios;
- logs;
- fleet management;
- API;
- posible SaaS.
5.4 Herramientas de desarrollo
El desarrollo deberá apoyarse en:
- Codex CLI;
- PlatformIO;
- ESP-IDF;
- Git;
- VM Debian;
- systemd;
- PostgreSQL;
- Nginx.
6. Principios básicos
6.1 Primero validar, después ampliar
La plataforma debe crecer por fases.
El primer objetivo práctico será validar:
- VM funcional.
- Web de flasheo.
- Subida de un
.bin. - Flasheo de un ESP32 vacío por USB desde navegador.
No se deberá implementar el sistema completo antes de validar este flujo básico.
6.2 Arquitectura común
Toda pieza nueva deberá diseñarse pensando en su reutilización futura.
Si una funcionalidad puede servir para varios dispositivos, deberá considerarse parte de la plataforma común.
6.3 Configuración separada del firmware
La configuración no debe perderse al actualizar firmware.
El firmware será reemplazable.
La configuración deberá persistir.
6.4 OTA segura
Las actualizaciones futuras deberán diseñarse con:
- doble partición;
- rollback;
- comprobación de integridad;
- recovery.
6.5 Web local en dispositivos
Los dispositivos deberán tener una web interna para:
- configuración;
- diagnóstico;
- estado;
- OTA local;
- mantenimiento.
6.6 Backend como centro de gestión
El backend no debe ser una simple web auxiliar.
Debe evolucionar hacia el centro de gestión de la plataforma.
6.7 Experiencia de producto
Aunque el proyecto nazca para uso propio, la experiencia debe parecer la de un producto cuidado:
- instalación sencilla;
- interfaz clara;
- nombres consistentes;
- mensajes comprensibles;
- flujos guiados;
- posibilidad de QR;
- recuperación ante errores.
6.8 No sobredimensionar antes del MVP
La visión comercial no debe bloquear la validación técnica.
Primero debe funcionar el flujo mínimo.
Después se ampliará.
7. Relación con Codex
Codex actuará como implementador técnico.
Debe recibir esta documentación para entender:
- el objetivo global;
- las fases;
- las restricciones;
- el estilo arquitectónico;
- lo que debe evitar.
Codex no deberá convertir una fase concreta en una solución cerrada que impida el crecimiento futuro.
Tampoco deberá intentar construir toda la plataforma de golpe.
Debe implementar exactamente la fase solicitada, dejando la estructura preparada para las siguientes.
8. Criterio de éxito inicial
El primer éxito real del proyecto será:
Entrar en iot.aeizoon.com o en la IP interna de la VM,
subir un firmware .bin,
conectar un ESP32 vacío por USB,
seleccionar el firmware,
flashear el dispositivo desde el navegador
y comprobar que arranca.
Hasta conseguir ese resultado, todo lo demás es secundario.
9. Criterio de éxito futuro
ESP Platform será considerada madura cuando sea posible crear nuevos dispositivos reutilizando la misma base:
Edge OS
+
aplicación específica
+
backend común
+
OTA
+
provisioning
+
fleet management
El objetivo final es que desarrollar un nuevo producto no implique volver a resolver desde cero:
- configuración;
- comunicaciones;
- OTA;
- recuperación;
- flasheo;
- backend;
- UX.
10. Regla fundamental
La documentación debe servir al proyecto.
El proyecto no debe quedar bloqueado por la documentación.
Esta Constitución existe para dar dirección a Codex y evitar contradicciones, no para retrasar indefinidamente la implementación.
11. Estado documental
Estado: Pendiente de aprobación
Dependencias: Ninguna
Desarrolla: Visión general del proyecto
Implementación: No aplica directamente
SPEC-002 — Arquitectura Global de ESP Platform
Documento: SPEC-002
Título: Arquitectura Global
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define la arquitectura general de ESP Platform.
Mientras la SPEC-001 explica la filosofía del proyecto, esta especificación describe cómo se organiza la plataforma y cómo se relacionan sus componentes.
No entra en el detalle interno de cada componente; dicho detalle se desarrolla en las especificaciones posteriores.
2. Objetivo de la arquitectura
La arquitectura debe permitir desarrollar múltiples dispositivos reutilizando una infraestructura común.
Cada nuevo dispositivo deberá implementar únicamente su lógica específica.
Todo aquello que pueda compartirse entre varios dispositivos deberá formar parte de la plataforma.
El crecimiento del proyecto deberá producirse mediante la incorporación de nuevos módulos y aplicaciones, evitando duplicar funcionalidades ya existentes.
3. Visión global
La plataforma se divide en cinco grandes bloques.
ESP Platform
│
┌──────────────┬────────────┴────────────┬──────────────┐
│ │ │ │
│ │ │ │
Desarrollo Plataforma Edge Backend Central Usuario
│ │ │ │
│ │ │ │
PlatformIO Edge OS iot.aeizoon.com Navegador
ESP-IDF Aplicaciones PostgreSQL App móvil (futuro)
Codex CLI Web Local OTA API
Git MQTT Fleet QR
Modbus Firmware
Cada bloque tiene responsabilidades claramente definidas.
4. Componentes de la plataforma
La plataforma se compone de cuatro niveles principales.
Nivel 1 — Desarrollo
Conjunto de herramientas utilizadas para crear el software.
Incluye:
- Codex CLI
- PlatformIO
- ESP-IDF
- Git
- Máquina Virtual de desarrollo
- Sistema de compilación
- Publicación de firmware
Estas herramientas no forman parte del producto final, pero sí del ecosistema de desarrollo.
Nivel 2 — Plataforma Edge
Corresponde al software residente en cada dispositivo.
Está formado por:
- Edge OS
- Aplicación instalada
El dispositivo deberá ser completamente autónomo para realizar sus funciones principales.
El backend no deberá ser imprescindible para el funcionamiento normal.
Nivel 3 — Backend
Corresponde al servidor central.
Inicialmente estará instalado en una VM Debian.
Funciones previstas:
- gestión de firmware
- flasher web
- OTA
- inventario
- dispositivos
- usuarios
- logs
- provisioning
- Fleet Management
- API
Nivel 4 — Usuario
Es la capa de interacción.
Inicialmente estará formada por una aplicación web.
En el futuro podrán existir aplicaciones móviles utilizando las mismas APIs.
5. Separación de responsabilidades
Cada bloque tiene responsabilidades exclusivas.
Desarrollo
Responsable de crear el software.
Nunca participa en la ejecución normal del sistema.
Edge
Responsable de:
- adquisición de datos
- control
- automatización local
- comunicaciones
- diagnóstico
Debe seguir funcionando aunque el backend esté fuera de servicio.
Backend
Responsable de:
- administración
- inventario
- actualizaciones
- almacenamiento histórico
- configuración global
- gestión de usuarios
No debe asumir funciones críticas de tiempo real que pertenezcan al Edge.
Usuario
Responsable únicamente de interactuar con el sistema.
No debe contener lógica de negocio.
6. Principios arquitectónicos
La arquitectura de ESP Platform se basa en los siguientes principios.
6.1 Independencia
Cada componente deberá poder evolucionar con el mínimo impacto sobre los demás.
6.2 Modularidad
Cada módulo tendrá una responsabilidad única.
Los módulos se comunicarán mediante interfaces claramente definidas.
6.3 Escalabilidad
La plataforma deberá crecer añadiendo componentes, no modificando los existentes.
6.4 Reutilización
Siempre que una funcionalidad pueda reutilizarse por más de una aplicación deberá incorporarse al núcleo común.
6.5 Baja dependencia
La comunicación entre módulos deberá minimizar el acoplamiento.
Las dependencias cruzadas deberán evitarse.
7. Flujo general de funcionamiento
El funcionamiento habitual será el siguiente.
Usuario
│
│ Navegador
▼
Backend
│
├───────────── OTA
│
├───────────── API
│
├───────────── Inventario
│
▼
Dispositivo
│
├──────── MQTT
├──────── Modbus
├──────── API Local
├──────── Web Local
└──────── Hardware
8. Flujo de desarrollo
El desarrollo de una nueva aplicación seguirá el siguiente proceso.
Arquitectura
│
▼
Codex
│
▼
PlatformIO
│
▼
Compilación
│
▼
Firmware (.bin)
│
▼
Repositorio Firmware
│
▼
Flasher Web
│
▼
ESP32
En el futuro:
Repositorio Firmware
↓
OTA
↓
Dispositivos en producción
9. Arquitectura del dispositivo
Cada dispositivo seguirá siempre el mismo esquema.
+--------------------------------------+
| Aplicación |
| (AZ-TEMP / POWER / NFC / ...) |
+--------------------------------------+
| Edge OS |
|--------------------------------------|
| Configuración |
| MQTT |
| Modbus |
| OTA |
| Recovery |
| Logging |
| Seguridad |
| Web |
| API |
+--------------------------------------+
| ESP-IDF |
+--------------------------------------+
| Hardware |
+--------------------------------------+
Esto garantiza que todas las aplicaciones compartan la misma infraestructura.
10. Arquitectura del backend
El backend estará formado por módulos independientes.
Inicialmente:
Frontend Web
↓
API
↓
Servicios
↓
PostgreSQL
↓
Repositorio Firmware
Cada módulo deberá poder evolucionar de forma independiente.
11. Arquitectura de comunicaciones
Inicialmente coexistirán cuatro canales principales.
HTTP / HTTPS
Administración.
MQTT
Eventos.
Telemetría.
Mensajería.
Modbus TCP
Integración industrial.
USB
Flasheo inicial.
En el futuro podrán añadirse nuevos protocolos sin modificar la arquitectura principal.
12. Escalabilidad prevista
La arquitectura debe permitir evolucionar desde:
1 ESP32
hasta:
Centenares de dispositivos
sin modificar la estructura fundamental del sistema.
La escalabilidad deberá obtenerse añadiendo nuevos módulos, nunca rediseñando los existentes.
13. Relación con las siguientes SPEC
Esta especificación actúa como mapa general.
Las siguientes especificaciones desarrollarán cada componente.
- SPEC-003 → Aeizoon Edge Platform
- SPEC-004 → Edge OS
- SPEC-005 → Backend
- SPEC-006 → Flasher Web
- SPEC-007 → OTA
- SPEC-008 → Recovery
- SPEC-009 → Provisioning
- SPEC-010 → Fleet Management
- ...
No deberán redefinir esta arquitectura, sino ampliarla.
14. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
Desarrolla:
- Arquitectura general de ESP Platform
Implementación:
- Será utilizada como referencia durante todas las fases del desarrollo.
SPEC-003 — Aeizoon Edge Platform
Documento: SPEC-003
Título: Aeizoon Edge Platform (AEP)
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define Aeizoon Edge Platform (AEP), el núcleo conceptual sobre el que se desarrollarán todos los dispositivos de ESP Platform.
Su finalidad es evitar que cada nuevo firmware vuelva a implementar servicios comunes y garantizar una arquitectura uniforme en todos los dispositivos.
Todas las aplicaciones deberán ejecutarse sobre AEP.
2. Definición
Aeizoon Edge Platform (AEP) es la plataforma software residente en cada dispositivo Edge.
No es una aplicación.
No es un firmware específico.
No depende de AZ-TEMP ni de ninguna otra aplicación.
AEP proporciona servicios comunes para que cualquier aplicación pueda centrarse exclusivamente en su lógica funcional.
Puede entenderse como la infraestructura común de todos los dispositivos.
3. Objetivos
AEP debe conseguir que desarrollar un nuevo dispositivo consista únicamente en implementar la lógica específica del producto.
Todo lo demás deberá existir previamente dentro de la plataforma.
Los principales objetivos son:
- reutilización;
- modularidad;
- mantenimiento sencillo;
- evolución controlada;
- comportamiento homogéneo;
- reducción del tiempo de desarrollo.
4. Responsabilidades
AEP será responsable de todos aquellos servicios que puedan ser utilizados por más de una aplicación.
Entre ellos:
- gestión de red;
- configuración;
- almacenamiento persistente;
- servidor web;
- API local;
- autenticación;
- MQTT;
- Modbus TCP;
- OTA;
- rollback;
- recovery;
- logging;
- diagnóstico;
- identificación del dispositivo;
- información de versión;
- gestión de usuarios locales (si aplica);
- monitorización interna.
Las aplicaciones no deberán implementar nuevamente estas capacidades.
5. Qué NO pertenece a AEP
Las siguientes funciones pertenecen exclusivamente a las aplicaciones.
Ejemplos:
AZ-TEMP
- lectura de temperatura;
- calibración de sondas;
- alarmas de temperatura.
AZ-POWER
- lectura de medidores;
- interpretación de registros Modbus;
- cálculo energético.
AZ-NFC
- lectura NFC;
- gestión de tarjetas;
- identificación de usuarios.
AZ-IO
- lógica de entradas y salidas.
AZ-RELAY
- control de relés;
- temporizaciones;
- escenas.
AEP únicamente proporciona la infraestructura necesaria para que estas aplicaciones funcionen.
6. Organización interna
Conceptualmente AEP estará organizado mediante servicios.
Aplicación
│
┌────────────────────┼────────────────────┐
│ │ │
Configuración Comunicaciones Servicios internos
│ │ │
MQTT Web Local OTA
Modbus API REST Recovery
WiFi Logging Seguridad
Ethernet Diagnóstico Storage
│
ESP-IDF
Cada servicio deberá tener una responsabilidad claramente definida.
7. Independencia de servicios
Siempre que resulte razonable, los servicios deberán poder evolucionar de forma independiente.
Por ejemplo:
Una mejora en OTA no debería requerir modificar el módulo MQTT.
Una mejora en Modbus no debería afectar al servidor web.
Una modificación del sistema de logs no debería alterar la configuración.
La independencia constituye un objetivo arquitectónico.
8. Configuración
Toda configuración común deberá gestionarse desde AEP.
Ejemplos:
- nombre del dispositivo;
- hostname;
- dirección IP;
- DHCP;
- WiFi;
- Ethernet;
- MQTT;
- Modbus;
- certificados;
- usuarios;
- parámetros OTA.
Las aplicaciones únicamente almacenarán configuración propia.
Ejemplo:
AZ-TEMP almacenará:
- nombres de sondas;
- calibraciones;
- alarmas.
No almacenará configuración de red.
9. Almacenamiento
AEP será responsable del almacenamiento persistente.
La aplicación solicitará:
- guardar;
- leer;
- eliminar;
- actualizar.
Nunca deberá conocer el mecanismo físico utilizado.
Esto permitirá cambiar la implementación en el futuro sin modificar las aplicaciones.
10. Comunicaciones
Todas las comunicaciones comunes estarán gestionadas por AEP.
Inicialmente:
- HTTP
- HTTPS (futuro)
- MQTT
- Modbus TCP
- USB
- OTA
En el futuro podrán añadirse nuevos protocolos.
Las aplicaciones accederán a ellos mediante interfaces proporcionadas por AEP.
11. Seguridad
Toda la seguridad común pertenecerá a AEP.
Entre otras funciones:
- autenticación;
- autorización;
- validación de firmware;
- control de acceso a la web;
- control de acceso a la API;
- gestión de certificados (futuro).
Las aplicaciones no implementarán mecanismos de autenticación propios salvo necesidad justificada.
12. Ciclo de vida
Todo dispositivo seguirá el mismo ciclo de funcionamiento.
Arranque
↓
Inicialización Edge Platform
↓
Carga de configuración
↓
Inicialización de comunicaciones
↓
Inicialización de aplicación
↓
Funcionamiento normal
↓
OTA (cuando proceda)
↓
Reinicio
La aplicación nunca deberá inicializar por sí misma los servicios comunes.
13. Evolución futura
AEP deberá diseñarse pensando en el crecimiento.
Deberá permitir incorporar nuevos servicios sin modificar la arquitectura existente.
Ejemplos futuros:
- Bluetooth;
- Zigbee;
- Matter;
- CAN Bus;
- Modbus RTU;
- VPN;
- Edge AI;
- sincronización horaria avanzada;
- almacenamiento histórico.
La incorporación de nuevos servicios no deberá requerir modificar las aplicaciones existentes.
14. Beneficios
La existencia de AEP aporta las siguientes ventajas.
Para el desarrollo:
- menos código duplicado;
- menor tiempo de desarrollo;
- mayor calidad.
Para el mantenimiento:
- comportamiento homogéneo;
- menor riesgo;
- actualizaciones comunes.
Para el usuario:
- misma experiencia;
- misma configuración;
- mismo mantenimiento.
Para el proyecto:
- crecimiento ordenado;
- evolución sencilla;
- mayor reutilización.
15. Relación con las siguientes SPEC
Esta especificación define la plataforma Edge desde un punto de vista conceptual.
Las siguientes especificaciones desarrollarán sus componentes.
SPEC-004 desarrollará Edge OS.
SPEC-007 desarrollará OTA.
SPEC-008 desarrollará Recovery.
SPEC-011 desarrollará Seguridad.
Las aplicaciones utilizarán AEP, pero no modificarán su arquitectura.
16. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
Desarrolla:
- Aeizoon Edge Platform
Implementación:
- Constituirá el núcleo común de todos los dispositivos de ESP Platform.
SPEC-004 — Edge OS
Documento: SPEC-004
Título: Edge OS
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define Edge OS, el firmware base sobre el que se ejecutarán todas las aplicaciones de ESP Platform.
Mientras que AEP representa el concepto de plataforma Edge, Edge OS constituye su implementación software.
Toda aplicación desarrollada para ESP Platform deberá ejecutarse sobre Edge OS.
El objetivo es evitar que cada dispositivo implemente nuevamente funcionalidades comunes.
2. Objetivos
Edge OS deberá proporcionar una base sólida, estable y reutilizable para todos los dispositivos.
Los objetivos principales son:
- inicialización uniforme;
- servicios comunes;
- arquitectura modular;
- configuración persistente;
- comunicaciones;
- actualización segura;
- recuperación;
- mantenimiento sencillo;
- evolución futura.
3. Filosofía
Edge OS no debe contener lógica de negocio.
Debe proporcionar únicamente infraestructura.
Toda funcionalidad específica deberá implementarse en la aplicación correspondiente.
Ejemplos:
Edge OS sabe:
- iniciar WiFi;
- publicar MQTT;
- responder una API;
- actualizar firmware;
- guardar configuración.
Edge OS no sabe:
- qué es una temperatura;
- qué es un medidor;
- qué es una tarjeta NFC;
- qué significa activar un relé.
Eso pertenece a las aplicaciones.
4. Organización general
Todo firmware seguirá la siguiente estructura conceptual.
+------------------------------------------------+
Aplicación
--------------------------------------------------
Servicios Edge OS
--------------------------------------------------
Configuración
Comunicaciones
Seguridad
Storage
OTA
Recovery
Logging
Diagnóstico
API
Web
--------------------------------------------------
ESP-IDF
--------------------------------------------------
Hardware
+------------------------------------------------+
Esta organización deberá mantenerse en todos los proyectos.
5. Arquitectura modular
Edge OS estará dividido en módulos independientes.
Inicialmente se prevén los siguientes.
Core
Responsable de:
- arranque;
- inicialización;
- ciclo principal;
- coordinación de módulos.
Config Manager
Responsable de:
- leer configuración;
- guardar configuración;
- validar parámetros;
- migraciones futuras.
Network Manager
Responsable de:
- WiFi;
- Ethernet;
- IP;
- DHCP;
- hostname;
- reconexión.
Web Manager
Responsable de:
- servidor web;
- páginas;
- autenticación;
- recursos estáticos.
API Manager
Responsable de:
- API REST;
- respuestas JSON;
- autenticación;
- versionado.
MQTT Manager
Responsable de:
- conexión;
- publicación;
- suscripciones;
- reconexión;
- estado.
Modbus Manager
Responsable de:
- servidor Modbus TCP;
- registros;
- mapeo;
- diagnóstico.
OTA Manager
Responsable de:
- descarga;
- validación;
- instalación;
- rollback.
Recovery Manager
Responsable de:
- recuperación;
- firmware alternativo;
- restauración.
Storage Manager
Responsable de:
- almacenamiento persistente;
- abstracción del soporte físico.
Log Manager
Responsable de:
- eventos;
- errores;
- auditoría local.
Diagnostic Manager
Responsable de:
- estado del dispositivo;
- información interna;
- estadísticas.
Time Manager
Responsable de:
- RTC;
- NTP;
- sincronización.
6. Ciclo de arranque
Todos los dispositivos deberán seguir el mismo proceso.
Reset
↓
Bootloader
↓
Edge OS
↓
Inicialización Core
↓
Configuración
↓
Red
↓
Servicios
↓
Aplicación
↓
Funcionamiento normal
La aplicación nunca deberá alterar este orden.
7. Inicialización de módulos
Cada módulo deberá disponer de una función de inicialización propia.
Ejemplo conceptual:
Config
↓
Storage
↓
Network
↓
Web
↓
API
↓
MQTT
↓
Modbus
↓
OTA
↓
Aplicación
Esto facilitará futuras ampliaciones.
8. Comunicación entre módulos
Los módulos no deberán acceder directamente a información interna de otros módulos.
La comunicación deberá realizarse mediante interfaces públicas.
Ejemplo.
La aplicación no accederá directamente al WiFi.
Solicitará a Network Manager la información necesaria.
Del mismo modo:
OTA no accederá directamente al almacenamiento.
Utilizará Storage Manager.
9. Gestión de errores
Todo módulo deberá detectar y comunicar errores.
Los errores deberán clasificarse, al menos, en:
- información;
- advertencia;
- error;
- error crítico.
Siempre que sea posible, el sistema deberá continuar funcionando.
Un error en MQTT no deberá impedir el funcionamiento de la aplicación.
10. Configuración
Edge OS almacenará toda la configuración común.
Ejemplos:
- red;
- MQTT;
- Modbus;
- usuarios;
- OTA;
- hostname;
- idioma (futuro);
- certificados (futuro).
Las aplicaciones únicamente almacenarán parámetros propios.
11. Recursos compartidos
Edge OS administrará todos los recursos comunes.
Entre ellos:
- memoria;
- almacenamiento;
- red;
- reloj;
- tareas;
- comunicaciones.
Las aplicaciones deberán solicitar dichos recursos al núcleo.
12. API interna
Todos los servicios ofrecidos por Edge OS deberán exponerse mediante APIs internas claramente definidas.
Ejemplos:
Storage API
MQTT API
Network API
OTA API
Logging API
Esto permitirá sustituir implementaciones sin afectar a las aplicaciones.
13. Extensibilidad
La incorporación de nuevos módulos no deberá requerir modificar el resto del sistema.
Ejemplos futuros:
Bluetooth
Matter
CAN
LoRa
RS485
VPN
Edge AI
Cada nuevo módulo deberá seguir la misma filosofía que los existentes.
14. Beneficios
Esta arquitectura proporciona:
Para el desarrollador:
- menos código;
- mayor reutilización;
- menor tiempo de desarrollo.
Para el mantenimiento:
- comportamiento uniforme;
- menor riesgo;
- evolución sencilla.
Para el proyecto:
- escalabilidad;
- independencia entre módulos;
- crecimiento ordenado.
15. Relación con las siguientes SPEC
Esta especificación define la estructura interna de Edge OS.
Las siguientes especificaciones desarrollarán algunos módulos concretos.
- SPEC-005 → Backend
- SPEC-006 → Flasher Web
- SPEC-007 → OTA
- SPEC-008 → Recovery
- SPEC-011 → Seguridad
- SPEC-014 → APIs
16. Consideraciones de implementación
Edge OS deberá desarrollarse inicialmente utilizando:
- PlatformIO;
- ESP-IDF;
- arquitectura modular;
- Git;
- compilación automatizada.
La implementación deberá priorizar claridad, modularidad y mantenibilidad sobre la optimización prematura.
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
Desarrolla:
- Arquitectura interna de Edge OS
Implementación:
- Constituirá la base software común de todos los dispositivos desarrollados sobre ESP Platform.
SPEC-005 — Backend Central
Documento: SPEC-005
Título: Backend Central
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el Backend Central de ESP Platform.
El Backend constituye el punto único de administración del ecosistema y será el encargado de proporcionar todos los servicios comunes que no deban ejecutarse dentro de los dispositivos Edge.
El Backend no sustituye al funcionamiento autónomo de los dispositivos.
Su misión consiste en facilitar su gestión.
2. Objetivos
El Backend deberá proporcionar una infraestructura centralizada para administrar todos los dispositivos de la plataforma.
Sus objetivos principales son:
- gestión de firmware;
- flasheo inicial;
- OTA;
- inventario;
- administración;
- APIs;
- autenticación;
- Fleet Management;
- auditoría;
- crecimiento futuro hacia SaaS.
3. Filosofía
Los dispositivos deberán ser capaces de funcionar sin el Backend.
El Backend añade funcionalidades de administración y gestión, pero no debe convertirse en un punto único de fallo para el funcionamiento normal de los dispositivos.
Si el Backend deja de estar disponible:
- los dispositivos seguirán ejecutando su lógica;
- seguirán respondiendo por su web local;
- seguirán respondiendo mediante Modbus TCP;
- seguirán publicando MQTT si el broker continúa disponible.
4. Arquitectura general
El Backend se organizará mediante servicios independientes.
Navegador
│
▼
Frontend Web
│
▼
API REST
│
┌───────────────┼────────────────┐
│ │ │
Firmware Inventario Usuarios
│ │ │
OTA Fleet Manager Auditoría
│ │ │
└───────────────┼────────────────┘
│
PostgreSQL
│
Repositorio Firmware
Cada servicio deberá tener responsabilidades claramente definidas.
5. Responsabilidades
El Backend será responsable de:
- gestionar usuarios;
- gestionar dispositivos;
- almacenar firmware;
- distribuir firmware;
- mantener inventario;
- registrar auditoría;
- proporcionar APIs;
- gestionar Provisioning;
- gestionar OTA;
- administrar Fleet Management.
No será responsable del control en tiempo real de los dispositivos.
6. Frontend Web
Inicialmente toda la administración se realizará mediante una aplicación web.
La web deberá permitir acceder a todas las funcionalidades del sistema.
No deberá existir funcionalidad exclusiva de una futura aplicación móvil.
Toda funcionalidad importante deberá poder realizarse desde un navegador.
7. API REST
Toda la lógica de negocio deberá residir en la API.
La interfaz web actuará únicamente como cliente de dicha API.
Esto permitirá desarrollar en el futuro:
- aplicaciones móviles;
- herramientas CLI;
- automatizaciones;
- integraciones externas.
Sin modificar la lógica del Backend.
8. Base de datos
Inicialmente se utilizará PostgreSQL.
La base de datos almacenará únicamente información persistente.
Ejemplos:
- usuarios;
- dispositivos;
- firmware;
- versiones;
- auditoría;
- inventario;
- configuraciones globales.
Los datos de telemetría histórica podrán almacenarse posteriormente en sistemas especializados si fuese necesario.
9. Repositorio de firmware
El Backend mantendrá un repositorio de firmware.
Cada firmware deberá almacenarse acompañado de información como:
- nombre;
- versión;
- fecha;
- descripción;
- aplicación;
- hardware compatible;
- checksum;
- tamaño.
El repositorio será utilizado tanto por el Flasher Web como por OTA.
10. Inventario
Todo dispositivo registrado en la plataforma deberá disponer de una ficha propia.
Inicialmente se prevén los siguientes datos.
- identificador único;
- nombre;
- aplicación instalada;
- versión;
- hardware;
- dirección IP;
- MAC;
- estado;
- última conexión;
- propietario;
- ubicación (futuro).
El inventario será el punto de partida para Fleet Management.
11. Gestión de usuarios
El Backend deberá permitir administrar usuarios.
Inicialmente:
- autenticación;
- cambio de contraseña;
- perfiles;
- permisos.
La arquitectura deberá permitir ampliar posteriormente el sistema de roles.
12. Auditoría
Toda operación relevante deberá quedar registrada.
Ejemplos:
- alta de dispositivo;
- actualización OTA;
- subida de firmware;
- creación de usuario;
- modificación de configuración;
- operaciones administrativas.
La auditoría facilitará el mantenimiento y el diagnóstico.
13. Servicios previstos
El Backend crecerá mediante módulos.
Inicialmente se prevén:
Firmware Service
Device Service
User Service
Provisioning Service
OTA Service
Fleet Service
Audit Service
API Service
Cada servicio deberá poder evolucionar independientemente.
14. Integración con dispositivos
Los dispositivos podrán comunicarse con el Backend mediante:
- HTTP/HTTPS;
- MQTT;
- OTA;
- Provisioning.
La comunicación deberá minimizar el acoplamiento.
Los dispositivos no deberán depender de detalles internos del Backend.
15. Integración con el Flasher
El Flasher Web utilizará el Backend para:
- consultar firmware;
- descargar binarios;
- registrar instalaciones (futuro);
- validar compatibilidades.
El Flasher no almacenará información propia.
Será un consumidor de los servicios del Backend.
16. Escalabilidad
La arquitectura deberá permitir evolucionar desde:
Una instalación doméstica
hasta:
Múltiples instalaciones
↓
Múltiples clientes
↓
Backend multiusuario
↓
SaaS
Sin modificar la arquitectura fundamental.
17. Tecnologías iniciales
La primera implementación utilizará:
- Debian;
- PostgreSQL;
- Java (Spring Boot);
- Nginx;
- systemd.
No se utilizarán contenedores.
La arquitectura deberá seguir los estándares generales del proyecto.
18. Beneficios
El Backend proporciona:
Para el usuario:
- administración centralizada;
- inventario;
- firmware;
- futuras OTA.
Para el desarrollador:
- APIs comunes;
- reutilización;
- separación de responsabilidades.
Para la plataforma:
- crecimiento ordenado;
- punto único de administración;
- evolución hacia Fleet Management.
19. Relación con las siguientes SPEC
Esta especificación define el Backend de forma general.
Las siguientes especificaciones desarrollarán componentes concretos.
- SPEC-006 → Flasher Web
- SPEC-007 → OTA
- SPEC-009 → Provisioning
- SPEC-010 → Fleet Management
- SPEC-011 → Seguridad
- SPEC-014 → APIs
20. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
- SPEC-004
Desarrolla:
- Arquitectura del Backend Central
Implementación:
- Será el núcleo de administración de ESP Platform y el primer componente desplegado durante la Fase 1.
SPEC-006 — Flasher Web
Documento: SPEC-006
Título: Flasher Web
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el Flasher Web de ESP Platform.
El Flasher Web constituye la puerta de entrada de todos los dispositivos nuevos a la plataforma.
Su objetivo es permitir que un usuario conecte un ESP32 vacío mediante USB y pueda instalar un firmware desde un navegador web sin utilizar herramientas de desarrollo.
El Flasher será el primer componente funcional del MVP de ESP Platform.
2. Objetivos
El Flasher deberá permitir:
- seleccionar un firmware;
- comprobar la compatibilidad con el hardware;
- conectar con un ESP32 mediante USB;
- escribir el firmware;
- informar del progreso;
- informar del resultado;
- servir como base del futuro proceso de Provisioning.
La experiencia deberá ser sencilla incluso para usuarios sin conocimientos técnicos.
3. Filosofía
El Flasher no es únicamente una utilidad de programación.
Forma parte de la experiencia de usuario de ESP Platform.
Su diseño deberá transmitir la misma sensación que un producto comercial.
El usuario no deberá preocuparse por herramientas como:
- esptool;
- PlatformIO;
- puertos serie;
- comandos.
Todo ello deberá quedar abstraído por la aplicación.
4. Alcance de la primera versión
La versión inicial permitirá exclusivamente:
- seleccionar un firmware existente;
- conectar un ESP32 mediante USB;
- escribir el firmware;
- comprobar el resultado.
No realizará todavía:
- Provisioning;
- alta automática;
- OTA;
- inventario;
- autenticación avanzada.
Estas funcionalidades se incorporarán posteriormente reutilizando la misma arquitectura.
5. Flujo de funcionamiento
El proceso previsto será el siguiente.
Usuario
↓
Accede al Flasher
↓
Selecciona modelo de ESP32
↓
Selecciona firmware
↓
Conecta USB
↓
Permitir acceso al dispositivo
↓
Flashear
↓
Verificación
↓
Resultado
El proceso deberá minimizar el número de pasos.
6. Integración con el Backend
El Flasher obtendrá toda la información desde el Backend.
Entre ella:
- catálogo de firmware;
- versiones;
- descripción;
- hardware compatible;
- tamaño;
- checksum.
El Flasher no almacenará información propia.
7. Catálogo de firmware
El usuario visualizará un catálogo organizado.
Cada firmware mostrará, al menos:
- nombre;
- aplicación;
- versión;
- fecha;
- descripción;
- hardware compatible.
En el futuro podrán añadirse:
- notas de versión;
- cambios;
- estabilidad;
- canal (estable / beta).
8. Compatibilidad
Antes de iniciar el proceso deberá comprobarse que el firmware es compatible con el dispositivo seleccionado.
Inicialmente la selección será manual.
En el futuro podrá detectarse automáticamente el hardware conectado.
9. Comunicación con el ESP32
La comunicación se realizará mediante Web Serial.
No será necesario instalar aplicaciones adicionales.
El navegador solicitará autorización al usuario para acceder al dispositivo.
La aplicación nunca accederá al puerto serie sin autorización explícita.
10. Proceso de flasheo
El proceso completo será:
Conectar USB
↓
Abrir puerto
↓
Comprobar comunicación
↓
Borrar Flash (si procede)
↓
Escribir firmware
↓
Verificar escritura
↓
Reiniciar ESP32
↓
Resultado
Cada paso deberá informar claramente del estado.
11. Interfaz de usuario
La interfaz deberá priorizar claridad y sencillez.
Elementos mínimos:
- selección de hardware;
- selección de firmware;
- botón Conectar;
- botón Flashear;
- barra de progreso;
- estado;
- resultado.
No deberá mostrar información técnica innecesaria al usuario final.
12. Gestión de errores
Los errores deberán mostrarse mediante mensajes comprensibles.
Ejemplos:
- dispositivo no encontrado;
- acceso denegado;
- puerto ocupado;
- firmware incompatible;
- error de escritura;
- desconexión del dispositivo.
Siempre que sea posible se propondrá una acción correctiva.
13. Evolución futura
El Flasher deberá crecer sin modificar su filosofía.
Funciones previstas:
- Provisioning automático;
- asignación de nombre;
- lectura de QR;
- configuración inicial;
- alta en Backend;
- actualización de bootloader;
- copia de seguridad;
- recuperación.
14. Beneficios
Para el usuario:
- instalación sencilla;
- sin herramientas externas;
- menor riesgo de error.
Para el desarrollador:
- proceso uniforme;
- integración con Backend;
- reutilización del repositorio de firmware.
Para la plataforma:
- punto único de instalación;
- integración con OTA;
- integración con Provisioning.
15. Tecnologías previstas
Primera versión:
- Web Serial API;
- JavaScript;
- HTML;
- CSS;
- Backend Spring Boot;
- PostgreSQL.
No se utilizarán aplicaciones de escritorio.
Toda la funcionalidad residirá en la aplicación web.
16. Relación con otras SPEC
El Flasher utiliza:
- SPEC-002 Arquitectura Global;
- SPEC-005 Backend.
Será utilizado posteriormente por:
- SPEC-007 OTA;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management.
17. Objetivo del MVP
El MVP de ESP Platform se considerará alcanzado cuando sea posible:
Abrir la web
↓
Seleccionar firmware
↓
Conectar un ESP32 vacío
↓
Flashearlo completamente
↓
Comprobar que arranca correctamente
Todo el desarrollo inicial del proyecto deberá orientarse a conseguir este resultado lo antes posible.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-005
Desarrolla:
- Flasher Web
Implementación:
- Constituirá el principal objetivo de la Fase 2 del proyecto y el primer componente funcional visible de ESP Platform.
SPEC-007 — OTA y Rollback
Documento: SPEC-007
Título: OTA y Rollback
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el sistema de actualización OTA (Over The Air) y el mecanismo de Rollback de ESP Platform.
El objetivo es permitir actualizar dispositivos de forma remota con el máximo nivel posible de seguridad y minimizar el riesgo de dejar un dispositivo inutilizable.
La actualización OTA constituye una capacidad nativa de Edge OS y deberá estar disponible para todas las aplicaciones de la plataforma.
2. Objetivos
El sistema OTA deberá permitir:
- actualizar firmware sin conexión física;
- minimizar el tiempo de indisponibilidad;
- verificar la integridad del firmware;
- recuperar automáticamente versiones anteriores cuando sea necesario;
- mantener la configuración del dispositivo;
- reducir al mínimo el riesgo operativo.
3. Filosofía
Actualizar un dispositivo nunca deberá convertirse en una operación de riesgo.
Toda actualización deberá poder revertirse automáticamente si el nuevo firmware no supera las comprobaciones definidas.
El usuario no deberá intervenir en circunstancias normales.
4. Arquitectura general
El sistema OTA estará formado por los siguientes elementos.
Repositorio Firmware
↓
Backend
↓
OTA Service
↓
Dispositivo
↓
Verificación
↓
Confirmación
↓
Funcionamiento normal
El Backend únicamente distribuirá firmware.
La decisión de aceptar o rechazar la actualización corresponderá al dispositivo.
5. Particionado
Todos los dispositivos deberán utilizar un esquema de particiones compatible con OTA.
Conceptualmente:
Bootloader
↓
Firmware A
↓
Firmware B
↓
Configuración
↓
Datos
La configuración permanecerá separada del firmware.
6. Proceso OTA
El flujo general será:
Backend detecta nueva versión
↓
Dispositivo consulta
↓
Descarga firmware
↓
Verifica integridad
↓
Escribe partición alternativa
↓
Reinicio
↓
Arranque nuevo firmware
↓
Autocomprobación
↓
Confirmación
↓
Actualización completada
7. Verificación
Antes de aceptar un firmware deberán verificarse, al menos:
- integridad del fichero;
- compatibilidad con el hardware;
- versión;
- tamaño;
- resultado de la escritura.
No deberá instalarse un firmware que no supere las validaciones.
8. Confirmación de arranque
Tras el primer arranque del nuevo firmware, Edge OS deberá realizar una comprobación de funcionamiento.
Entre otras:
- arranque correcto;
- inicialización de servicios;
- estabilidad mínima;
- ausencia de errores críticos.
Solo entonces se confirmará definitivamente la nueva versión.
9. Rollback automático
Si el nuevo firmware no supera las comprobaciones, el sistema deberá volver automáticamente a la versión anterior.
Proceso conceptual:
Firmware nuevo
↓
Error
↓
Reinicio
↓
Bootloader
↓
Firmware anterior
↓
Funcionamiento normal
El usuario no deberá realizar ninguna intervención.
10. Conservación de configuración
Las actualizaciones OTA nunca deberán eliminar:
- configuración de red;
- parámetros MQTT;
- configuración Modbus;
- usuarios;
- nombres de dispositivos;
- configuración específica de la aplicación.
La configuración constituye un recurso independiente del firmware.
11. Compatibilidad
Antes de iniciar una actualización deberán comprobarse:
- modelo de hardware;
- aplicación instalada;
- versión mínima requerida;
- espacio disponible.
No deberá instalarse un firmware incompatible.
12. Gestión desde el Backend
El Backend permitirá:
- publicar versiones;
- marcar versión estable;
- retirar versiones;
- consultar estado de despliegue;
- conocer versión instalada;
- consultar resultado de la actualización.
13. Estrategias futuras
La arquitectura deberá permitir incorporar:
- actualización por grupos;
- actualización progresiva;
- canal estable;
- canal beta;
- canal desarrollo;
- actualización programada;
- actualización manual;
- actualización automática.
Estas capacidades no deberán requerir modificar Edge OS.
14. Gestión de errores
El sistema deberá detectar, entre otros:
- descarga incompleta;
- firmware corrupto;
- incompatibilidad;
- fallo de escritura;
- fallo de arranque;
- pérdida de alimentación durante la actualización.
Siempre que sea posible deberá recuperarse automáticamente.
15. Beneficios
Para el usuario:
- actualizaciones sencillas;
- mayor seguridad;
- menor riesgo.
Para el administrador:
- despliegue remoto;
- control de versiones;
- seguimiento de dispositivos.
Para la plataforma:
- evolución continua;
- mantenimiento simplificado;
- base para Fleet Management.
16. Evolución futura
El sistema OTA podrá ampliarse con:
- firmas digitales;
- cifrado;
- firmware diferencial;
- despliegues escalonados;
- validaciones avanzadas;
- políticas por cliente.
La arquitectura actual deberá permitir incorporar estas capacidades sin rediseños importantes.
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-004 Edge OS;
- SPEC-005 Backend.
Será utilizada por:
- SPEC-008 Recovery;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
- SPEC-004
- SPEC-005
Desarrolla:
- Sistema OTA
- Rollback automático
Implementación:
- Constituirá el mecanismo oficial de actualización remota de todos los dispositivos de ESP Platform.
SPEC-008 — Recovery
Documento: SPEC-008
Título: Recovery
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el sistema Recovery de ESP Platform.
Su objetivo es garantizar que un dispositivo pueda recuperarse de situaciones excepcionales sin requerir intervención técnica compleja y minimizando la necesidad de conexión física.
Recovery constituye el último nivel de protección del dispositivo.
2. Objetivos
El sistema Recovery deberá permitir:
- recuperar dispositivos que no puedan iniciar la aplicación correctamente;
- restaurar un firmware operativo;
- mantener la configuración siempre que sea posible;
- facilitar el diagnóstico;
- minimizar desplazamientos y mantenimiento presencial.
3. Filosofía
OTA evita fallos.
Rollback corrige actualizaciones fallidas.
Recovery permite recuperar situaciones que no pueden resolverse mediante OTA o Rollback.
El objetivo es que un dispositivo resulte extremadamente difícil de dejar inutilizable.
4. Relación con OTA
El orden de actuación será siempre:
OTA
↓
Rollback
↓
Recovery
Recovery únicamente actuará cuando los mecanismos anteriores no puedan resolver el problema.
5. Arquitectura general
Recovery estará formado por:
Bootloader
↓
Recovery Manager
↓
Diagnóstico
↓
Opciones de recuperación
↓
Reinicio
El Recovery deberá formar parte de Edge OS.
6. Situaciones de activación
Recovery podrá iniciarse cuando ocurra alguna de las siguientes situaciones:
- fallo repetido de arranque;
- firmware inválido;
- corrupción detectada;
- interrupción grave durante una actualización;
- solicitud manual del usuario;
- orden remota autorizada (futuro).
7. Modos de recuperación
Inicialmente se contemplan los siguientes modos.
Recuperación automática
El dispositivo intentará restaurar el funcionamiento sin intervención del usuario.
Ejemplos:
- volver al firmware anterior;
- restaurar parámetros seguros;
- reiniciar servicios.
Recuperación manual
El usuario podrá iniciar Recovery mediante un procedimiento físico.
Inicialmente se prevé:
- pulsación prolongada de un botón durante el arranque.
La combinación exacta dependerá del hardware.
Recuperación desde la web
Si el dispositivo conserva conectividad, podrá accederse a una interfaz Recovery simplificada.
Permitirá:
- consultar estado;
- cargar un firmware;
- reiniciar;
- consultar diagnóstico.
8. Conservación de configuración
Recovery nunca deberá eliminar la configuración del usuario salvo que éste lo solicite expresamente.
Se conservarán siempre que sea posible:
- parámetros de red;
- MQTT;
- Modbus;
- configuración de aplicación;
- nombres;
- usuarios.
El borrado completo constituirá una acción independiente.
9. Diagnóstico
Recovery deberá proporcionar información suficiente para identificar la causa del problema.
Ejemplos:
- motivo de entrada en Recovery;
- firmware activo;
- firmware alternativo;
- último error;
- estado de memoria;
- versión instalada.
10. Restauración de firmware
Recovery permitirá instalar nuevamente un firmware válido.
Las fuentes previstas serán:
- OTA (si existe conectividad);
- Flasher Web mediante USB;
- carga desde la interfaz Recovery (futuro).
11. Factory Reset
Recovery podrá ofrecer un modo Factory Reset.
Este modo deberá:
- restaurar configuración por defecto;
- conservar el firmware operativo;
- advertir previamente al usuario.
El Factory Reset no constituye una actualización de firmware.
12. Seguridad
Las funciones Recovery deberán protegerse frente a accesos no autorizados.
Especialmente:
- reinstalación de firmware;
- borrado de configuración;
- restauración completa.
Las acciones críticas requerirán autenticación cuando sea técnicamente posible.
13. Integración con el Backend
En futuras versiones Recovery podrá comunicarse con el Backend para:
- informar de fallos;
- solicitar firmware;
- registrar incidencias;
- permitir recuperación remota.
La ausencia del Backend no deberá impedir el funcionamiento del Recovery.
14. Integración con el Flasher
Cuando Recovery no pueda resolver un problema mediante red, el dispositivo podrá recuperarse utilizando el Flasher Web.
El procedimiento será idéntico al utilizado para un dispositivo nuevo.
Esto garantiza un único proceso de recuperación física.
15. Beneficios
Para el usuario:
- mayor tranquilidad;
- menor riesgo de pérdida del dispositivo;
- recuperación sencilla.
Para el administrador:
- menos intervenciones presenciales;
- menor tiempo de mantenimiento.
Para la plataforma:
- mayor robustez;
- mayor fiabilidad;
- menor coste operativo.
16. Evolución futura
El sistema Recovery podrá incorporar posteriormente:
- consola de diagnóstico;
- copia de seguridad de configuración;
- restauración desde Backup;
- recuperación cifrada;
- recuperación remota supervisada.
La arquitectura deberá permitir añadir estas funciones sin rediseños importantes.
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-004 Edge OS;
- SPEC-006 Flasher Web;
- SPEC-007 OTA y Rollback.
Será utilizada posteriormente por:
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
- SPEC-004
- SPEC-006
- SPEC-007
Desarrolla:
- Recovery Manager
- Estrategia de recuperación
Implementación:
- Constituirá el mecanismo de recuperación de último nivel para todos los dispositivos de ESP Platform.
SPEC-009 — Provisioning y QR
Documento: SPEC-009
Título: Provisioning y QR
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el sistema de Provisioning de ESP Platform.
Su finalidad es permitir que un dispositivo recién instalado pueda incorporarse a la plataforma de forma sencilla, rápida y segura.
El Provisioning constituye el proceso de transición entre un dispositivo recién flasheado y un dispositivo completamente operativo.
2. Objetivos
El sistema deberá permitir:
- identificar un dispositivo de forma única;
- configurar los parámetros mínimos necesarios;
- registrar el dispositivo en el Backend;
- simplificar al máximo la instalación;
- minimizar errores humanos;
- servir como base para instalaciones de gran volumen.
3. Filosofía
El proceso de alta deberá poder realizarlo un usuario sin conocimientos técnicos.
La complejidad deberá recaer sobre la plataforma, nunca sobre el instalador.
El objetivo es que poner en marcha un dispositivo resulte tan sencillo como instalar un producto comercial.
4. Flujo general
El proceso previsto será:
Flasheo
↓
Primer arranque
↓
Modo Provisioning
↓
Configuración inicial
↓
Registro en Backend
↓
Asignación de identidad
↓
Funcionamiento normal
Todo dispositivo nuevo deberá seguir este flujo.
5. Identidad del dispositivo
Cada dispositivo dispondrá de un identificador único permanente.
Este identificador permitirá:
- registrar el dispositivo;
- identificarlo en el Backend;
- asociarlo a un propietario;
- localizarlo en Fleet Management.
La identidad nunca deberá depender del nombre asignado por el usuario.
6. Código QR
Cada dispositivo podrá disponer de un código QR.
El QR podrá contener información como:
- identificador único;
- modelo;
- hardware;
- versión mínima compatible;
- URL de Provisioning.
El formato exacto podrá evolucionar sin modificar el proceso general.
7. Primer arranque
Tras instalar un firmware por primera vez, el dispositivo iniciará automáticamente el modo Provisioning.
Durante este proceso:
- generará una configuración temporal;
- habilitará la interfaz de configuración;
- esperará la configuración inicial.
Una vez completado el proceso pasará automáticamente al funcionamiento normal.
8. Configuración inicial
Inicialmente podrán configurarse:
- nombre del dispositivo;
- red;
- parámetros MQTT;
- parámetros Modbus;
- ubicación (opcional);
- descripción (opcional).
Las aplicaciones podrán añadir parámetros específicos.
9. Registro en el Backend
Una vez completada la configuración, el dispositivo podrá registrarse automáticamente.
El Backend almacenará:
- identificador;
- aplicación;
- versión;
- hardware;
- fecha de alta;
- propietario;
- configuración básica.
10. Repetición del proceso
El usuario podrá reiniciar el proceso de Provisioning cuando sea necesario.
Ejemplos:
- cambio de propietario;
- nueva instalación;
- sustitución de red;
- reconfiguración completa.
No será necesario reinstalar el firmware para volver a ejecutar el Provisioning.
11. Integración con el Flasher
El Flasher Web podrá iniciar automáticamente el proceso de Provisioning tras finalizar la programación.
Esto permitirá reducir el número de pasos necesarios para poner en marcha un dispositivo nuevo.
12. Seguridad
El Provisioning deberá impedir altas no autorizadas.
La arquitectura deberá permitir incorporar posteriormente:
- códigos de activación;
- certificados;
- tokens temporales;
- autenticación mediante usuario.
13. Experiencia de usuario
El objetivo será reducir al mínimo la intervención manual.
Idealmente:
Flashear
↓
Escanear QR
↓
Asignar nombre
↓
Finalizar
La experiencia deberá resultar intuitiva y consistente en todos los dispositivos.
14. Beneficios
Para el usuario:
- instalación rápida;
- menos errores;
- configuración guiada.
Para el administrador:
- inventario automático;
- dispositivos identificados;
- menor tiempo de despliegue.
Para la plataforma:
- integración con Fleet Management;
- integración con OTA;
- crecimiento ordenado.
15. Evolución futura
El sistema podrá incorporar posteriormente:
- configuración masiva;
- importación de parámetros;
- Provisioning mediante móvil;
- Provisioning sin conexión;
- plantillas de instalación;
- asistentes inteligentes.
16. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-006 Flasher Web;
- SPEC-008 Recovery.
Será utilizada posteriormente por:
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad;
- SPEC-012 Modelo SaaS.
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-005
- SPEC-006
- SPEC-008
Desarrolla:
- Provisioning
- Identidad del dispositivo
- QR
Implementación:
- Constituirá el proceso oficial de incorporación de nuevos dispositivos a ESP Platform.
SPEC-010 — Fleet Management
Documento: SPEC-010
Título: Fleet Management
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el sistema Fleet Management de ESP Platform.
Fleet Management constituye el conjunto de herramientas destinadas a administrar, supervisar y operar un gran número de dispositivos desde un único punto.
Su objetivo es proporcionar una visión global del estado de toda la plataforma.
2. Objetivos
Fleet Management deberá permitir:
- visualizar todos los dispositivos;
- conocer su estado;
- organizar dispositivos;
- realizar operaciones masivas;
- facilitar el mantenimiento;
- reducir el tiempo de administración.
3. Filosofía
El número de dispositivos administrados no deberá modificar la experiencia del usuario.
La plataforma deberá resultar igual de sencilla administrando:
- un único dispositivo;
- diez dispositivos;
- cien dispositivos;
- miles de dispositivos.
La arquitectura deberá crecer sin modificar la forma de trabajar.
4. Inventario central
Fleet Management utilizará el inventario definido en el Backend.
Cada dispositivo dispondrá de una ficha completa.
Entre otros datos:
- identificador;
- nombre;
- aplicación;
- versión;
- hardware;
- estado;
- propietario;
- ubicación;
- última conexión.
5. Estado de los dispositivos
Cada dispositivo podrá encontrarse, al menos, en uno de los siguientes estados.
- En línea.
- Desconectado.
- Provisioning.
- Actualizando.
- Recovery.
- Error.
- Desconocido.
El estado deberá actualizarse automáticamente siempre que sea posible.
6. Organización
Fleet Management permitirá organizar dispositivos mediante diferentes criterios.
Ejemplos:
- cliente;
- ubicación;
- edificio;
- planta;
- zona;
- aplicación;
- modelo.
La arquitectura deberá permitir añadir nuevos criterios sin modificar el sistema.
7. Búsqueda
El usuario deberá localizar rápidamente cualquier dispositivo.
Inicialmente podrán utilizarse filtros por:
- nombre;
- identificador;
- aplicación;
- versión;
- hardware;
- estado;
- propietario.
8. Operaciones masivas
Fleet Management deberá permitir ejecutar operaciones sobre múltiples dispositivos.
Ejemplos futuros:
- actualizar firmware;
- reiniciar;
- cambiar configuración;
- exportar información;
- generar informes.
Las operaciones deberán minimizar la intervención manual.
9. Monitorización
Fleet Management mostrará información general sobre el estado de la plataforma.
Ejemplos:
- dispositivos conectados;
- dispositivos desconectados;
- versiones instaladas;
- actualizaciones pendientes;
- incidencias.
La información deberá presentarse de forma clara.
10. Historial
Cada dispositivo dispondrá de un historial.
Ejemplos:
- altas;
- Provisioning;
- OTA;
- Recovery;
- cambios de configuración;
- incidencias.
El historial facilitará el mantenimiento y el diagnóstico.
11. Integración con OTA
Fleet Management utilizará OTA para gestionar actualizaciones remotas.
Permitirá:
- seleccionar dispositivos;
- elegir versión;
- iniciar despliegues;
- consultar resultados.
OTA seguirá siendo el responsable de la actualización.
Fleet Management únicamente coordinará el proceso.
12. Integración con Recovery
Cuando un dispositivo entre en Recovery, Fleet Management podrá reflejar dicha situación.
En futuras versiones permitirá iniciar acciones de recuperación remota cuando la arquitectura lo permita.
13. Panel principal
La plataforma dispondrá de un panel principal con información resumida.
Ejemplos:
- número de dispositivos;
- dispositivos en línea;
- dispositivos con incidencias;
- firmware más utilizado;
- actualizaciones pendientes.
El objetivo es proporcionar una visión global inmediata.
14. Escalabilidad
Fleet Management deberá funcionar correctamente independientemente del número de dispositivos.
La arquitectura deberá diseñarse pensando en un crecimiento continuo.
No deberán existir limitaciones derivadas del diseño inicial.
15. Beneficios
Para el usuario:
- administración sencilla;
- visión global;
- menor tiempo de mantenimiento.
Para el administrador:
- operaciones centralizadas;
- control de versiones;
- diagnóstico rápido.
Para la plataforma:
- escalabilidad;
- administración profesional;
- evolución hacia SaaS.
16. Evolución futura
Fleet Management podrá incorporar posteriormente:
- mapas;
- planos;
- dashboards personalizados;
- mantenimiento predictivo;
- inteligencia artificial;
- reglas automáticas;
- informes avanzados.
La arquitectura deberá permitir estas ampliaciones sin rediseñar el sistema.
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-007 OTA;
- SPEC-008 Recovery;
- SPEC-009 Provisioning.
Será utilizada posteriormente por:
- SPEC-011 Seguridad;
- SPEC-012 Modelo SaaS;
- SPEC-014 APIs.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-005
- SPEC-007
- SPEC-008
- SPEC-009
Desarrolla:
- Fleet Management
- Gestión centralizada de dispositivos
Implementación:
- Constituirá el centro de administración de todos los dispositivos de ESP Platform.
SPEC-011 — Seguridad
Documento: SPEC-011
Título: Seguridad
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define la estrategia de seguridad de ESP Platform.
Su objetivo es proteger los dispositivos, el Backend y las comunicaciones, garantizando un funcionamiento seguro sin comprometer la facilidad de uso.
La seguridad deberá formar parte del diseño desde el inicio y no añadirse posteriormente.
2. Objetivos
La arquitectura deberá proteger:
- dispositivos;
- firmware;
- comunicaciones;
- usuarios;
- credenciales;
- APIs;
- actualizaciones;
- Backend.
La seguridad deberá aplicarse de forma homogénea en toda la plataforma.
3. Filosofía
La seguridad deberá basarse en varios niveles de protección.
No deberá depender de un único mecanismo.
Cada componente protegerá únicamente aquello que le corresponda.
La arquitectura evitará confiar ciegamente en cualquier elemento del sistema.
4. Principios generales
Se adoptarán los siguientes principios.
- mínimo privilegio;
- autenticación obligatoria;
- autorización explícita;
- separación de responsabilidades;
- protección por defecto;
- registro de acciones relevantes.
5. Seguridad del dispositivo
Cada dispositivo deberá proteger:
- configuración;
- API local;
- interfaz web;
- actualizaciones;
- operaciones críticas.
No deberá exponer servicios innecesarios.
6. Seguridad del Backend
El Backend deberá proteger:
- usuarios;
- sesiones;
- APIs;
- firmware;
- auditoría;
- base de datos.
Todas las operaciones administrativas deberán requerir autenticación.
7. Seguridad de las comunicaciones
Inicialmente podrán utilizarse:
- HTTP en entornos controlados;
- MQTT;
- Modbus TCP.
La arquitectura deberá permitir evolucionar hacia:
- HTTPS;
- MQTT TLS;
- certificados;
- autenticación mutua.
Sin modificar el diseño general.
8. Gestión de credenciales
Las credenciales nunca deberán almacenarse en texto plano.
Siempre que resulte posible se utilizarán mecanismos seguros de almacenamiento.
Las contraseñas deberán almacenarse utilizando algoritmos adecuados para este propósito.
9. Seguridad OTA
Toda actualización deberá validar:
- origen;
- integridad;
- compatibilidad.
La arquitectura permitirá incorporar posteriormente:
- firmas digitales;
- certificados;
- validaciones criptográficas.
10. Seguridad Recovery
Las funciones Recovery deberán protegerse especialmente.
Entre ellas:
- reinstalación;
- Factory Reset;
- restauración.
Estas operaciones requerirán autorización cuando sea técnicamente posible.
11. Seguridad Provisioning
El proceso de alta deberá impedir incorporaciones no autorizadas.
La arquitectura permitirá incorporar:
- tokens;
- certificados;
- códigos de activación;
- validaciones temporales.
12. Auditoría
Todas las operaciones relevantes deberán registrarse.
Ejemplos:
- inicio de sesión;
- OTA;
- Recovery;
- cambios de configuración;
- creación de usuarios;
- operaciones administrativas.
Los registros facilitarán el diagnóstico y la trazabilidad.
13. Gestión de permisos
El sistema distinguirá entre autenticación y autorización.
Autenticación:
- identifica al usuario.
Autorización:
- determina qué puede hacer.
La arquitectura deberá permitir ampliar el sistema de permisos sin rediseños.
14. Evolución futura
La plataforma podrá incorporar posteriormente:
- autenticación multifactor;
- certificados cliente;
- HSM;
- Secure Boot;
- Flash Encryption;
- VPN;
- Zero Trust.
La arquitectura deberá permitir estas mejoras sin modificar el funcionamiento general.
15. Beneficios
Para el usuario:
- mayor confianza;
- protección de datos;
- menor riesgo.
Para el administrador:
- trazabilidad;
- control de accesos;
- auditoría.
Para la plataforma:
- arquitectura robusta;
- crecimiento seguro;
- preparación para entornos profesionales.
16. Relación con otras SPEC
Esta especificación complementa todas las SPEC anteriores.
Especialmente:
- SPEC-004 Edge OS;
- SPEC-005 Backend;
- SPEC-007 OTA;
- SPEC-008 Recovery;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management.
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-010
Desarrolla:
- Política de seguridad
- Protección de la plataforma
Implementación:
- Constituirá la referencia común para todas las decisiones relacionadas con la seguridad de ESP Platform.
SPEC-012 — Modelo SaaS
Documento: SPEC-012
Título: Modelo SaaS
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define la evolución de ESP Platform hacia un modelo SaaS (Software as a Service).
El objetivo es que la arquitectura diseñada para una instalación local pueda evolucionar de forma natural hacia un servicio alojado para múltiples clientes sin necesidad de rediseñar la plataforma.
El modelo SaaS constituye una evolución de la arquitectura, no una arquitectura diferente.
2. Objetivos
El modelo SaaS deberá permitir:
- múltiples clientes;
- múltiples usuarios;
- múltiples organizaciones;
- múltiples instalaciones;
- aislamiento entre clientes;
- administración centralizada;
- crecimiento prácticamente ilimitado.
3. Filosofía
La plataforma deberá diseñarse desde el primer día pensando en un futuro SaaS, aunque la primera versión funcione únicamente en una instalación local.
Las decisiones actuales no deberán impedir esa evolución.
4. Evolución prevista
La evolución natural será:
Instalación local
↓
Servidor único
↓
Varios usuarios
↓
Varios clientes
↓
Multiempresa
↓
SaaS
Cada etapa reutilizará la arquitectura existente.
5. Organización
El sistema distinguirá conceptualmente entre:
- plataforma;
- organización;
- usuario;
- dispositivo.
Cada organización administrará exclusivamente sus propios recursos.
6. Aislamiento
Los datos de una organización nunca deberán mezclarse con los de otra.
El Backend deberá garantizar el aislamiento lógico entre clientes.
La arquitectura permitirá evolucionar posteriormente hacia otros mecanismos de aislamiento si fuese necesario.
7. Gestión de usuarios
Cada organización podrá disponer de sus propios usuarios.
Inicialmente podrán existir perfiles como:
- administrador;
- técnico;
- operador;
- solo lectura.
La arquitectura permitirá ampliar estos perfiles.
8. Dispositivos
Cada dispositivo pertenecerá a una única organización.
El cambio de propietario deberá realizarse mediante los mecanismos definidos en Provisioning.
Fleet Management mostrará únicamente los dispositivos autorizados para cada organización.
9. Firmware
El repositorio de firmware podrá evolucionar para soportar:
- firmware global;
- firmware privado;
- firmware experimental;
- versiones específicas por cliente.
La arquitectura deberá permitir estas opciones sin modificar el funcionamiento básico.
10. Administración
La plataforma distinguirá entre:
Administración del sistema.
Administración de la organización.
Administración de dispositivos.
Cada nivel dispondrá únicamente de las funciones que le correspondan.
11. Escalabilidad
El crecimiento del número de clientes no deberá requerir cambios importantes en la arquitectura.
La plataforma deberá poder crecer horizontalmente incorporando nuevos servicios cuando sea necesario.
12. Personalización
Cada organización podrá personalizar determinados elementos.
Ejemplos futuros:
- nombre;
- logotipo;
- idioma;
- zonas horarias;
- parámetros por defecto;
- políticas de actualización.
13. Licenciamiento
La arquitectura permitirá incorporar distintos modelos de licencia.
Ejemplos:
- gratuito;
- profesional;
- empresarial;
- OEM.
La gestión de licencias no deberá afectar al funcionamiento interno de los dispositivos.
14. Beneficios
Para el usuario:
- administración centralizada;
- acceso desde cualquier lugar;
- crecimiento sencillo.
Para el administrador:
- mantenimiento simplificado;
- reutilización de infraestructura;
- despliegue rápido.
Para el proyecto:
- evolución comercial;
- modelo de negocio;
- escalabilidad.
15. Evolución futura
La arquitectura permitirá incorporar posteriormente:
- alta automática de organizaciones;
- facturación;
- suscripciones;
- marketplace;
- API pública;
- integraciones de terceros.
16. Relación con otras SPEC
Esta especificación amplía:
- SPEC-005 Backend;
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad.
Servirá de base para:
- SPEC-013 Modelo de Datos;
- SPEC-014 APIs.
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-011
Desarrolla:
- Arquitectura SaaS
- Multiempresa
- Multiusuario
Implementación:
- Permitirá evolucionar ESP Platform desde una instalación local hasta una plataforma SaaS sin rediseñar su arquitectura.
SPEC-013 — Modelo de Datos
Documento: SPEC-013
Título: Modelo de Datos
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el modelo conceptual de datos de ESP Platform.
Su finalidad es establecer las entidades principales de la plataforma y las relaciones existentes entre ellas.
No constituye un diseño físico de base de datos, sino el modelo lógico que servirá como referencia para PostgreSQL y para las APIs del Backend.
2. Objetivos
El modelo deberá:
- representar toda la plataforma;
- evitar duplicidad de información;
- facilitar la escalabilidad;
- mantener independencia respecto al motor de base de datos;
- servir de referencia para toda la implementación.
3. Filosofía
Cada entidad deberá representar un único concepto del negocio.
Las relaciones deberán ser claras y evitar dependencias innecesarias.
El modelo deberá poder evolucionar incorporando nuevas entidades sin alterar las existentes.
4. Entidades principales
El modelo inicial estará formado por las siguientes entidades.
- Organización
- Usuario
- Dispositivo
- Firmware
- Aplicación
- Hardware
- OTA
- Provisioning
- Recovery
- Auditoría
- Grupo
- Configuración
Estas entidades constituyen el núcleo de la plataforma.
5. Organización
Representa una empresa, instalación o cliente.
Ejemplos de atributos:
- identificador;
- nombre;
- descripción;
- estado;
- fecha de creación.
Una organización podrá contener múltiples usuarios y múltiples dispositivos.
6. Usuario
Representa una persona autorizada para utilizar la plataforma.
Ejemplos de atributos:
- identificador;
- nombre;
- correo electrónico;
- contraseña;
- perfil;
- estado.
Cada usuario pertenecerá a una organización.
7. Dispositivo
Representa un equipo físico.
Ejemplos de atributos:
- identificador único;
- nombre;
- hardware;
- aplicación;
- firmware;
- estado;
- dirección IP;
- MAC;
- última conexión.
Cada dispositivo pertenecerá a una única organización.
8. Firmware
Representa una versión concreta de software.
Ejemplos de atributos:
- nombre;
- versión;
- aplicación;
- hardware compatible;
- fecha;
- checksum;
- tamaño.
Un firmware podrá instalarse en múltiples dispositivos compatibles.
9. Aplicación
Representa el tipo funcional del firmware.
Ejemplos:
- AZ-TEMP;
- AZ-POWER;
- AZ-NFC;
- AZ-IO;
- AZ-RELAY.
Cada firmware pertenecerá a una aplicación.
10. Hardware
Representa la plataforma física.
Ejemplos:
- ESP32 DevKit;
- ESP32-S3;
- ESP32-C6;
- futuras placas propias.
Permitirá comprobar compatibilidades antes de instalar firmware.
11. OTA
Representa una operación de actualización.
Ejemplos de atributos:
- dispositivo;
- firmware origen;
- firmware destino;
- fecha;
- estado;
- resultado.
El historial OTA permanecerá asociado al dispositivo.
12. Provisioning
Representa el alta inicial de un dispositivo.
Permitirá almacenar:
- fecha;
- instalador;
- organización;
- parámetros iniciales.
13. Recovery
Representa un proceso de recuperación.
Permitirá registrar:
- motivo;
- fecha;
- firmware recuperado;
- resultado.
14. Auditoría
Representa cualquier operación relevante realizada en la plataforma.
Ejemplos:
- inicio de sesión;
- OTA;
- alta;
- cambios de configuración;
- operaciones administrativas.
15. Grupo
Permitirá organizar dispositivos.
Ejemplos:
- edificio;
- planta;
- laboratorio;
- cliente;
- proyecto.
Un dispositivo podrá pertenecer a varios grupos si la arquitectura futura así lo requiere.
16. Configuración
Representa parámetros persistentes.
Existirán dos grandes categorías:
Configuración del sistema.
Configuración específica de la aplicación.
Ambas deberán permanecer separadas conceptualmente.
17. Relaciones principales
Conceptualmente:
Organización
│
├──── Usuarios
│
└──── Dispositivos
│
├──── Firmware
│
├──── Aplicación
│
├──── Hardware
│
├──── OTA
│
├──── Recovery
│
└──── Configuración
Este modelo constituye la referencia general de toda la plataforma.
18. Evolución futura
El modelo permitirá incorporar posteriormente nuevas entidades.
Ejemplos:
- licencias;
- suscripciones;
- mapas;
- dashboards;
- reglas;
- IA;
- mantenimiento predictivo.
Estas ampliaciones no deberán requerir rediseñar el núcleo del modelo.
19. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-010 Fleet Management;
- SPEC-012 SaaS.
Servirá de base para:
- SPEC-014 APIs;
- implementación PostgreSQL;
- implementación JPA.
20. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-012
Desarrolla:
- Modelo lógico de datos
Implementación:
- Constituirá la referencia conceptual para toda la persistencia de ESP Platform.
SPEC-014 — APIs
Documento: SPEC-014
Título: APIs
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define la arquitectura general de las APIs de ESP Platform.
Las APIs constituyen el mecanismo oficial de comunicación entre los distintos componentes de la plataforma.
Toda comunicación entre aplicaciones deberá realizarse mediante APIs claramente definidas.
2. Objetivos
La arquitectura de APIs deberá:
- mantener desacoplados los componentes;
- facilitar la reutilización;
- simplificar futuras integraciones;
- garantizar estabilidad;
- facilitar el versionado.
3. Filosofía
Las APIs representan contratos.
Una API nunca deberá depender de la implementación interna de un componente.
Mientras el contrato permanezca estable, la implementación podrá evolucionar libremente.
4. Arquitectura
Inicialmente existirán tres grandes grupos de APIs.
Backend API
Utilizada por:
- Frontend Web;
- futuras Apps móviles;
- herramientas externas.
Edge API
Implementada por Edge OS.
Permitirá administrar el dispositivo localmente.
Internal API
Utilizada exclusivamente entre servicios internos del Backend.
No estará disponible para aplicaciones externas.
5. Principios generales
Todas las APIs deberán cumplir:
- simplicidad;
- coherencia;
- estabilidad;
- documentación;
- versionado;
- seguridad.
6. Formato
Las APIs utilizarán inicialmente:
- HTTP;
- JSON;
- UTF-8.
La arquitectura permitirá incorporar posteriormente otros formatos cuando resulte necesario.
7. Versionado
Todas las APIs públicas deberán estar versionadas.
Ejemplo:
/api/v1/
Las nuevas versiones nunca deberán romper la compatibilidad sin una justificación clara.
8. Convenciones
Las rutas deberán ser:
- descriptivas;
- consistentes;
- predecibles.
Ejemplos:
/api/v1/devices
/api/v1/firmware
/api/v1/users
/api/v1/groups
9. Operaciones
Siempre que resulte razonable se utilizarán los métodos HTTP estándar.
Ejemplos:
GET
POST
PUT
DELETE
PATCH
Cada operación deberá tener una responsabilidad claramente definida.
10. Respuestas
Las respuestas deberán seguir un formato uniforme.
Conceptualmente:
{
"success": true,
"data": {},
"message": ""
}
Los errores deberán seguir la misma filosofía.
11. Códigos de estado
Se utilizarán los códigos HTTP apropiados.
Ejemplos:
200
201
400
401
403
404
409
500
No deberán utilizarse códigos ambiguos.
12. Autenticación
Las APIs protegidas requerirán autenticación.
La arquitectura permitirá evolucionar hacia distintos mecanismos sin modificar las rutas.
13. Documentación
Toda API pública deberá estar documentada.
La documentación deberá generarse automáticamente siempre que sea posible.
14. Integración
Las APIs constituirán el único mecanismo oficial de integración.
Ejemplos:
- Frontend;
- aplicaciones móviles;
- automatizaciones;
- terceros.
No deberán realizarse accesos directos a la base de datos.
15. Evolución futura
La arquitectura permitirá incorporar posteriormente:
- WebSocket;
- GraphQL;
- gRPC;
- Streaming;
- APIs públicas.
Estas ampliaciones no deberán afectar al diseño actual.
16. Beneficios
Para el desarrollador:
- menor acoplamiento;
- mayor reutilización;
- mantenimiento sencillo.
Para la plataforma:
- crecimiento ordenado;
- integración sencilla;
- evolución futura.
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-013 Modelo de Datos.
Será utilizada por prácticamente todas las implementaciones de ESP Platform.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-013
Desarrolla:
- Arquitectura de APIs
- Contratos de comunicación
Implementación:
- Constituirá la referencia oficial para todas las APIs desarrolladas dentro de ESP Platform.
SPEC-015 — Estándares de Desarrollo
Documento: SPEC-015
Título: Estándares de Desarrollo
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define los estándares generales de desarrollo que deberán seguir todos los componentes de ESP Platform.
Su objetivo es garantizar que todo el software desarrollado mantenga un nivel homogéneo de calidad, legibilidad y mantenibilidad.
Estas normas serán aplicables tanto al código desarrollado manualmente como al generado mediante inteligencia artificial.
2. Objetivos
Los estándares deberán garantizar:
- uniformidad;
- claridad;
- modularidad;
- reutilización;
- facilidad de mantenimiento;
- facilidad de revisión.
3. Filosofía
Todo desarrollo deberá priorizar:
- simplicidad;
- legibilidad;
- estabilidad;
- mantenibilidad.
La complejidad solo se aceptará cuando aporte un beneficio claramente justificado.
4. Modularidad
Cada módulo deberá tener una única responsabilidad.
Los módulos deberán comunicarse mediante interfaces claramente definidas.
Las dependencias entre módulos deberán mantenerse al mínimo.
5. Organización del código
Cada proyecto deberá mantener una estructura coherente.
La organización deberá facilitar la localización rápida de cualquier componente.
No deberán mezclarse responsabilidades diferentes dentro del mismo módulo.
6. Reutilización
Antes de desarrollar una nueva funcionalidad deberá comprobarse si ya existe un componente reutilizable.
La duplicación de código deberá evitarse siempre que resulte razonable.
7. Documentación
Todo componente relevante deberá estar documentado.
La documentación deberá explicar:
- propósito;
- responsabilidades;
- funcionamiento general;
- limitaciones.
La documentación deberá mantenerse sincronizada con el código.
8. Gestión de errores
Los errores deberán tratarse explícitamente.
No deberán ignorarse excepciones ni situaciones anómalas.
Siempre que resulte posible deberán registrarse para facilitar el diagnóstico.
9. Registro de eventos
Las operaciones relevantes deberán generar información de diagnóstico.
Los mensajes deberán ser claros y útiles.
No deberán utilizarse mensajes ambiguos o poco descriptivos.
10. Calidad del código
El código deberá ser:
- legible;
- consistente;
- fácilmente revisable;
- fácilmente ampliable.
La claridad tendrá prioridad sobre la optimización prematura.
11. Compatibilidad
Las nuevas funcionalidades no deberán romper el funcionamiento existente salvo decisión explícita.
La compatibilidad deberá considerarse durante todo el ciclo de desarrollo.
12. Pruebas
Toda funcionalidad importante deberá verificarse antes de considerarse finalizada.
Siempre que resulte posible deberán realizarse:
- pruebas unitarias;
- pruebas de integración;
- pruebas funcionales.
13. Control de versiones
Todo el desarrollo deberá gestionarse mediante Git.
Los cambios deberán mantenerse organizados y ser fácilmente identificables.
14. Dependencias
Las dependencias externas deberán mantenerse al mínimo.
Solo se incorporarán cuando aporten un beneficio claro para el proyecto.
Siempre que resulte posible deberán utilizarse componentes ampliamente mantenidos.
15. Evolución
La arquitectura deberá facilitar futuras ampliaciones.
Cada nueva funcionalidad deberá integrarse respetando las decisiones arquitectónicas ya establecidas.
No deberán introducirse soluciones aisladas que rompan la coherencia del proyecto.
16. Beneficios
Para el desarrollador:
- mayor productividad;
- menor complejidad;
- revisiones más sencillas.
Para el proyecto:
- mantenimiento reducido;
- evolución ordenada;
- menor deuda técnica.
17. Relación con otras SPEC
Esta especificación complementa todas las SPEC anteriores.
Será utilizada especialmente junto con:
- SPEC-004 Edge OS;
- SPEC-005 Backend;
- SPEC-019 Normas para Codex.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-014
Desarrolla:
- Estándares generales de desarrollo
Implementación:
- Constituirá la referencia común para cualquier desarrollo realizado dentro de ESP Platform.
SPEC-016 — Estándares UI/UX
Documento: SPEC-016
Título: Estándares UI/UX
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define los estándares de interfaz de usuario (UI) y experiencia de usuario (UX) que deberán seguir todos los componentes de ESP Platform.
Su objetivo es proporcionar una experiencia homogénea, intuitiva y profesional en toda la plataforma, independientemente del dispositivo o aplicación utilizada.
2. Objetivos
La experiencia de usuario deberá transmitir:
- simplicidad;
- claridad;
- rapidez;
- consistencia;
- sensación de producto profesional.
Todas las aplicaciones deberán compartir la misma filosofía visual.
3. Filosofía
La interfaz nunca deberá recordar a una herramienta técnica de desarrollo.
ESP Platform deberá percibirse como un producto comercial de alta calidad.
La complejidad técnica deberá permanecer oculta siempre que sea posible.
4. Consistencia
Todos los componentes deberán compartir:
- misma identidad visual;
- misma terminología;
- misma organización;
- mismos criterios de navegación;
- mismos mensajes.
El usuario no deberá aprender una interfaz diferente para cada módulo.
5. Diseño
El diseño deberá priorizar:
- espacios amplios;
- buena legibilidad;
- pocos elementos simultáneos;
- navegación sencilla;
- jerarquía visual clara.
La información importante deberá destacar de forma natural.
6. Navegación
Toda la plataforma deberá resultar fácilmente navegable.
El usuario deberá saber siempre:
- dónde se encuentra;
- qué está haciendo;
- qué ocurrirá al realizar una acción.
7. Formularios
Los formularios deberán minimizar el número de campos.
Siempre que sea posible:
- valores por defecto;
- autocompletado;
- validación inmediata;
- mensajes claros.
8. Mensajes
Todos los mensajes deberán ser:
- comprensibles;
- breves;
- útiles;
- consistentes.
Nunca deberán mostrarse errores técnicos al usuario cuando puedan sustituirse por explicaciones más claras.
9. Colores
Los colores deberán utilizarse con un propósito.
Ejemplos:
- éxito;
- advertencia;
- error;
- información.
El color nunca deberá ser el único mecanismo para transmitir información importante.
10. Iconografía
Los iconos deberán ser:
- sencillos;
- reconocibles;
- consistentes.
Todo icono importante deberá ir acompañado de texto cuando sea necesario.
11. Adaptabilidad
Toda la plataforma deberá funcionar correctamente en:
- ordenador;
- tablet;
- teléfono móvil.
El diseño será responsive desde el inicio.
12. Rendimiento
La interfaz deberá responder con rapidez.
El usuario deberá recibir siempre información sobre el progreso de operaciones largas.
Ejemplos:
- barras de progreso;
- indicadores de carga;
- mensajes de estado.
13. Accesibilidad
Siempre que resulte posible deberán seguirse criterios básicos de accesibilidad.
Ejemplos:
- contraste adecuado;
- tamaño suficiente;
- navegación mediante teclado;
- etiquetas descriptivas.
14. Experiencia del instalador
Las operaciones habituales deberán requerir el menor número posible de pasos.
Ejemplos:
- Flasher;
- Provisioning;
- OTA.
El objetivo será reducir tiempos de instalación y errores.
15. Beneficios
Para el usuario:
- aprendizaje rápido;
- menor frustración;
- sensación de calidad.
Para el administrador:
- menor tiempo de formación;
- menor número de incidencias.
Para la plataforma:
- identidad propia;
- coherencia;
- diferenciación frente a otras soluciones.
16. Evolución futura
La identidad visual podrá evolucionar.
Sin embargo deberán mantenerse:
- coherencia;
- simplicidad;
- facilidad de uso.
Las mejoras visuales nunca deberán perjudicar la usabilidad.
17. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-006 Flasher Web;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management.
Será aplicable a toda interfaz desarrollada para ESP Platform.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-015
Desarrolla:
- Estándares UI
- Estándares UX
- Experiencia de usuario
Implementación:
- Constituirá la referencia común para todas las interfaces de usuario desarrolladas dentro de ESP Platform.
SPEC-017 — Convenciones de Nomenclatura
Documento: SPEC-017
Título: Convenciones de Nomenclatura
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define las convenciones de nomenclatura que deberán utilizarse en todos los componentes de ESP Platform.
Su objetivo es mantener una terminología uniforme en el código, la documentación, la infraestructura y los dispositivos.
Una nomenclatura coherente reduce errores y facilita el mantenimiento del proyecto.
2. Objetivos
Las convenciones deberán garantizar:
- claridad;
- coherencia;
- legibilidad;
- escalabilidad;
- facilidad de búsqueda.
Todos los desarrollos deberán seguir estas normas.
3. Filosofía
Cada elemento deberá tener un único nombre oficial.
No deberán utilizarse nombres diferentes para representar el mismo concepto.
La terminología utilizada en la documentación deberá coincidir con la utilizada en el software.
4. Nombre del proyecto
El nombre oficial será:
ESP Platform
Los componentes internos utilizarán este nombre como referencia.
5. Aplicaciones
Las aplicaciones oficiales seguirán el prefijo:
AZ-
Ejemplos:
- AZ-TEMP
- AZ-POWER
- AZ-NFC
- AZ-IO
- AZ-RELAY
Nuevas aplicaciones deberán respetar este criterio.
6. Edge OS
El sistema operativo común recibirá el nombre:
Aeizoon Edge OS
No deberán utilizarse variantes diferentes.
7. Backend
El Backend se identificará como:
ESP Platform Backend
Los módulos internos podrán disponer de nombres específicos siempre que mantengan coherencia.
8. Firmware
Las versiones de firmware deberán identificarse mediante:
- aplicación;
- versión;
- hardware.
Ejemplo conceptual:
AZ-TEMP v1.2.0 ESP32-S3
9. Hardware
Los modelos deberán identificarse mediante nombres claros y consistentes.
Ejemplos:
- ESP32 DevKit
- ESP32-S3
- ESP32-C6
- Aeizoon Board (futuro)
10. Base de datos
Las entidades deberán utilizar nombres descriptivos.
Las tablas representarán conceptos del negocio.
Se evitarán abreviaturas innecesarias.
11. APIs
Las rutas deberán mantener una estructura uniforme.
Ejemplo:
/api/v1/devices
/api/v1/firmware
/api/v1/users
/api/v1/groups
12. Código
Las clases, paquetes y módulos deberán utilizar nombres descriptivos.
No deberán utilizarse nombres genéricos como:
- Utils
- Misc
- Temp
- Test
Salvo justificación clara.
13. Variables
Los nombres deberán describir claramente su propósito.
Se evitarán abreviaturas ambiguas.
La claridad tendrá prioridad sobre la brevedad.
14. Documentación
Toda la documentación deberá utilizar la misma terminología definida en esta especificación.
No deberán coexistir nombres alternativos para un mismo concepto.
15. Evolución
La incorporación de nuevos nombres deberá respetar los criterios definidos en este documento.
Cuando aparezca un nuevo concepto, deberá asignársele un nombre único antes de comenzar su implementación.
16. Beneficios
Para el desarrollador:
- mayor claridad;
- menor confusión;
- búsqueda más sencilla.
Para el proyecto:
- documentación consistente;
- mantenimiento simplificado;
- menor deuda técnica.
17. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-004 Edge OS;
- SPEC-005 Backend;
- SPEC-014 APIs;
- SPEC-015 Estándares de Desarrollo.
Será aplicable a todo el ecosistema ESP Platform.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-016
Desarrolla:
- Convenciones de nomenclatura
- Terminología oficial
Implementación:
- Constituirá la referencia oficial para todos los nombres utilizados dentro de ESP Platform.
SPEC-018 — Architecture Decision Records (ADR)
Documento: SPEC-018
Título: Architecture Decision Records (ADR)
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el uso de Architecture Decision Records (ADR) dentro de ESP Platform.
Su objetivo es conservar de forma permanente las decisiones arquitectónicas relevantes adoptadas durante el desarrollo del proyecto.
Los ADR permitirán comprender no solo qué se decidió, sino también por qué se tomó cada decisión.
2. Objetivos
Los ADR deberán permitir:
- documentar decisiones importantes;
- justificar alternativas descartadas;
- preservar el conocimiento del proyecto;
- facilitar futuras revisiones;
- reducir la dependencia del conocimiento personal.
3. Filosofía
Toda decisión arquitectónica significativa deberá quedar registrada.
Las decisiones pequeñas del desarrollo diario no requerirán un ADR.
Solo deberán documentarse aquellas decisiones cuyo impacto sea relevante para la evolución del proyecto.
4. Cuándo crear un ADR
Se generará un ADR cuando exista una decisión relacionada con:
- arquitectura;
- tecnologías;
- seguridad;
- almacenamiento;
- comunicaciones;
- interfaces;
- despliegue;
- mantenimiento.
5. Contenido mínimo
Cada ADR deberá incluir como mínimo:
- identificador;
- fecha;
- estado;
- contexto;
- decisión adoptada;
- consecuencias.
6. Estados
Los ADR podrán encontrarse en alguno de los siguientes estados:
- Propuesto.
- Aprobado.
- Sustituido.
- Obsoleto.
El historial deberá conservarse.
7. Numeración
Cada ADR dispondrá de un identificador único.
Ejemplos:
ADR-001
ADR-002
ADR-003
La numeración será secuencial.
8. Relación con las SPEC
Las SPEC definen la arquitectura general.
Los ADR documentan decisiones concretas tomadas durante la implementación.
Las SPEC constituyen documentos permanentes.
Los ADR reflejan la evolución del proyecto.
9. Modificación
Un ADR aprobado no deberá modificarse.
Si cambia una decisión, deberá generarse un nuevo ADR indicando cuál sustituye al anterior.
Esto permitirá conservar el historial completo.
10. Responsabilidad
Los ADR podrán ser redactados por:
- desarrolladores;
- arquitectos;
- Codex.
La aprobación corresponderá al responsable del proyecto.
11. Beneficios
Los ADR permitirán:
- comprender decisiones antiguas;
- evitar repetir análisis ya realizados;
- facilitar la incorporación de nuevos desarrolladores;
- mejorar la continuidad del proyecto.
12. Evolución futura
La plataforma podrá incorporar herramientas para consultar automáticamente los ADR.
También podrán relacionarse con:
- incidencias;
- versiones;
- Roadmap;
- documentación técnica.
13. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-001 Filosofía;
- SPEC-002 Arquitectura;
- SPEC-015 Estándares de Desarrollo.
Será aplicable a todas las decisiones arquitectónicas futuras.
14. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-017
Desarrolla:
- Gestión de Architecture Decision Records
Implementación:
- Constituirá el procedimiento oficial para registrar las decisiones arquitectónicas relevantes de ESP Platform.
SPEC-019 — Normas para Codex
Documento: SPEC-019
Título: Normas para Codex
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define las normas generales que deberán seguir Codex y cualquier otro agente de inteligencia artificial durante el desarrollo de ESP Platform.
Su objetivo es garantizar que toda implementación respete la arquitectura, los estándares y la filosofía del proyecto.
2. Objetivos
Codex deberá:
- respetar la arquitectura definida;
- mantener la coherencia del proyecto;
- minimizar la deuda técnica;
- documentar su trabajo;
- facilitar el mantenimiento futuro.
3. Filosofía
Codex actuará como desarrollador del proyecto, no como diseñador de la arquitectura.
La arquitectura se encuentra definida en las SPEC.
Las modificaciones arquitectónicas deberán proponerse, nunca aplicarse automáticamente.
4. Alcance
Codex podrá:
- implementar;
- refactorizar;
- documentar;
- corregir errores;
- realizar pruebas;
- mejorar el código.
No deberá modificar decisiones arquitectónicas sin aprobación expresa.
5. Principios generales
Toda implementación deberá respetar:
- simplicidad;
- modularidad;
- claridad;
- mantenibilidad;
- reutilización.
6. Arquitectura
Antes de implementar cualquier funcionalidad, Codex deberá comprobar que resulta coherente con las SPEC existentes.
En caso de conflicto deberá informar antes de continuar.
7. Reutilización
Antes de crear un nuevo componente deberá comprobar si ya existe uno reutilizable.
La duplicación de código deberá evitarse siempre que sea posible.
8. Documentación
Toda funcionalidad relevante deberá ir acompañada de la documentación correspondiente.
La documentación deberá mantenerse sincronizada con el código.
9. Calidad
Codex deberá priorizar:
- código legible;
- estructura clara;
- responsabilidades bien definidas;
- bajo acoplamiento.
La claridad tendrá prioridad sobre soluciones excesivamente complejas.
10. Validación
Toda funcionalidad implementada deberá verificarse antes de considerarse terminada.
Siempre que resulte posible deberán realizarse pruebas adecuadas.
Los resultados deberán documentarse.
11. Cambios
Los cambios importantes deberán explicarse.
Cuando una implementación implique decisiones relevantes, Codex deberá indicar:
- qué cambia;
- por qué cambia;
- consecuencias.
12. Comunicación
Las respuestas deberán ser:
- claras;
- técnicas;
- concisas;
- orientadas a la implementación.
Cuando exista incertidumbre deberá indicarse explícitamente.
13. Gestión de incidencias
Ante un problema, Codex deberá:
- identificar la causa;
- proponer alternativas;
- justificar la solución adoptada.
No deberá ocultar limitaciones conocidas.
14. Relación con los ADR
Cuando una decisión implique un cambio arquitectónico significativo, Codex deberá proponer la creación de un nuevo ADR.
Las SPEC únicamente cambiarán mediante decisión expresa del responsable del proyecto.
15. Relación con el Roadmap
Codex deberá respetar el Roadmap definido para ESP Platform.
No deberá adelantar fases sin autorización.
Cada implementación deberá corresponder con la fase activa del proyecto.
16. Beneficios
Estas normas permitirán:
- mantener la coherencia;
- reducir errores;
- facilitar revisiones;
- preservar la arquitectura;
- acelerar el desarrollo.
17. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-015 Estándares de Desarrollo;
- SPEC-018 ADR.
Será aplicable durante todo el ciclo de vida del proyecto.
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-018
Desarrolla:
- Normas de trabajo para Codex
- Reglas de implementación
Implementación:
- Constituirá el marco de trabajo obligatorio para cualquier agente de inteligencia artificial que participe en el desarrollo de ESP Platform.
SPEC-020 — Roadmap
Documento: SPEC-020
Título: Roadmap
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
1. Propósito
Esta especificación define el Roadmap oficial de ESP Platform.
Su objetivo es establecer el orden de ejecución del proyecto para garantizar un desarrollo progresivo, coherente y alineado con la arquitectura definida en las SPEC anteriores.
El Roadmap constituye la planificación de alto nivel del proyecto.
2. Filosofía
El desarrollo deberá realizarse mediante fases incrementales.
Cada fase deberá generar un resultado funcional antes de comenzar la siguiente.
No deberán iniciarse fases posteriores mientras la fase actual no se considere suficientemente estable.
3. MVP
El primer objetivo del proyecto será disponer de un MVP completamente funcional.
El MVP deberá permitir:
- instalar firmware mediante Flasher Web;
- arrancar un ESP32;
- acceder a la interfaz web del dispositivo;
- gestionar firmware desde el Backend.
La finalidad del MVP será validar toda la arquitectura definida.
4. Fase 1
Infraestructura.
Objetivos:
- crear la máquina virtual;
- desplegar el Backend;
- configurar PostgreSQL;
- desplegar el Frontend;
- preparar el repositorio de firmware.
Resultado esperado:
Infraestructura completamente operativa.
5. Fase 2
Flasher Web.
Objetivos:
- cargar firmware;
- seleccionar hardware;
- conectar mediante USB;
- flashear un ESP32;
- verificar el resultado.
Resultado esperado:
Primer dispositivo funcionando.
6. Fase 3
Edge OS.
Objetivos:
- estructura común del firmware;
- configuración;
- interfaz web;
- MQTT;
- Modbus TCP.
Resultado esperado:
Primer firmware oficial.
7. Fase 4
Provisioning.
Objetivos:
- alta automática;
- identidad;
- QR;
- registro en Backend.
Resultado esperado:
Primer dispositivo integrado completamente en ESP Platform.
8. Fase 5
OTA.
Objetivos:
- actualización remota;
- verificación;
- rollback.
Resultado esperado:
Actualizaciones seguras.
9. Fase 6
Recovery.
Objetivos:
- recuperación;
- Factory Reset;
- diagnóstico.
Resultado esperado:
Arquitectura resiliente.
10. Fase 7
Fleet Management.
Objetivos:
- inventario;
- monitorización;
- operaciones remotas.
Resultado esperado:
Administración centralizada.
11. Fase 8
Aplicaciones.
Desarrollo progresivo de:
- AZ-TEMP;
- AZ-POWER;
- AZ-NFC;
- AZ-IO;
- AZ-RELAY.
Cada aplicación reutilizará Edge OS.
12. Fase 9
Industrialización.
Objetivos:
- hardware propio;
- fabricación;
- certificaciones;
- documentación;
- soporte.
Resultado esperado:
Producto comercial.
13. Fase 10
Modelo SaaS.
Objetivos:
- multiempresa;
- multiusuario;
- licencias;
- suscripciones;
- despliegue cloud.
Resultado esperado:
ESP Platform como servicio.
14. Prioridades
El orden de prioridad será siempre:
- Arquitectura.
- Estabilidad.
- Funcionalidad.
- Rendimiento.
- Optimización.
Nunca deberá sacrificarse la arquitectura por acelerar una implementación.
15. Gestión del conocimiento
Durante todo el desarrollo deberán mantenerse actualizados:
- SPEC;
- ADR;
- documentación técnica;
- Roadmap.
La documentación formará parte del producto.
16. Evolución
El Roadmap podrá ampliarse.
Las nuevas fases deberán respetar la arquitectura definida en las SPEC anteriores.
Las modificaciones importantes deberán documentarse mediante ADR.
17. Finalización
Se considerará completada una fase cuando:
- los objetivos se hayan alcanzado;
- las pruebas sean satisfactorias;
- la documentación esté actualizada.
Solo entonces podrá iniciarse la siguiente fase.
18. Relación con otras SPEC
Esta especificación resume y coordina todas las SPEC anteriores.
Constituye el documento de referencia para planificar el desarrollo de ESP Platform.
19. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-019
Desarrolla:
- Planificación general
- Roadmap oficial
Implementación:
- Constituirá la guía oficial para la ejecución del proyecto y la priorización de todas las fases de desarrollo de ESP Platform.
ESP Platform
Constitución del Proyecto
Documento maestro
Versión: 1.0
***
Introducción
Bienvenido a la Constitución de ESP Platform.
Este documento constituye la referencia arquitectónica oficial del proyecto.
Su finalidad es proporcionar una visión completa del sistema antes de comenzar cualquier implementación, garantizando que todas las decisiones técnicas respeten una arquitectura común y puedan evolucionar sin perder coherencia.
La Constitución está formada por veinte especificaciones (SPEC) que describen la filosofía del proyecto, su arquitectura, los estándares de desarrollo y el Roadmap de evolución.
Todas las implementaciones realizadas por desarrolladores humanos o agentes de inteligencia artificial deberán respetar las decisiones recogidas en este documento.
Cuando sea necesario modificar la arquitectura, dichas modificaciones deberán aprobarse explícitamente y documentarse mediante un ADR (Architecture Decision Record).
***
Cómo utilizar este documento
Las SPEC deben leerse en orden.
Cada una desarrolla un aspecto concreto de la plataforma y complementa a las anteriores.
No constituyen documentos independientes, sino capítulos de una misma arquitectura.
***
Índice
Arquitectura
- SPEC-001 — Filosofía y Visión
- SPEC-002 — Arquitectura Global
- SPEC-003 — Aeizoon Edge Platform
- SPEC-004 — Edge OS
- SPEC-005 — Backend Central
Infraestructura de dispositivos
- SPEC-006 — Flasher Web
- SPEC-007 — OTA y Rollback
- SPEC-008 — Recovery
- SPEC-009 — Provisioning y QR
- SPEC-010 — Fleet Management
Plataforma
- SPEC-011 — Seguridad
- SPEC-012 — Modelo SaaS
- SPEC-013 — Modelo de Datos
- SPEC-014 — APIs
Desarrollo
- SPEC-015 — Estándares de Desarrollo
- SPEC-016 — Estándares UI/UX
- SPEC-017 — Convenciones de Nomenclatura
- SPEC-018 — Architecture Decision Records (ADR)
- SPEC-019 — Normas para Codex
- SPEC-020 — Roadmap
***
Estado del documento
Documento: ESP_PLATFORM_ARCHITECTURE_v1.0.md
Versión: 1.0
Estado: Aprobado
Número de SPEC: 20
Número de ADR: 0
Fecha de creación: julio de 2026
Responsable de arquitectura:
Juan Antonio
Arquitectura:
ESP Platform
Estado del proyecto:
Fase de implementación.
SPEC-001 — Filosofía y Visión de ESP Platform
Documento: SPEC-001
Título: Filosofía y Visión
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define la filosofía, visión y principios generales de ESP Platform.
Su función es dar contexto a Codex y a cualquier desarrollador que participe en el proyecto, evitando que las primeras implementaciones se conviertan en soluciones aisladas sin coherencia futura.
ESP Platform debe desarrollarse como una plataforma reutilizable, no como una colección de firmwares independientes.
***
2. Visión
ESP Platform nace inicialmente para cubrir necesidades propias de domótica, automatización, monitorización y control.
Sin embargo, desde el primer día se diseñará con mentalidad de producto profesional, de forma que pueda evolucionar en el futuro hacia:
- uso doméstico avanzado;
- instalaciones profesionales;
- aplicaciones industriales ligeras;
- producto comercial;
- backend multiinstalación;
- posible modelo SaaS.
El objetivo inicial no es construir una empresa ni una plataforma completa desde el primer día.
El objetivo inmediato es construir una base técnica correcta que permita validar el concepto y crecer sin rehacerlo todo.
***
3. Misión
La misión de ESP Platform es permitir crear dispositivos basados inicialmente en ESP32 que compartan:
- arquitectura común;
- sistema de configuración;
- sistema de actualización;
- modelo de comunicaciones;
- backend;
- experiencia de usuario;
- herramientas de desarrollo;
- gestión centralizada futura.
Cada nuevo dispositivo deberá aprovechar el trabajo ya realizado en los anteriores.
***
4. Qué NO es ESP Platform
ESP Platform no es:
- un sketch suelto de Arduino;
- un firmware único para un ESP32;
- una web aislada para flashear dispositivos;
- una colección de pruebas;
- un simple servidor MQTT;
- un backend sin relación con el firmware;
- una solución cerrada solo para AZ-TEMP.
La web de flasheo, los firmwares, el backend, el OTA y las aplicaciones son piezas de un sistema mayor.
***
5. Componentes principales
ESP Platform se organizará en los siguientes bloques.
5.1 Edge OS
Base común que residirá en los dispositivos.
Deberá proporcionar servicios reutilizables como:
- red;
- configuración persistente;
- almacenamiento;
- OTA;
- rollback;
- recovery;
- MQTT;
- Modbus;
- web local;
- API local;
- logs;
- diagnóstico;
- seguridad;
- provisioning.
5.2 Aplicaciones
Cada aplicación añadirá lógica específica sobre Edge OS.
Aplicaciones previstas:
AZ-TEMP
Dispositivo para adquisición de temperaturas.
Funciones previstas:
- sondas DS18B20;
- nombres configurables;
- calibración;
- MQTT;
- Modbus TCP;
- API REST;
- alarmas futuras.
AZ-POWER
Pasarela para medidores de energía.
Funciones previstas:
- RS485;
- Modbus RTU Master;
- lectura de analizadores eléctricos;
- publicación MQTT;
- integración con backend, Node-RED y Grafana.
AZ-NFC
Dispositivo para identificación y control mediante NFC.
Funciones previstas:
- lectura de tarjetas;
- identificación de usuarios;
- control de accesos;
- automatización;
- integración con backend.
AZ-IO
Módulo de entradas y salidas.
Funciones previstas:
- entradas digitales;
- salidas digitales;
- entradas analógicas;
- salidas analógicas;
- contadores;
- integración con automatización.
AZ-RELAY
Módulo de relés y actuadores.
Funciones previstas:
- control de relés;
- contactores;
- escenas;
- temporizaciones;
- maniobras;
- control remoto.
5.3 Plataforma central
Backend previsto en:
iot.aeizoon.com
Funciones futuras:
- inventario de dispositivos;
- catálogo de firmwares;
- flasher web;
- OTA centralizada;
- provisioning;
- QR de alta;
- usuarios;
- logs;
- fleet management;
- API;
- posible SaaS.
5.4 Herramientas de desarrollo
El desarrollo deberá apoyarse en:
- Codex CLI;
- PlatformIO;
- ESP-IDF;
- Git;
- VM Debian;
- systemd;
- PostgreSQL;
- Nginx.
***
6. Principios básicos
6.1 Primero validar, después ampliar
La plataforma debe crecer por fases.
El primer objetivo práctico será validar:
1. VM funcional.
2. Web de flasheo.
3. Subida de un ".bin".
4. Flasheo de un ESP32 vacío por USB desde navegador.
No se deberá implementar el sistema completo antes de validar este flujo básico.
6.2 Arquitectura común
Toda pieza nueva deberá diseñarse pensando en su reutilización futura.
Si una funcionalidad puede servir para varios dispositivos, deberá considerarse parte de la plataforma común.
6.3 Configuración separada del firmware
La configuración no debe perderse al actualizar firmware.
El firmware será reemplazable.
La configuración deberá persistir.
6.4 OTA segura
Las actualizaciones futuras deberán diseñarse con:
- doble partición;
- rollback;
- comprobación de integridad;
- recovery.
6.5 Web local en dispositivos
Los dispositivos deberán tener una web interna para:
- configuración;
- diagnóstico;
- estado;
- OTA local;
- mantenimiento.
6.6 Backend como centro de gestión
El backend no debe ser una simple web auxiliar.
Debe evolucionar hacia el centro de gestión de la plataforma.
6.7 Experiencia de producto
Aunque el proyecto nazca para uso propio, la experiencia debe parecer la de un producto cuidado:
- instalación sencilla;
- interfaz clara;
- nombres consistentes;
- mensajes comprensibles;
- flujos guiados;
- posibilidad de QR;
- recuperación ante errores.
6.8 No sobredimensionar antes del MVP
La visión comercial no debe bloquear la validación técnica.
Primero debe funcionar el flujo mínimo.
Después se ampliará.
***
7. Relación con Codex
Codex actuará como implementador técnico.
Debe recibir esta documentación para entender:
- el objetivo global;
- las fases;
- las restricciones;
- el estilo arquitectónico;
- lo que debe evitar.
Codex no deberá convertir una fase concreta en una solución cerrada que impida el crecimiento futuro.
Tampoco deberá intentar construir toda la plataforma de golpe.
Debe implementar exactamente la fase solicitada, dejando la estructura preparada para las siguientes.
***
8. Criterio de éxito inicial
El primer éxito real del proyecto será:
Entrar en iot.aeizoon.com o en la IP interna de la VM,
subir un firmware .bin,
conectar un ESP32 vacío por USB,
seleccionar el firmware,
flashear el dispositivo desde el navegador
y comprobar que arranca.
Hasta conseguir ese resultado, todo lo demás es secundario.
***
9. Criterio de éxito futuro
ESP Platform será considerada madura cuando sea posible crear nuevos dispositivos reutilizando la misma base:
Edge OS
+
aplicación específica
+
backend común
+
OTA
+
provisioning
+
fleet management
El objetivo final es que desarrollar un nuevo producto no implique volver a resolver desde cero:
- configuración;
- comunicaciones;
- OTA;
- recuperación;
- flasheo;
- backend;
- UX.
***
10. Regla fundamental
La documentación debe servir al proyecto.
El proyecto no debe quedar bloqueado por la documentación.
Esta Constitución existe para dar dirección a Codex y evitar contradicciones, no para retrasar indefinidamente la implementación.
***
11. Estado documental
Estado: Pendiente de aprobación
Dependencias: Ninguna
Desarrolla: Visión general del proyecto
Implementación: No aplica directamente
***
SPEC-002 — Arquitectura Global de ESP Platform
Documento: SPEC-002
Título: Arquitectura Global
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define la arquitectura general de ESP Platform.
Mientras la SPEC-001 explica la filosofía del proyecto, esta especificación describe cómo se organiza la plataforma y cómo se relacionan sus componentes.
No entra en el detalle interno de cada componente; dicho detalle se desarrolla en las especificaciones posteriores.
***
2. Objetivo de la arquitectura
La arquitectura debe permitir desarrollar múltiples dispositivos reutilizando una infraestructura común.
Cada nuevo dispositivo deberá implementar únicamente su lógica específica.
Todo aquello que pueda compartirse entre varios dispositivos deberá formar parte de la plataforma.
El crecimiento del proyecto deberá producirse mediante la incorporación de nuevos módulos y aplicaciones, evitando duplicar funcionalidades ya existentes.
***
3. Visión global
La plataforma se divide en cinco grandes bloques.
ESP Platform
│
┌──────────────┬────────────┴────────────┬──────────────┐
│ │ │ │
│ │ │ │
Desarrollo Plataforma Edge Backend Central Usuario
│ │ │ │
│ │ │ │
PlatformIO Edge OS iot.aeizoon.com Navegador
ESP-IDF Aplicaciones PostgreSQL App móvil (futuro)
Codex CLI Web Local OTA API
Git MQTT Fleet QR
Modbus Firmware
Cada bloque tiene responsabilidades claramente definidas.
***
4. Componentes de la plataforma
La plataforma se compone de cuatro niveles principales.
Nivel 1 — Desarrollo
Conjunto de herramientas utilizadas para crear el software.
Incluye:
- Codex CLI
- PlatformIO
- ESP-IDF
- Git
- Máquina Virtual de desarrollo
- Sistema de compilación
- Publicación de firmware
Estas herramientas no forman parte del producto final, pero sí del ecosistema de desarrollo.
***
Nivel 2 — Plataforma Edge
Corresponde al software residente en cada dispositivo.
Está formado por:
- Edge OS
- Aplicación instalada
El dispositivo deberá ser completamente autónomo para realizar sus funciones principales.
El backend no deberá ser imprescindible para el funcionamiento normal.
***
Nivel 3 — Backend
Corresponde al servidor central.
Inicialmente estará instalado en una VM Debian.
Funciones previstas:
- gestión de firmware
- flasher web
- OTA
- inventario
- dispositivos
- usuarios
- logs
- provisioning
- Fleet Management
- API
***
Nivel 4 — Usuario
Es la capa de interacción.
Inicialmente estará formada por una aplicación web.
En el futuro podrán existir aplicaciones móviles utilizando las mismas APIs.
***
5. Separación de responsabilidades
Cada bloque tiene responsabilidades exclusivas.
Desarrollo
Responsable de crear el software.
Nunca participa en la ejecución normal del sistema.
***
Edge
Responsable de:
- adquisición de datos
- control
- automatización local
- comunicaciones
- diagnóstico
Debe seguir funcionando aunque el backend esté fuera de servicio.
***
Backend
Responsable de:
- administración
- inventario
- actualizaciones
- almacenamiento histórico
- configuración global
- gestión de usuarios
No debe asumir funciones críticas de tiempo real que pertenezcan al Edge.
***
Usuario
Responsable únicamente de interactuar con el sistema.
No debe contener lógica de negocio.
***
6. Principios arquitectónicos
La arquitectura de ESP Platform se basa en los siguientes principios.
6.1 Independencia
Cada componente deberá poder evolucionar con el mínimo impacto sobre los demás.
***
6.2 Modularidad
Cada módulo tendrá una responsabilidad única.
Los módulos se comunicarán mediante interfaces claramente definidas.
***
6.3 Escalabilidad
La plataforma deberá crecer añadiendo componentes, no modificando los existentes.
***
6.4 Reutilización
Siempre que una funcionalidad pueda reutilizarse por más de una aplicación deberá incorporarse al núcleo común.
***
6.5 Baja dependencia
La comunicación entre módulos deberá minimizar el acoplamiento.
Las dependencias cruzadas deberán evitarse.
***
7. Flujo general de funcionamiento
El funcionamiento habitual será el siguiente.
Usuario
│
│ Navegador
▼
Backend
│
├───────────── OTA
│
├───────────── API
│
├───────────── Inventario
│
▼
Dispositivo
│
├──────── MQTT
├──────── Modbus
├──────── API Local
├──────── Web Local
└──────── Hardware
***
8. Flujo de desarrollo
El desarrollo de una nueva aplicación seguirá el siguiente proceso.
Arquitectura
│
▼
Codex
│
▼
PlatformIO
│
▼
Compilación
│
▼
Firmware (.bin)
│
▼
Repositorio Firmware
│
▼
Flasher Web
│
▼
ESP32
En el futuro:
Repositorio Firmware
↓
OTA
↓
Dispositivos en producción
***
9. Arquitectura del dispositivo
Cada dispositivo seguirá siempre el mismo esquema.
+--------------------------------------+
| Aplicación |
| (AZ-TEMP / POWER / NFC / ...) |
+--------------------------------------+
| Edge OS |
|--------------------------------------|
| Configuración |
| MQTT |
| Modbus |
| OTA |
| Recovery |
| Logging |
| Seguridad |
| Web |
| API |
+--------------------------------------+
| ESP-IDF |
+--------------------------------------+
| Hardware |
+--------------------------------------+
Esto garantiza que todas las aplicaciones compartan la misma infraestructura.
***
10. Arquitectura del backend
El backend estará formado por módulos independientes.
Inicialmente:
Frontend Web
↓
API
↓
Servicios
↓
PostgreSQL
↓
Repositorio Firmware
Cada módulo deberá poder evolucionar de forma independiente.
***
11. Arquitectura de comunicaciones
Inicialmente coexistirán cuatro canales principales.
HTTP / HTTPS
Administración.
MQTT
Eventos.
Telemetría.
Mensajería.
Modbus TCP
Integración industrial.
USB
Flasheo inicial.
En el futuro podrán añadirse nuevos protocolos sin modificar la arquitectura principal.
***
12. Escalabilidad prevista
La arquitectura debe permitir evolucionar desde:
1 ESP32
hasta:
Centenares de dispositivos
sin modificar la estructura fundamental del sistema.
La escalabilidad deberá obtenerse añadiendo nuevos módulos, nunca rediseñando los existentes.
***
13. Relación con las siguientes SPEC
Esta especificación actúa como mapa general.
Las siguientes especificaciones desarrollarán cada componente.
- SPEC-003 → Aeizoon Edge Platform
- SPEC-004 → Edge OS
- SPEC-005 → Backend
- SPEC-006 → Flasher Web
- SPEC-007 → OTA
- SPEC-008 → Recovery
- SPEC-009 → Provisioning
- SPEC-010 → Fleet Management
- ...
No deberán redefinir esta arquitectura, sino ampliarla.
***
14. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
Desarrolla:
- Arquitectura general de ESP Platform
Implementación:
- Será utilizada como referencia durante todas las fases del desarrollo.
***
SPEC-003 — Aeizoon Edge Platform
Documento: SPEC-003
Título: Aeizoon Edge Platform (AEP)
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define Aeizoon Edge Platform (AEP), el núcleo conceptual sobre el que se desarrollarán todos los dispositivos de ESP Platform.
Su finalidad es evitar que cada nuevo firmware vuelva a implementar servicios comunes y garantizar una arquitectura uniforme en todos los dispositivos.
Todas las aplicaciones deberán ejecutarse sobre AEP.
***
2. Definición
Aeizoon Edge Platform (AEP) es la plataforma software residente en cada dispositivo Edge.
No es una aplicación.
No es un firmware específico.
No depende de AZ-TEMP ni de ninguna otra aplicación.
AEP proporciona servicios comunes para que cualquier aplicación pueda centrarse exclusivamente en su lógica funcional.
Puede entenderse como la infraestructura común de todos los dispositivos.
***
3. Objetivos
AEP debe conseguir que desarrollar un nuevo dispositivo consista únicamente en implementar la lógica específica del producto.
Todo lo demás deberá existir previamente dentro de la plataforma.
Los principales objetivos son:
- reutilización;
- modularidad;
- mantenimiento sencillo;
- evolución controlada;
- comportamiento homogéneo;
- reducción del tiempo de desarrollo.
***
4. Responsabilidades
AEP será responsable de todos aquellos servicios que puedan ser utilizados por más de una aplicación.
Entre ellos:
- gestión de red;
- configuración;
- almacenamiento persistente;
- servidor web;
- API local;
- autenticación;
- MQTT;
- Modbus TCP;
- OTA;
- rollback;
- recovery;
- logging;
- diagnóstico;
- identificación del dispositivo;
- información de versión;
- gestión de usuarios locales (si aplica);
- monitorización interna.
Las aplicaciones no deberán implementar nuevamente estas capacidades.
***
5. Qué NO pertenece a AEP
Las siguientes funciones pertenecen exclusivamente a las aplicaciones.
Ejemplos:
AZ-TEMP
- lectura de temperatura;
- calibración de sondas;
- alarmas de temperatura.
AZ-POWER
- lectura de medidores;
- interpretación de registros Modbus;
- cálculo energético.
AZ-NFC
- lectura NFC;
- gestión de tarjetas;
- identificación de usuarios.
AZ-IO
- lógica de entradas y salidas.
AZ-RELAY
- control de relés;
- temporizaciones;
- escenas.
AEP únicamente proporciona la infraestructura necesaria para que estas aplicaciones funcionen.
***
6. Organización interna
Conceptualmente AEP estará organizado mediante servicios.
Aplicación
│
┌────────────────────┼────────────────────┐
│ │ │
Configuración Comunicaciones Servicios internos
│ │ │
MQTT Web Local OTA
Modbus API REST Recovery
WiFi Logging Seguridad
Ethernet Diagnóstico Storage
│
ESP-IDF
Cada servicio deberá tener una responsabilidad claramente definida.
***
7. Independencia de servicios
Siempre que resulte razonable, los servicios deberán poder evolucionar de forma independiente.
Por ejemplo:
Una mejora en OTA no debería requerir modificar el módulo MQTT.
Una mejora en Modbus no debería afectar al servidor web.
Una modificación del sistema de logs no debería alterar la configuración.
La independencia constituye un objetivo arquitectónico.
***
8. Configuración
Toda configuración común deberá gestionarse desde AEP.
Ejemplos:
- nombre del dispositivo;
- hostname;
- dirección IP;
- DHCP;
- WiFi;
- Ethernet;
- MQTT;
- Modbus;
- certificados;
- usuarios;
- parámetros OTA.
Las aplicaciones únicamente almacenarán configuración propia.
Ejemplo:
AZ-TEMP almacenará:
- nombres de sondas;
- calibraciones;
- alarmas.
No almacenará configuración de red.
***
9. Almacenamiento
AEP será responsable del almacenamiento persistente.
La aplicación solicitará:
- guardar;
- leer;
- eliminar;
- actualizar.
Nunca deberá conocer el mecanismo físico utilizado.
Esto permitirá cambiar la implementación en el futuro sin modificar las aplicaciones.
***
10. Comunicaciones
Todas las comunicaciones comunes estarán gestionadas por AEP.
Inicialmente:
- HTTP
- HTTPS (futuro)
- MQTT
- Modbus TCP
- USB
- OTA
En el futuro podrán añadirse nuevos protocolos.
Las aplicaciones accederán a ellos mediante interfaces proporcionadas por AEP.
***
11. Seguridad
Toda la seguridad común pertenecerá a AEP.
Entre otras funciones:
- autenticación;
- autorización;
- validación de firmware;
- control de acceso a la web;
- control de acceso a la API;
- gestión de certificados (futuro).
Las aplicaciones no implementarán mecanismos de autenticación propios salvo necesidad justificada.
***
12. Ciclo de vida
Todo dispositivo seguirá el mismo ciclo de funcionamiento.
Arranque
↓
Inicialización Edge Platform
↓
Carga de configuración
↓
Inicialización de comunicaciones
↓
Inicialización de aplicación
↓
Funcionamiento normal
↓
OTA (cuando proceda)
↓
Reinicio
La aplicación nunca deberá inicializar por sí misma los servicios comunes.
***
13. Evolución futura
AEP deberá diseñarse pensando en el crecimiento.
Deberá permitir incorporar nuevos servicios sin modificar la arquitectura existente.
Ejemplos futuros:
- Bluetooth;
- Zigbee;
- Matter;
- CAN Bus;
- Modbus RTU;
- VPN;
- Edge AI;
- sincronización horaria avanzada;
- almacenamiento histórico.
La incorporación de nuevos servicios no deberá requerir modificar las aplicaciones existentes.
***
14. Beneficios
La existencia de AEP aporta las siguientes ventajas.
Para el desarrollo:
- menos código duplicado;
- menor tiempo de desarrollo;
- mayor calidad.
Para el mantenimiento:
- comportamiento homogéneo;
- menor riesgo;
- actualizaciones comunes.
Para el usuario:
- misma experiencia;
- misma configuración;
- mismo mantenimiento.
Para el proyecto:
- crecimiento ordenado;
- evolución sencilla;
- mayor reutilización.
***
15. Relación con las siguientes SPEC
Esta especificación define la plataforma Edge desde un punto de vista conceptual.
Las siguientes especificaciones desarrollarán sus componentes.
SPEC-004 desarrollará Edge OS.
SPEC-007 desarrollará OTA.
SPEC-008 desarrollará Recovery.
SPEC-011 desarrollará Seguridad.
Las aplicaciones utilizarán AEP, pero no modificarán su arquitectura.
***
16. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
Desarrolla:
- Aeizoon Edge Platform
Implementación:
- Constituirá el núcleo común de todos los dispositivos de ESP Platform.
***
SPEC-004 — Edge OS
Documento: SPEC-004
Título: Edge OS
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define Edge OS, el firmware base sobre el que se ejecutarán todas las aplicaciones de ESP Platform.
Mientras que AEP representa el concepto de plataforma Edge, Edge OS constituye su implementación software.
Toda aplicación desarrollada para ESP Platform deberá ejecutarse sobre Edge OS.
El objetivo es evitar que cada dispositivo implemente nuevamente funcionalidades comunes.
***
2. Objetivos
Edge OS deberá proporcionar una base sólida, estable y reutilizable para todos los dispositivos.
Los objetivos principales son:
- inicialización uniforme;
- servicios comunes;
- arquitectura modular;
- configuración persistente;
- comunicaciones;
- actualización segura;
- recuperación;
- mantenimiento sencillo;
- evolución futura.
***
3. Filosofía
Edge OS no debe contener lógica de negocio.
Debe proporcionar únicamente infraestructura.
Toda funcionalidad específica deberá implementarse en la aplicación correspondiente.
Ejemplos:
Edge OS sabe:
- iniciar WiFi;
- publicar MQTT;
- responder una API;
- actualizar firmware;
- guardar configuración.
Edge OS no sabe:
- qué es una temperatura;
- qué es un medidor;
- qué es una tarjeta NFC;
- qué significa activar un relé.
Eso pertenece a las aplicaciones.
***
4. Organización general
Todo firmware seguirá la siguiente estructura conceptual.
+------------------------------------------------+
Aplicación
--------------------------------------------------
Servicios Edge OS
--------------------------------------------------
Configuración
Comunicaciones
Seguridad
Storage
OTA
Recovery
Logging
Diagnóstico
API
Web
--------------------------------------------------
ESP-IDF
--------------------------------------------------
Hardware
+------------------------------------------------+
Esta organización deberá mantenerse en todos los proyectos.
***
5. Arquitectura modular
Edge OS estará dividido en módulos independientes.
Inicialmente se prevén los siguientes.
Core
Responsable de:
- arranque;
- inicialización;
- ciclo principal;
- coordinación de módulos.
***
Config Manager
Responsable de:
- leer configuración;
- guardar configuración;
- validar parámetros;
- migraciones futuras.
***
Network Manager
Responsable de:
- WiFi;
- Ethernet;
- IP;
- DHCP;
- hostname;
- reconexión.
***
Web Manager
Responsable de:
- servidor web;
- páginas;
- autenticación;
- recursos estáticos.
***
API Manager
Responsable de:
- API REST;
- respuestas JSON;
- autenticación;
- versionado.
***
MQTT Manager
Responsable de:
- conexión;
- publicación;
- suscripciones;
- reconexión;
- estado.
***
Modbus Manager
Responsable de:
- servidor Modbus TCP;
- registros;
- mapeo;
- diagnóstico.
***
OTA Manager
Responsable de:
- descarga;
- validación;
- instalación;
- rollback.
***
Recovery Manager
Responsable de:
- recuperación;
- firmware alternativo;
- restauración.
***
Storage Manager
Responsable de:
- almacenamiento persistente;
- abstracción del soporte físico.
***
Log Manager
Responsable de:
- eventos;
- errores;
- auditoría local.
***
Diagnostic Manager
Responsable de:
- estado del dispositivo;
- información interna;
- estadísticas.
***
Time Manager
Responsable de:
- RTC;
- NTP;
- sincronización.
***
6. Ciclo de arranque
Todos los dispositivos deberán seguir el mismo proceso.
Reset
↓
Bootloader
↓
Edge OS
↓
Inicialización Core
↓
Configuración
↓
Red
↓
Servicios
↓
Aplicación
↓
Funcionamiento normal
La aplicación nunca deberá alterar este orden.
***
7. Inicialización de módulos
Cada módulo deberá disponer de una función de inicialización propia.
Ejemplo conceptual:
Config
↓
Storage
↓
Network
↓
Web
↓
API
↓
MQTT
↓
Modbus
↓
OTA
↓
Aplicación
Esto facilitará futuras ampliaciones.
***
8. Comunicación entre módulos
Los módulos no deberán acceder directamente a información interna de otros módulos.
La comunicación deberá realizarse mediante interfaces públicas.
Ejemplo.
La aplicación no accederá directamente al WiFi.
Solicitará a Network Manager la información necesaria.
Del mismo modo:
OTA no accederá directamente al almacenamiento.
Utilizará Storage Manager.
***
9. Gestión de errores
Todo módulo deberá detectar y comunicar errores.
Los errores deberán clasificarse, al menos, en:
- información;
- advertencia;
- error;
- error crítico.
Siempre que sea posible, el sistema deberá continuar funcionando.
Un error en MQTT no deberá impedir el funcionamiento de la aplicación.
***
10. Configuración
Edge OS almacenará toda la configuración común.
Ejemplos:
- red;
- MQTT;
- Modbus;
- usuarios;
- OTA;
- hostname;
- idioma (futuro);
- certificados (futuro).
Las aplicaciones únicamente almacenarán parámetros propios.
***
11. Recursos compartidos
Edge OS administrará todos los recursos comunes.
Entre ellos:
- memoria;
- almacenamiento;
- red;
- reloj;
- tareas;
- comunicaciones.
Las aplicaciones deberán solicitar dichos recursos al núcleo.
***
12. API interna
Todos los servicios ofrecidos por Edge OS deberán exponerse mediante APIs internas claramente definidas.
Ejemplos:
Storage API
MQTT API
Network API
OTA API
Logging API
Esto permitirá sustituir implementaciones sin afectar a las aplicaciones.
***
13. Extensibilidad
La incorporación de nuevos módulos no deberá requerir modificar el resto del sistema.
Ejemplos futuros:
Bluetooth
Matter
CAN
LoRa
RS485
VPN
Edge AI
Cada nuevo módulo deberá seguir la misma filosofía que los existentes.
***
14. Beneficios
Esta arquitectura proporciona:
Para el desarrollador:
- menos código;
- mayor reutilización;
- menor tiempo de desarrollo.
Para el mantenimiento:
- comportamiento uniforme;
- menor riesgo;
- evolución sencilla.
Para el proyecto:
- escalabilidad;
- independencia entre módulos;
- crecimiento ordenado.
***
15. Relación con las siguientes SPEC
Esta especificación define la estructura interna de Edge OS.
Las siguientes especificaciones desarrollarán algunos módulos concretos.
- SPEC-005 → Backend
- SPEC-006 → Flasher Web
- SPEC-007 → OTA
- SPEC-008 → Recovery
- SPEC-011 → Seguridad
- SPEC-014 → APIs
***
16. Consideraciones de implementación
Edge OS deberá desarrollarse inicialmente utilizando:
- PlatformIO;
- ESP-IDF;
- arquitectura modular;
- Git;
- compilación automatizada.
La implementación deberá priorizar claridad, modularidad y mantenibilidad sobre la optimización prematura.
***
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
Desarrolla:
- Arquitectura interna de Edge OS
Implementación:
- Constituirá la base software común de todos los dispositivos desarrollados sobre ESP Platform.
***
SPEC-005 — Backend Central
Documento: SPEC-005
Título: Backend Central
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el Backend Central de ESP Platform.
El Backend constituye el punto único de administración del ecosistema y será el encargado de proporcionar todos los servicios comunes que no deban ejecutarse dentro de los dispositivos Edge.
El Backend no sustituye al funcionamiento autónomo de los dispositivos.
Su misión consiste en facilitar su gestión.
***
2. Objetivos
El Backend deberá proporcionar una infraestructura centralizada para administrar todos los dispositivos de la plataforma.
Sus objetivos principales son:
- gestión de firmware;
- flasheo inicial;
- OTA;
- inventario;
- administración;
- APIs;
- autenticación;
- Fleet Management;
- auditoría;
- crecimiento futuro hacia SaaS.
***
3. Filosofía
Los dispositivos deberán ser capaces de funcionar sin el Backend.
El Backend añade funcionalidades de administración y gestión, pero no debe convertirse en un punto único de fallo para el funcionamiento normal de los dispositivos.
Si el Backend deja de estar disponible:
- los dispositivos seguirán ejecutando su lógica;
- seguirán respondiendo por su web local;
- seguirán respondiendo mediante Modbus TCP;
- seguirán publicando MQTT si el broker continúa disponible.
***
4. Arquitectura general
El Backend se organizará mediante servicios independientes.
Navegador
│
▼
Frontend Web
│
▼
API REST
│
┌───────────────┼────────────────┐
│ │ │
Firmware Inventario Usuarios
│ │ │
OTA Fleet Manager Auditoría
│ │ │
└───────────────┼────────────────┘
│
PostgreSQL
│
Repositorio Firmware
Cada servicio deberá tener responsabilidades claramente definidas.
***
5. Responsabilidades
El Backend será responsable de:
- gestionar usuarios;
- gestionar dispositivos;
- almacenar firmware;
- distribuir firmware;
- mantener inventario;
- registrar auditoría;
- proporcionar APIs;
- gestionar Provisioning;
- gestionar OTA;
- administrar Fleet Management.
No será responsable del control en tiempo real de los dispositivos.
***
6. Frontend Web
Inicialmente toda la administración se realizará mediante una aplicación web.
La web deberá permitir acceder a todas las funcionalidades del sistema.
No deberá existir funcionalidad exclusiva de una futura aplicación móvil.
Toda funcionalidad importante deberá poder realizarse desde un navegador.
***
7. API REST
Toda la lógica de negocio deberá residir en la API.
La interfaz web actuará únicamente como cliente de dicha API.
Esto permitirá desarrollar en el futuro:
- aplicaciones móviles;
- herramientas CLI;
- automatizaciones;
- integraciones externas.
Sin modificar la lógica del Backend.
***
8. Base de datos
Inicialmente se utilizará PostgreSQL.
La base de datos almacenará únicamente información persistente.
Ejemplos:
- usuarios;
- dispositivos;
- firmware;
- versiones;
- auditoría;
- inventario;
- configuraciones globales.
Los datos de telemetría histórica podrán almacenarse posteriormente en sistemas especializados si fuese necesario.
***
9. Repositorio de firmware
El Backend mantendrá un repositorio de firmware.
Cada firmware deberá almacenarse acompañado de información como:
- nombre;
- versión;
- fecha;
- descripción;
- aplicación;
- hardware compatible;
- checksum;
- tamaño.
El repositorio será utilizado tanto por el Flasher Web como por OTA.
***
10. Inventario
Todo dispositivo registrado en la plataforma deberá disponer de una ficha propia.
Inicialmente se prevén los siguientes datos.
- identificador único;
- nombre;
- aplicación instalada;
- versión;
- hardware;
- dirección IP;
- MAC;
- estado;
- última conexión;
- propietario;
- ubicación (futuro).
El inventario será el punto de partida para Fleet Management.
***
11. Gestión de usuarios
El Backend deberá permitir administrar usuarios.
Inicialmente:
- autenticación;
- cambio de contraseña;
- perfiles;
- permisos.
La arquitectura deberá permitir ampliar posteriormente el sistema de roles.
***
12. Auditoría
Toda operación relevante deberá quedar registrada.
Ejemplos:
- alta de dispositivo;
- actualización OTA;
- subida de firmware;
- creación de usuario;
- modificación de configuración;
- operaciones administrativas.
La auditoría facilitará el mantenimiento y el diagnóstico.
***
13. Servicios previstos
El Backend crecerá mediante módulos.
Inicialmente se prevén:
Firmware Service
Device Service
User Service
Provisioning Service
OTA Service
Fleet Service
Audit Service
API Service
Cada servicio deberá poder evolucionar independientemente.
***
14. Integración con dispositivos
Los dispositivos podrán comunicarse con el Backend mediante:
- HTTP/HTTPS;
- MQTT;
- OTA;
- Provisioning.
La comunicación deberá minimizar el acoplamiento.
Los dispositivos no deberán depender de detalles internos del Backend.
***
15. Integración con el Flasher
El Flasher Web utilizará el Backend para:
- consultar firmware;
- descargar binarios;
- registrar instalaciones (futuro);
- validar compatibilidades.
El Flasher no almacenará información propia.
Será un consumidor de los servicios del Backend.
***
16. Escalabilidad
La arquitectura deberá permitir evolucionar desde:
Una instalación doméstica
hasta:
Múltiples instalaciones
↓
Múltiples clientes
↓
Backend multiusuario
↓
SaaS
Sin modificar la arquitectura fundamental.
***
17. Tecnologías iniciales
La primera implementación utilizará:
- Debian;
- PostgreSQL;
- Java (Spring Boot);
- Nginx;
- systemd.
No se utilizarán contenedores.
La arquitectura deberá seguir los estándares generales del proyecto.
***
18. Beneficios
El Backend proporciona:
Para el usuario:
- administración centralizada;
- inventario;
- firmware;
- futuras OTA.
Para el desarrollador:
- APIs comunes;
- reutilización;
- separación de responsabilidades.
Para la plataforma:
- crecimiento ordenado;
- punto único de administración;
- evolución hacia Fleet Management.
***
19. Relación con las siguientes SPEC
Esta especificación define el Backend de forma general.
Las siguientes especificaciones desarrollarán componentes concretos.
- SPEC-006 → Flasher Web
- SPEC-007 → OTA
- SPEC-009 → Provisioning
- SPEC-010 → Fleet Management
- SPEC-011 → Seguridad
- SPEC-014 → APIs
***
20. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
- SPEC-004
Desarrolla:
- Arquitectura del Backend Central
Implementación:
- Será el núcleo de administración de ESP Platform y el primer componente desplegado durante la Fase 1.
***
SPEC-006 — Flasher Web
Documento: SPEC-006
Título: Flasher Web
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el Flasher Web de ESP Platform.
El Flasher Web constituye la puerta de entrada de todos los dispositivos nuevos a la plataforma.
Su objetivo es permitir que un usuario conecte un ESP32 vacío mediante USB y pueda instalar un firmware desde un navegador web sin utilizar herramientas de desarrollo.
El Flasher será el primer componente funcional del MVP de ESP Platform.
***
2. Objetivos
El Flasher deberá permitir:
- seleccionar un firmware;
- comprobar la compatibilidad con el hardware;
- conectar con un ESP32 mediante USB;
- escribir el firmware;
- informar del progreso;
- informar del resultado;
- servir como base del futuro proceso de Provisioning.
La experiencia deberá ser sencilla incluso para usuarios sin conocimientos técnicos.
***
3. Filosofía
El Flasher no es únicamente una utilidad de programación.
Forma parte de la experiencia de usuario de ESP Platform.
Su diseño deberá transmitir la misma sensación que un producto comercial.
El usuario no deberá preocuparse por herramientas como:
- esptool;
- PlatformIO;
- puertos serie;
- comandos.
Todo ello deberá quedar abstraído por la aplicación.
***
4. Alcance de la primera versión
La versión inicial permitirá exclusivamente:
- seleccionar un firmware existente;
- conectar un ESP32 mediante USB;
- escribir el firmware;
- comprobar el resultado.
No realizará todavía:
- Provisioning;
- alta automática;
- OTA;
- inventario;
- autenticación avanzada.
Estas funcionalidades se incorporarán posteriormente reutilizando la misma arquitectura.
***
5. Flujo de funcionamiento
El proceso previsto será el siguiente.
Usuario
↓
Accede al Flasher
↓
Selecciona modelo de ESP32
↓
Selecciona firmware
↓
Conecta USB
↓
Permitir acceso al dispositivo
↓
Flashear
↓
Verificación
↓
Resultado
El proceso deberá minimizar el número de pasos.
***
6. Integración con el Backend
El Flasher obtendrá toda la información desde el Backend.
Entre ella:
- catálogo de firmware;
- versiones;
- descripción;
- hardware compatible;
- tamaño;
- checksum.
El Flasher no almacenará información propia.
***
7. Catálogo de firmware
El usuario visualizará un catálogo organizado.
Cada firmware mostrará, al menos:
- nombre;
- aplicación;
- versión;
- fecha;
- descripción;
- hardware compatible.
En el futuro podrán añadirse:
- notas de versión;
- cambios;
- estabilidad;
- canal (estable / beta).
***
8. Compatibilidad
Antes de iniciar el proceso deberá comprobarse que el firmware es compatible con el dispositivo seleccionado.
Inicialmente la selección será manual.
En el futuro podrá detectarse automáticamente el hardware conectado.
***
9. Comunicación con el ESP32
La comunicación se realizará mediante Web Serial.
No será necesario instalar aplicaciones adicionales.
El navegador solicitará autorización al usuario para acceder al dispositivo.
La aplicación nunca accederá al puerto serie sin autorización explícita.
***
10. Proceso de flasheo
El proceso completo será:
Conectar USB
↓
Abrir puerto
↓
Comprobar comunicación
↓
Borrar Flash (si procede)
↓
Escribir firmware
↓
Verificar escritura
↓
Reiniciar ESP32
↓
Resultado
Cada paso deberá informar claramente del estado.
***
11. Interfaz de usuario
La interfaz deberá priorizar claridad y sencillez.
Elementos mínimos:
- selección de hardware;
- selección de firmware;
- botón Conectar;
- botón Flashear;
- barra de progreso;
- estado;
- resultado.
No deberá mostrar información técnica innecesaria al usuario final.
***
12. Gestión de errores
Los errores deberán mostrarse mediante mensajes comprensibles.
Ejemplos:
- dispositivo no encontrado;
- acceso denegado;
- puerto ocupado;
- firmware incompatible;
- error de escritura;
- desconexión del dispositivo.
Siempre que sea posible se propondrá una acción correctiva.
***
13. Evolución futura
El Flasher deberá crecer sin modificar su filosofía.
Funciones previstas:
- Provisioning automático;
- asignación de nombre;
- lectura de QR;
- configuración inicial;
- alta en Backend;
- actualización de bootloader;
- copia de seguridad;
- recuperación.
***
14. Beneficios
Para el usuario:
- instalación sencilla;
- sin herramientas externas;
- menor riesgo de error.
Para el desarrollador:
- proceso uniforme;
- integración con Backend;
- reutilización del repositorio de firmware.
Para la plataforma:
- punto único de instalación;
- integración con OTA;
- integración con Provisioning.
***
15. Tecnologías previstas
Primera versión:
- Web Serial API;
- JavaScript;
- HTML;
- CSS;
- Backend Spring Boot;
- PostgreSQL.
No se utilizarán aplicaciones de escritorio.
Toda la funcionalidad residirá en la aplicación web.
***
16. Relación con otras SPEC
El Flasher utiliza:
- SPEC-002 Arquitectura Global;
- SPEC-005 Backend.
Será utilizado posteriormente por:
- SPEC-007 OTA;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management.
***
17. Objetivo del MVP
El MVP de ESP Platform se considerará alcanzado cuando sea posible:
Abrir la web
↓
Seleccionar firmware
↓
Conectar un ESP32 vacío
↓
Flashearlo completamente
↓
Comprobar que arranca correctamente
Todo el desarrollo inicial del proyecto deberá orientarse a conseguir este resultado lo antes posible.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-005
Desarrolla:
- Flasher Web
Implementación:
- Constituirá el principal objetivo de la Fase 2 del proyecto y el primer componente funcional visible de ESP Platform.
***
SPEC-007 — OTA y Rollback
Documento: SPEC-007
Título: OTA y Rollback
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el sistema de actualización OTA (Over The Air) y el mecanismo de Rollback de ESP Platform.
El objetivo es permitir actualizar dispositivos de forma remota con el máximo nivel posible de seguridad y minimizar el riesgo de dejar un dispositivo inutilizable.
La actualización OTA constituye una capacidad nativa de Edge OS y deberá estar disponible para todas las aplicaciones de la plataforma.
***
2. Objetivos
El sistema OTA deberá permitir:
- actualizar firmware sin conexión física;
- minimizar el tiempo de indisponibilidad;
- verificar la integridad del firmware;
- recuperar automáticamente versiones anteriores cuando sea necesario;
- mantener la configuración del dispositivo;
- reducir al mínimo el riesgo operativo.
***
3. Filosofía
Actualizar un dispositivo nunca deberá convertirse en una operación de riesgo.
Toda actualización deberá poder revertirse automáticamente si el nuevo firmware no supera las comprobaciones definidas.
El usuario no deberá intervenir en circunstancias normales.
***
4. Arquitectura general
El sistema OTA estará formado por los siguientes elementos.
Repositorio Firmware
↓
Backend
↓
OTA Service
↓
Dispositivo
↓
Verificación
↓
Confirmación
↓
Funcionamiento normal
El Backend únicamente distribuirá firmware.
La decisión de aceptar o rechazar la actualización corresponderá al dispositivo.
***
5. Particionado
Todos los dispositivos deberán utilizar un esquema de particiones compatible con OTA.
Conceptualmente:
Bootloader
↓
Firmware A
↓
Firmware B
↓
Configuración
↓
Datos
La configuración permanecerá separada del firmware.
***
6. Proceso OTA
El flujo general será:
Backend detecta nueva versión
↓
Dispositivo consulta
↓
Descarga firmware
↓
Verifica integridad
↓
Escribe partición alternativa
↓
Reinicio
↓
Arranque nuevo firmware
↓
Autocomprobación
↓
Confirmación
↓
Actualización completada
***
7. Verificación
Antes de aceptar un firmware deberán verificarse, al menos:
- integridad del fichero;
- compatibilidad con el hardware;
- versión;
- tamaño;
- resultado de la escritura.
No deberá instalarse un firmware que no supere las validaciones.
***
8. Confirmación de arranque
Tras el primer arranque del nuevo firmware, Edge OS deberá realizar una comprobación de funcionamiento.
Entre otras:
- arranque correcto;
- inicialización de servicios;
- estabilidad mínima;
- ausencia de errores críticos.
Solo entonces se confirmará definitivamente la nueva versión.
***
9. Rollback automático
Si el nuevo firmware no supera las comprobaciones, el sistema deberá volver automáticamente a la versión anterior.
Proceso conceptual:
Firmware nuevo
↓
Error
↓
Reinicio
↓
Bootloader
↓
Firmware anterior
↓
Funcionamiento normal
El usuario no deberá realizar ninguna intervención.
***
10. Conservación de configuración
Las actualizaciones OTA nunca deberán eliminar:
- configuración de red;
- parámetros MQTT;
- configuración Modbus;
- usuarios;
- nombres de dispositivos;
- configuración específica de la aplicación.
La configuración constituye un recurso independiente del firmware.
***
11. Compatibilidad
Antes de iniciar una actualización deberán comprobarse:
- modelo de hardware;
- aplicación instalada;
- versión mínima requerida;
- espacio disponible.
No deberá instalarse un firmware incompatible.
***
12. Gestión desde el Backend
El Backend permitirá:
- publicar versiones;
- marcar versión estable;
- retirar versiones;
- consultar estado de despliegue;
- conocer versión instalada;
- consultar resultado de la actualización.
***
13. Estrategias futuras
La arquitectura deberá permitir incorporar:
- actualización por grupos;
- actualización progresiva;
- canal estable;
- canal beta;
- canal desarrollo;
- actualización programada;
- actualización manual;
- actualización automática.
Estas capacidades no deberán requerir modificar Edge OS.
***
14. Gestión de errores
El sistema deberá detectar, entre otros:
- descarga incompleta;
- firmware corrupto;
- incompatibilidad;
- fallo de escritura;
- fallo de arranque;
- pérdida de alimentación durante la actualización.
Siempre que sea posible deberá recuperarse automáticamente.
***
15. Beneficios
Para el usuario:
- actualizaciones sencillas;
- mayor seguridad;
- menor riesgo.
Para el administrador:
- despliegue remoto;
- control de versiones;
- seguimiento de dispositivos.
Para la plataforma:
- evolución continua;
- mantenimiento simplificado;
- base para Fleet Management.
***
16. Evolución futura
El sistema OTA podrá ampliarse con:
- firmas digitales;
- cifrado;
- firmware diferencial;
- despliegues escalonados;
- validaciones avanzadas;
- políticas por cliente.
La arquitectura actual deberá permitir incorporar estas capacidades sin rediseños importantes.
***
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-004 Edge OS;
- SPEC-005 Backend.
Será utilizada por:
- SPEC-008 Recovery;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
- SPEC-004
- SPEC-005
Desarrolla:
- Sistema OTA
- Rollback automático
Implementación:
- Constituirá el mecanismo oficial de actualización remota de todos los dispositivos de ESP Platform.
***
SPEC-008 — Recovery
Documento: SPEC-008
Título: Recovery
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el sistema Recovery de ESP Platform.
Su objetivo es garantizar que un dispositivo pueda recuperarse de situaciones excepcionales sin requerir intervención técnica compleja y minimizando la necesidad de conexión física.
Recovery constituye el último nivel de protección del dispositivo.
***
2. Objetivos
El sistema Recovery deberá permitir:
- recuperar dispositivos que no puedan iniciar la aplicación correctamente;
- restaurar un firmware operativo;
- mantener la configuración siempre que sea posible;
- facilitar el diagnóstico;
- minimizar desplazamientos y mantenimiento presencial.
***
3. Filosofía
OTA evita fallos.
Rollback corrige actualizaciones fallidas.
Recovery permite recuperar situaciones que no pueden resolverse mediante OTA o Rollback.
El objetivo es que un dispositivo resulte extremadamente difícil de dejar inutilizable.
***
4. Relación con OTA
El orden de actuación será siempre:
OTA
↓
Rollback
↓
Recovery
Recovery únicamente actuará cuando los mecanismos anteriores no puedan resolver el problema.
***
5. Arquitectura general
Recovery estará formado por:
Bootloader
↓
Recovery Manager
↓
Diagnóstico
↓
Opciones de recuperación
↓
Reinicio
El Recovery deberá formar parte de Edge OS.
***
6. Situaciones de activación
Recovery podrá iniciarse cuando ocurra alguna de las siguientes situaciones:
- fallo repetido de arranque;
- firmware inválido;
- corrupción detectada;
- interrupción grave durante una actualización;
- solicitud manual del usuario;
- orden remota autorizada (futuro).
***
7. Modos de recuperación
Inicialmente se contemplan los siguientes modos.
Recuperación automática
El dispositivo intentará restaurar el funcionamiento sin intervención del usuario.
Ejemplos:
- volver al firmware anterior;
- restaurar parámetros seguros;
- reiniciar servicios.
***
Recuperación manual
El usuario podrá iniciar Recovery mediante un procedimiento físico.
Inicialmente se prevé:
- pulsación prolongada de un botón durante el arranque.
La combinación exacta dependerá del hardware.
***
Recuperación desde la web
Si el dispositivo conserva conectividad, podrá accederse a una interfaz Recovery simplificada.
Permitirá:
- consultar estado;
- cargar un firmware;
- reiniciar;
- consultar diagnóstico.
***
8. Conservación de configuración
Recovery nunca deberá eliminar la configuración del usuario salvo que éste lo solicite expresamente.
Se conservarán siempre que sea posible:
- parámetros de red;
- MQTT;
- Modbus;
- configuración de aplicación;
- nombres;
- usuarios.
El borrado completo constituirá una acción independiente.
***
9. Diagnóstico
Recovery deberá proporcionar información suficiente para identificar la causa del problema.
Ejemplos:
- motivo de entrada en Recovery;
- firmware activo;
- firmware alternativo;
- último error;
- estado de memoria;
- versión instalada.
***
10. Restauración de firmware
Recovery permitirá instalar nuevamente un firmware válido.
Las fuentes previstas serán:
- OTA (si existe conectividad);
- Flasher Web mediante USB;
- carga desde la interfaz Recovery (futuro).
***
11. Factory Reset
Recovery podrá ofrecer un modo Factory Reset.
Este modo deberá:
- restaurar configuración por defecto;
- conservar el firmware operativo;
- advertir previamente al usuario.
El Factory Reset no constituye una actualización de firmware.
***
12. Seguridad
Las funciones Recovery deberán protegerse frente a accesos no autorizados.
Especialmente:
- reinstalación de firmware;
- borrado de configuración;
- restauración completa.
Las acciones críticas requerirán autenticación cuando sea técnicamente posible.
***
13. Integración con el Backend
En futuras versiones Recovery podrá comunicarse con el Backend para:
- informar de fallos;
- solicitar firmware;
- registrar incidencias;
- permitir recuperación remota.
La ausencia del Backend no deberá impedir el funcionamiento del Recovery.
***
14. Integración con el Flasher
Cuando Recovery no pueda resolver un problema mediante red, el dispositivo podrá recuperarse utilizando el Flasher Web.
El procedimiento será idéntico al utilizado para un dispositivo nuevo.
Esto garantiza un único proceso de recuperación física.
***
15. Beneficios
Para el usuario:
- mayor tranquilidad;
- menor riesgo de pérdida del dispositivo;
- recuperación sencilla.
Para el administrador:
- menos intervenciones presenciales;
- menor tiempo de mantenimiento.
Para la plataforma:
- mayor robustez;
- mayor fiabilidad;
- menor coste operativo.
***
16. Evolución futura
El sistema Recovery podrá incorporar posteriormente:
- consola de diagnóstico;
- copia de seguridad de configuración;
- restauración desde Backup;
- recuperación cifrada;
- recuperación remota supervisada.
La arquitectura deberá permitir añadir estas funciones sin rediseños importantes.
***
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-004 Edge OS;
- SPEC-006 Flasher Web;
- SPEC-007 OTA y Rollback.
Será utilizada posteriormente por:
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-003
- SPEC-004
- SPEC-006
- SPEC-007
Desarrolla:
- Recovery Manager
- Estrategia de recuperación
Implementación:
- Constituirá el mecanismo de recuperación de último nivel para todos los dispositivos de ESP Platform.
***
SPEC-009 — Provisioning y QR
Documento: SPEC-009
Título: Provisioning y QR
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el sistema de Provisioning de ESP Platform.
Su finalidad es permitir que un dispositivo recién instalado pueda incorporarse a la plataforma de forma sencilla, rápida y segura.
El Provisioning constituye el proceso de transición entre un dispositivo recién flasheado y un dispositivo completamente operativo.
***
2. Objetivos
El sistema deberá permitir:
- identificar un dispositivo de forma única;
- configurar los parámetros mínimos necesarios;
- registrar el dispositivo en el Backend;
- simplificar al máximo la instalación;
- minimizar errores humanos;
- servir como base para instalaciones de gran volumen.
***
3. Filosofía
El proceso de alta deberá poder realizarlo un usuario sin conocimientos técnicos.
La complejidad deberá recaer sobre la plataforma, nunca sobre el instalador.
El objetivo es que poner en marcha un dispositivo resulte tan sencillo como instalar un producto comercial.
***
4. Flujo general
El proceso previsto será:
Flasheo
↓
Primer arranque
↓
Modo Provisioning
↓
Configuración inicial
↓
Registro en Backend
↓
Asignación de identidad
↓
Funcionamiento normal
Todo dispositivo nuevo deberá seguir este flujo.
***
5. Identidad del dispositivo
Cada dispositivo dispondrá de un identificador único permanente.
Este identificador permitirá:
- registrar el dispositivo;
- identificarlo en el Backend;
- asociarlo a un propietario;
- localizarlo en Fleet Management.
La identidad nunca deberá depender del nombre asignado por el usuario.
***
6. Código QR
Cada dispositivo podrá disponer de un código QR.
El QR podrá contener información como:
- identificador único;
- modelo;
- hardware;
- versión mínima compatible;
- URL de Provisioning.
El formato exacto podrá evolucionar sin modificar el proceso general.
***
7. Primer arranque
Tras instalar un firmware por primera vez, el dispositivo iniciará automáticamente el modo Provisioning.
Durante este proceso:
- generará una configuración temporal;
- habilitará la interfaz de configuración;
- esperará la configuración inicial.
Una vez completado el proceso pasará automáticamente al funcionamiento normal.
***
8. Configuración inicial
Inicialmente podrán configurarse:
- nombre del dispositivo;
- red;
- parámetros MQTT;
- parámetros Modbus;
- ubicación (opcional);
- descripción (opcional).
Las aplicaciones podrán añadir parámetros específicos.
***
9. Registro en el Backend
Una vez completada la configuración, el dispositivo podrá registrarse automáticamente.
El Backend almacenará:
- identificador;
- aplicación;
- versión;
- hardware;
- fecha de alta;
- propietario;
- configuración básica.
***
10. Repetición del proceso
El usuario podrá reiniciar el proceso de Provisioning cuando sea necesario.
Ejemplos:
- cambio de propietario;
- nueva instalación;
- sustitución de red;
- reconfiguración completa.
No será necesario reinstalar el firmware para volver a ejecutar el Provisioning.
***
11. Integración con el Flasher
El Flasher Web podrá iniciar automáticamente el proceso de Provisioning tras finalizar la programación.
Esto permitirá reducir el número de pasos necesarios para poner en marcha un dispositivo nuevo.
***
12. Seguridad
El Provisioning deberá impedir altas no autorizadas.
La arquitectura deberá permitir incorporar posteriormente:
- códigos de activación;
- certificados;
- tokens temporales;
- autenticación mediante usuario.
***
13. Experiencia de usuario
El objetivo será reducir al mínimo la intervención manual.
Idealmente:
Flashear
↓
Escanear QR
↓
Asignar nombre
↓
Finalizar
La experiencia deberá resultar intuitiva y consistente en todos los dispositivos.
***
14. Beneficios
Para el usuario:
- instalación rápida;
- menos errores;
- configuración guiada.
Para el administrador:
- inventario automático;
- dispositivos identificados;
- menor tiempo de despliegue.
Para la plataforma:
- integración con Fleet Management;
- integración con OTA;
- crecimiento ordenado.
***
15. Evolución futura
El sistema podrá incorporar posteriormente:
- configuración masiva;
- importación de parámetros;
- Provisioning mediante móvil;
- Provisioning sin conexión;
- plantillas de instalación;
- asistentes inteligentes.
***
16. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-006 Flasher Web;
- SPEC-008 Recovery.
Será utilizada posteriormente por:
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad;
- SPEC-012 Modelo SaaS.
***
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-005
- SPEC-006
- SPEC-008
Desarrolla:
- Provisioning
- Identidad del dispositivo
- QR
Implementación:
- Constituirá el proceso oficial de incorporación de nuevos dispositivos a ESP Platform.
***
SPEC-010 — Fleet Management
Documento: SPEC-010
Título: Fleet Management
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el sistema Fleet Management de ESP Platform.
Fleet Management constituye el conjunto de herramientas destinadas a administrar, supervisar y operar un gran número de dispositivos desde un único punto.
Su objetivo es proporcionar una visión global del estado de toda la plataforma.
***
2. Objetivos
Fleet Management deberá permitir:
- visualizar todos los dispositivos;
- conocer su estado;
- organizar dispositivos;
- realizar operaciones masivas;
- facilitar el mantenimiento;
- reducir el tiempo de administración.
***
3. Filosofía
El número de dispositivos administrados no deberá modificar la experiencia del usuario.
La plataforma deberá resultar igual de sencilla administrando:
- un único dispositivo;
- diez dispositivos;
- cien dispositivos;
- miles de dispositivos.
La arquitectura deberá crecer sin modificar la forma de trabajar.
***
4. Inventario central
Fleet Management utilizará el inventario definido en el Backend.
Cada dispositivo dispondrá de una ficha completa.
Entre otros datos:
- identificador;
- nombre;
- aplicación;
- versión;
- hardware;
- estado;
- propietario;
- ubicación;
- última conexión.
***
5. Estado de los dispositivos
Cada dispositivo podrá encontrarse, al menos, en uno de los siguientes estados.
- En línea.
- Desconectado.
- Provisioning.
- Actualizando.
- Recovery.
- Error.
- Desconocido.
El estado deberá actualizarse automáticamente siempre que sea posible.
***
6. Organización
Fleet Management permitirá organizar dispositivos mediante diferentes criterios.
Ejemplos:
- cliente;
- ubicación;
- edificio;
- planta;
- zona;
- aplicación;
- modelo.
La arquitectura deberá permitir añadir nuevos criterios sin modificar el sistema.
***
7. Búsqueda
El usuario deberá localizar rápidamente cualquier dispositivo.
Inicialmente podrán utilizarse filtros por:
- nombre;
- identificador;
- aplicación;
- versión;
- hardware;
- estado;
- propietario.
***
8. Operaciones masivas
Fleet Management deberá permitir ejecutar operaciones sobre múltiples dispositivos.
Ejemplos futuros:
- actualizar firmware;
- reiniciar;
- cambiar configuración;
- exportar información;
- generar informes.
Las operaciones deberán minimizar la intervención manual.
***
9. Monitorización
Fleet Management mostrará información general sobre el estado de la plataforma.
Ejemplos:
- dispositivos conectados;
- dispositivos desconectados;
- versiones instaladas;
- actualizaciones pendientes;
- incidencias.
La información deberá presentarse de forma clara.
***
10. Historial
Cada dispositivo dispondrá de un historial.
Ejemplos:
- altas;
- Provisioning;
- OTA;
- Recovery;
- cambios de configuración;
- incidencias.
El historial facilitará el mantenimiento y el diagnóstico.
***
11. Integración con OTA
Fleet Management utilizará OTA para gestionar actualizaciones remotas.
Permitirá:
- seleccionar dispositivos;
- elegir versión;
- iniciar despliegues;
- consultar resultados.
OTA seguirá siendo el responsable de la actualización.
Fleet Management únicamente coordinará el proceso.
***
12. Integración con Recovery
Cuando un dispositivo entre en Recovery, Fleet Management podrá reflejar dicha situación.
En futuras versiones permitirá iniciar acciones de recuperación remota cuando la arquitectura lo permita.
***
13. Panel principal
La plataforma dispondrá de un panel principal con información resumida.
Ejemplos:
- número de dispositivos;
- dispositivos en línea;
- dispositivos con incidencias;
- firmware más utilizado;
- actualizaciones pendientes.
El objetivo es proporcionar una visión global inmediata.
***
14. Escalabilidad
Fleet Management deberá funcionar correctamente independientemente del número de dispositivos.
La arquitectura deberá diseñarse pensando en un crecimiento continuo.
No deberán existir limitaciones derivadas del diseño inicial.
***
15. Beneficios
Para el usuario:
- administración sencilla;
- visión global;
- menor tiempo de mantenimiento.
Para el administrador:
- operaciones centralizadas;
- control de versiones;
- diagnóstico rápido.
Para la plataforma:
- escalabilidad;
- administración profesional;
- evolución hacia SaaS.
***
16. Evolución futura
Fleet Management podrá incorporar posteriormente:
- mapas;
- planos;
- dashboards personalizados;
- mantenimiento predictivo;
- inteligencia artificial;
- reglas automáticas;
- informes avanzados.
La arquitectura deberá permitir estas ampliaciones sin rediseñar el sistema.
***
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-007 OTA;
- SPEC-008 Recovery;
- SPEC-009 Provisioning.
Será utilizada posteriormente por:
- SPEC-011 Seguridad;
- SPEC-012 Modelo SaaS;
- SPEC-014 APIs.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001
- SPEC-002
- SPEC-005
- SPEC-007
- SPEC-008
- SPEC-009
Desarrolla:
- Fleet Management
- Gestión centralizada de dispositivos
Implementación:
- Constituirá el centro de administración de todos los dispositivos de ESP Platform.
***
SPEC-011 — Seguridad
Documento: SPEC-011
Título: Seguridad
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define la estrategia de seguridad de ESP Platform.
Su objetivo es proteger los dispositivos, el Backend y las comunicaciones, garantizando un funcionamiento seguro sin comprometer la facilidad de uso.
La seguridad deberá formar parte del diseño desde el inicio y no añadirse posteriormente.
***
2. Objetivos
La arquitectura deberá proteger:
- dispositivos;
- firmware;
- comunicaciones;
- usuarios;
- credenciales;
- APIs;
- actualizaciones;
- Backend.
La seguridad deberá aplicarse de forma homogénea en toda la plataforma.
***
3. Filosofía
La seguridad deberá basarse en varios niveles de protección.
No deberá depender de un único mecanismo.
Cada componente protegerá únicamente aquello que le corresponda.
La arquitectura evitará confiar ciegamente en cualquier elemento del sistema.
***
4. Principios generales
Se adoptarán los siguientes principios.
- mínimo privilegio;
- autenticación obligatoria;
- autorización explícita;
- separación de responsabilidades;
- protección por defecto;
- registro de acciones relevantes.
***
5. Seguridad del dispositivo
Cada dispositivo deberá proteger:
- configuración;
- API local;
- interfaz web;
- actualizaciones;
- operaciones críticas.
No deberá exponer servicios innecesarios.
***
6. Seguridad del Backend
El Backend deberá proteger:
- usuarios;
- sesiones;
- APIs;
- firmware;
- auditoría;
- base de datos.
Todas las operaciones administrativas deberán requerir autenticación.
***
7. Seguridad de las comunicaciones
Inicialmente podrán utilizarse:
- HTTP en entornos controlados;
- MQTT;
- Modbus TCP.
La arquitectura deberá permitir evolucionar hacia:
- HTTPS;
- MQTT TLS;
- certificados;
- autenticación mutua.
Sin modificar el diseño general.
***
8. Gestión de credenciales
Las credenciales nunca deberán almacenarse en texto plano.
Siempre que resulte posible se utilizarán mecanismos seguros de almacenamiento.
Las contraseñas deberán almacenarse utilizando algoritmos adecuados para este propósito.
***
9. Seguridad OTA
Toda actualización deberá validar:
- origen;
- integridad;
- compatibilidad.
La arquitectura permitirá incorporar posteriormente:
- firmas digitales;
- certificados;
- validaciones criptográficas.
***
10. Seguridad Recovery
Las funciones Recovery deberán protegerse especialmente.
Entre ellas:
- reinstalación;
- Factory Reset;
- restauración.
Estas operaciones requerirán autorización cuando sea técnicamente posible.
***
11. Seguridad Provisioning
El proceso de alta deberá impedir incorporaciones no autorizadas.
La arquitectura permitirá incorporar:
- tokens;
- certificados;
- códigos de activación;
- validaciones temporales.
***
12. Auditoría
Todas las operaciones relevantes deberán registrarse.
Ejemplos:
- inicio de sesión;
- OTA;
- Recovery;
- cambios de configuración;
- creación de usuarios;
- operaciones administrativas.
Los registros facilitarán el diagnóstico y la trazabilidad.
***
13. Gestión de permisos
El sistema distinguirá entre autenticación y autorización.
Autenticación:
- identifica al usuario.
Autorización:
- determina qué puede hacer.
La arquitectura deberá permitir ampliar el sistema de permisos sin rediseños.
***
14. Evolución futura
La plataforma podrá incorporar posteriormente:
- autenticación multifactor;
- certificados cliente;
- HSM;
- Secure Boot;
- Flash Encryption;
- VPN;
- Zero Trust.
La arquitectura deberá permitir estas mejoras sin modificar el funcionamiento general.
***
15. Beneficios
Para el usuario:
- mayor confianza;
- protección de datos;
- menor riesgo.
Para el administrador:
- trazabilidad;
- control de accesos;
- auditoría.
Para la plataforma:
- arquitectura robusta;
- crecimiento seguro;
- preparación para entornos profesionales.
***
16. Relación con otras SPEC
Esta especificación complementa todas las SPEC anteriores.
Especialmente:
- SPEC-004 Edge OS;
- SPEC-005 Backend;
- SPEC-007 OTA;
- SPEC-008 Recovery;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management.
***
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-010
Desarrolla:
- Política de seguridad
- Protección de la plataforma
Implementación:
- Constituirá la referencia común para todas las decisiones relacionadas con la seguridad de ESP Platform.
***
SPEC-012 — Modelo SaaS
Documento: SPEC-012
Título: Modelo SaaS
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define la evolución de ESP Platform hacia un modelo SaaS (Software as a Service).
El objetivo es que la arquitectura diseñada para una instalación local pueda evolucionar de forma natural hacia un servicio alojado para múltiples clientes sin necesidad de rediseñar la plataforma.
El modelo SaaS constituye una evolución de la arquitectura, no una arquitectura diferente.
***
2. Objetivos
El modelo SaaS deberá permitir:
- múltiples clientes;
- múltiples usuarios;
- múltiples organizaciones;
- múltiples instalaciones;
- aislamiento entre clientes;
- administración centralizada;
- crecimiento prácticamente ilimitado.
***
3. Filosofía
La plataforma deberá diseñarse desde el primer día pensando en un futuro SaaS, aunque la primera versión funcione únicamente en una instalación local.
Las decisiones actuales no deberán impedir esa evolución.
***
4. Evolución prevista
La evolución natural será:
Instalación local
↓
Servidor único
↓
Varios usuarios
↓
Varios clientes
↓
Multiempresa
↓
SaaS
Cada etapa reutilizará la arquitectura existente.
***
5. Organización
El sistema distinguirá conceptualmente entre:
- plataforma;
- organización;
- usuario;
- dispositivo.
Cada organización administrará exclusivamente sus propios recursos.
***
6. Aislamiento
Los datos de una organización nunca deberán mezclarse con los de otra.
El Backend deberá garantizar el aislamiento lógico entre clientes.
La arquitectura permitirá evolucionar posteriormente hacia otros mecanismos de aislamiento si fuese necesario.
***
7. Gestión de usuarios
Cada organización podrá disponer de sus propios usuarios.
Inicialmente podrán existir perfiles como:
- administrador;
- técnico;
- operador;
- solo lectura.
La arquitectura permitirá ampliar estos perfiles.
***
8. Dispositivos
Cada dispositivo pertenecerá a una única organización.
El cambio de propietario deberá realizarse mediante los mecanismos definidos en Provisioning.
Fleet Management mostrará únicamente los dispositivos autorizados para cada organización.
***
9. Firmware
El repositorio de firmware podrá evolucionar para soportar:
- firmware global;
- firmware privado;
- firmware experimental;
- versiones específicas por cliente.
La arquitectura deberá permitir estas opciones sin modificar el funcionamiento básico.
***
10. Administración
La plataforma distinguirá entre:
Administración del sistema.
Administración de la organización.
Administración de dispositivos.
Cada nivel dispondrá únicamente de las funciones que le correspondan.
***
11. Escalabilidad
El crecimiento del número de clientes no deberá requerir cambios importantes en la arquitectura.
La plataforma deberá poder crecer horizontalmente incorporando nuevos servicios cuando sea necesario.
***
12. Personalización
Cada organización podrá personalizar determinados elementos.
Ejemplos futuros:
- nombre;
- logotipo;
- idioma;
- zonas horarias;
- parámetros por defecto;
- políticas de actualización.
***
13. Licenciamiento
La arquitectura permitirá incorporar distintos modelos de licencia.
Ejemplos:
- gratuito;
- profesional;
- empresarial;
- OEM.
La gestión de licencias no deberá afectar al funcionamiento interno de los dispositivos.
***
14. Beneficios
Para el usuario:
- administración centralizada;
- acceso desde cualquier lugar;
- crecimiento sencillo.
Para el administrador:
- mantenimiento simplificado;
- reutilización de infraestructura;
- despliegue rápido.
Para el proyecto:
- evolución comercial;
- modelo de negocio;
- escalabilidad.
***
15. Evolución futura
La arquitectura permitirá incorporar posteriormente:
- alta automática de organizaciones;
- facturación;
- suscripciones;
- marketplace;
- API pública;
- integraciones de terceros.
***
16. Relación con otras SPEC
Esta especificación amplía:
- SPEC-005 Backend;
- SPEC-010 Fleet Management;
- SPEC-011 Seguridad.
Servirá de base para:
- SPEC-013 Modelo de Datos;
- SPEC-014 APIs.
***
17. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-011
Desarrolla:
- Arquitectura SaaS
- Multiempresa
- Multiusuario
Implementación:
- Permitirá evolucionar ESP Platform desde una instalación local hasta una plataforma SaaS sin rediseñar su arquitectura.
***
SPEC-013 — Modelo de Datos
Documento: SPEC-013
Título: Modelo de Datos
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el modelo conceptual de datos de ESP Platform.
Su finalidad es establecer las entidades principales de la plataforma y las relaciones existentes entre ellas.
No constituye un diseño físico de base de datos, sino el modelo lógico que servirá como referencia para PostgreSQL y para las APIs del Backend.
***
2. Objetivos
El modelo deberá:
- representar toda la plataforma;
- evitar duplicidad de información;
- facilitar la escalabilidad;
- mantener independencia respecto al motor de base de datos;
- servir de referencia para toda la implementación.
***
3. Filosofía
Cada entidad deberá representar un único concepto del negocio.
Las relaciones deberán ser claras y evitar dependencias innecesarias.
El modelo deberá poder evolucionar incorporando nuevas entidades sin alterar las existentes.
***
4. Entidades principales
El modelo inicial estará formado por las siguientes entidades.
- Organización
- Usuario
- Dispositivo
- Firmware
- Aplicación
- Hardware
- OTA
- Provisioning
- Recovery
- Auditoría
- Grupo
- Configuración
Estas entidades constituyen el núcleo de la plataforma.
***
5. Organización
Representa una empresa, instalación o cliente.
Ejemplos de atributos:
- identificador;
- nombre;
- descripción;
- estado;
- fecha de creación.
Una organización podrá contener múltiples usuarios y múltiples dispositivos.
***
6. Usuario
Representa una persona autorizada para utilizar la plataforma.
Ejemplos de atributos:
- identificador;
- nombre;
- correo electrónico;
- contraseña;
- perfil;
- estado.
Cada usuario pertenecerá a una organización.
***
7. Dispositivo
Representa un equipo físico.
Ejemplos de atributos:
- identificador único;
- nombre;
- hardware;
- aplicación;
- firmware;
- estado;
- dirección IP;
- MAC;
- última conexión.
Cada dispositivo pertenecerá a una única organización.
***
8. Firmware
Representa una versión concreta de software.
Ejemplos de atributos:
- nombre;
- versión;
- aplicación;
- hardware compatible;
- fecha;
- checksum;
- tamaño.
Un firmware podrá instalarse en múltiples dispositivos compatibles.
***
9. Aplicación
Representa el tipo funcional del firmware.
Ejemplos:
- AZ-TEMP;
- AZ-POWER;
- AZ-NFC;
- AZ-IO;
- AZ-RELAY.
Cada firmware pertenecerá a una aplicación.
***
10. Hardware
Representa la plataforma física.
Ejemplos:
- ESP32 DevKit;
- ESP32-S3;
- ESP32-C6;
- futuras placas propias.
Permitirá comprobar compatibilidades antes de instalar firmware.
***
11. OTA
Representa una operación de actualización.
Ejemplos de atributos:
- dispositivo;
- firmware origen;
- firmware destino;
- fecha;
- estado;
- resultado.
El historial OTA permanecerá asociado al dispositivo.
***
12. Provisioning
Representa el alta inicial de un dispositivo.
Permitirá almacenar:
- fecha;
- instalador;
- organización;
- parámetros iniciales.
***
13. Recovery
Representa un proceso de recuperación.
Permitirá registrar:
- motivo;
- fecha;
- firmware recuperado;
- resultado.
***
14. Auditoría
Representa cualquier operación relevante realizada en la plataforma.
Ejemplos:
- inicio de sesión;
- OTA;
- alta;
- cambios de configuración;
- operaciones administrativas.
***
15. Grupo
Permitirá organizar dispositivos.
Ejemplos:
- edificio;
- planta;
- laboratorio;
- cliente;
- proyecto.
Un dispositivo podrá pertenecer a varios grupos si la arquitectura futura así lo requiere.
***
16. Configuración
Representa parámetros persistentes.
Existirán dos grandes categorías:
Configuración del sistema.
Configuración específica de la aplicación.
Ambas deberán permanecer separadas conceptualmente.
***
17. Relaciones principales
Conceptualmente:
Organización
│
├──── Usuarios
│
└──── Dispositivos
│
├──── Firmware
│
├──── Aplicación
│
├──── Hardware
│
├──── OTA
│
├──── Recovery
│
└──── Configuración
Este modelo constituye la referencia general de toda la plataforma.
***
18. Evolución futura
El modelo permitirá incorporar posteriormente nuevas entidades.
Ejemplos:
- licencias;
- suscripciones;
- mapas;
- dashboards;
- reglas;
- IA;
- mantenimiento predictivo.
Estas ampliaciones no deberán requerir rediseñar el núcleo del modelo.
***
19. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-010 Fleet Management;
- SPEC-012 SaaS.
Servirá de base para:
- SPEC-014 APIs;
- implementación PostgreSQL;
- implementación JPA.
***
20. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-012
Desarrolla:
- Modelo lógico de datos
Implementación:
- Constituirá la referencia conceptual para toda la persistencia de ESP Platform.
***
SPEC-014 — APIs
Documento: SPEC-014
Título: APIs
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define la arquitectura general de las APIs de ESP Platform.
Las APIs constituyen el mecanismo oficial de comunicación entre los distintos componentes de la plataforma.
Toda comunicación entre aplicaciones deberá realizarse mediante APIs claramente definidas.
***
2. Objetivos
La arquitectura de APIs deberá:
- mantener desacoplados los componentes;
- facilitar la reutilización;
- simplificar futuras integraciones;
- garantizar estabilidad;
- facilitar el versionado.
***
3. Filosofía
Las APIs representan contratos.
Una API nunca deberá depender de la implementación interna de un componente.
Mientras el contrato permanezca estable, la implementación podrá evolucionar libremente.
***
4. Arquitectura
Inicialmente existirán tres grandes grupos de APIs.
Backend API
Utilizada por:
- Frontend Web;
- futuras Apps móviles;
- herramientas externas.
***
Edge API
Implementada por Edge OS.
Permitirá administrar el dispositivo localmente.
***
Internal API
Utilizada exclusivamente entre servicios internos del Backend.
No estará disponible para aplicaciones externas.
***
5. Principios generales
Todas las APIs deberán cumplir:
- simplicidad;
- coherencia;
- estabilidad;
- documentación;
- versionado;
- seguridad.
***
6. Formato
Las APIs utilizarán inicialmente:
- HTTP;
- JSON;
- UTF-8.
La arquitectura permitirá incorporar posteriormente otros formatos cuando resulte necesario.
***
7. Versionado
Todas las APIs públicas deberán estar versionadas.
Ejemplo:
/api/v1/
Las nuevas versiones nunca deberán romper la compatibilidad sin una justificación clara.
***
8. Convenciones
Las rutas deberán ser:
- descriptivas;
- consistentes;
- predecibles.
Ejemplos:
/api/v1/devices
/api/v1/firmware
/api/v1/users
/api/v1/groups
***
9. Operaciones
Siempre que resulte razonable se utilizarán los métodos HTTP estándar.
Ejemplos:
GET
POST
PUT
DELETE
PATCH
Cada operación deberá tener una responsabilidad claramente definida.
***
10. Respuestas
Las respuestas deberán seguir un formato uniforme.
Conceptualmente:
{
"success": true,
"data": {},
"message": ""
}
Los errores deberán seguir la misma filosofía.
***
11. Códigos de estado
Se utilizarán los códigos HTTP apropiados.
Ejemplos:
200
201
400
401
403
404
409
500
No deberán utilizarse códigos ambiguos.
***
12. Autenticación
Las APIs protegidas requerirán autenticación.
La arquitectura permitirá evolucionar hacia distintos mecanismos sin modificar las rutas.
***
13. Documentación
Toda API pública deberá estar documentada.
La documentación deberá generarse automáticamente siempre que sea posible.
***
14. Integración
Las APIs constituirán el único mecanismo oficial de integración.
Ejemplos:
- Frontend;
- aplicaciones móviles;
- automatizaciones;
- terceros.
No deberán realizarse accesos directos a la base de datos.
***
15. Evolución futura
La arquitectura permitirá incorporar posteriormente:
- WebSocket;
- GraphQL;
- gRPC;
- Streaming;
- APIs públicas.
Estas ampliaciones no deberán afectar al diseño actual.
***
16. Beneficios
Para el desarrollador:
- menor acoplamiento;
- mayor reutilización;
- mantenimiento sencillo.
Para la plataforma:
- crecimiento ordenado;
- integración sencilla;
- evolución futura.
***
17. Relación con otras SPEC
Esta especificación desarrolla:
- SPEC-005 Backend;
- SPEC-013 Modelo de Datos.
Será utilizada por prácticamente todas las implementaciones de ESP Platform.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-013
Desarrolla:
- Arquitectura de APIs
- Contratos de comunicación
Implementación:
- Constituirá la referencia oficial para todas las APIs desarrolladas dentro de ESP Platform.
***
SPEC-015 — Estándares de Desarrollo
Documento: SPEC-015
Título: Estándares de Desarrollo
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define los estándares generales de desarrollo que deberán seguir todos los componentes de ESP Platform.
Su objetivo es garantizar que todo el software desarrollado mantenga un nivel homogéneo de calidad, legibilidad y mantenibilidad.
Estas normas serán aplicables tanto al código desarrollado manualmente como al generado mediante inteligencia artificial.
***
2. Objetivos
Los estándares deberán garantizar:
- uniformidad;
- claridad;
- modularidad;
- reutilización;
- facilidad de mantenimiento;
- facilidad de revisión.
***
3. Filosofía
Todo desarrollo deberá priorizar:
- simplicidad;
- legibilidad;
- estabilidad;
- mantenibilidad.
La complejidad solo se aceptará cuando aporte un beneficio claramente justificado.
***
4. Modularidad
Cada módulo deberá tener una única responsabilidad.
Los módulos deberán comunicarse mediante interfaces claramente definidas.
Las dependencias entre módulos deberán mantenerse al mínimo.
***
5. Organización del código
Cada proyecto deberá mantener una estructura coherente.
La organización deberá facilitar la localización rápida de cualquier componente.
No deberán mezclarse responsabilidades diferentes dentro del mismo módulo.
***
6. Reutilización
Antes de desarrollar una nueva funcionalidad deberá comprobarse si ya existe un componente reutilizable.
La duplicación de código deberá evitarse siempre que resulte razonable.
***
7. Documentación
Todo componente relevante deberá estar documentado.
La documentación deberá explicar:
- propósito;
- responsabilidades;
- funcionamiento general;
- limitaciones.
La documentación deberá mantenerse sincronizada con el código.
***
8. Gestión de errores
Los errores deberán tratarse explícitamente.
No deberán ignorarse excepciones ni situaciones anómalas.
Siempre que resulte posible deberán registrarse para facilitar el diagnóstico.
***
9. Registro de eventos
Las operaciones relevantes deberán generar información de diagnóstico.
Los mensajes deberán ser claros y útiles.
No deberán utilizarse mensajes ambiguos o poco descriptivos.
***
10. Calidad del código
El código deberá ser:
- legible;
- consistente;
- fácilmente revisable;
- fácilmente ampliable.
La claridad tendrá prioridad sobre la optimización prematura.
***
11. Compatibilidad
Las nuevas funcionalidades no deberán romper el funcionamiento existente salvo decisión explícita.
La compatibilidad deberá considerarse durante todo el ciclo de desarrollo.
***
12. Pruebas
Toda funcionalidad importante deberá verificarse antes de considerarse finalizada.
Siempre que resulte posible deberán realizarse:
- pruebas unitarias;
- pruebas de integración;
- pruebas funcionales.
***
13. Control de versiones
Todo el desarrollo deberá gestionarse mediante Git.
Los cambios deberán mantenerse organizados y ser fácilmente identificables.
***
14. Dependencias
Las dependencias externas deberán mantenerse al mínimo.
Solo se incorporarán cuando aporten un beneficio claro para el proyecto.
Siempre que resulte posible deberán utilizarse componentes ampliamente mantenidos.
***
15. Evolución
La arquitectura deberá facilitar futuras ampliaciones.
Cada nueva funcionalidad deberá integrarse respetando las decisiones arquitectónicas ya establecidas.
No deberán introducirse soluciones aisladas que rompan la coherencia del proyecto.
***
16. Beneficios
Para el desarrollador:
- mayor productividad;
- menor complejidad;
- revisiones más sencillas.
Para el proyecto:
- mantenimiento reducido;
- evolución ordenada;
- menor deuda técnica.
***
17. Relación con otras SPEC
Esta especificación complementa todas las SPEC anteriores.
Será utilizada especialmente junto con:
- SPEC-004 Edge OS;
- SPEC-005 Backend;
- SPEC-019 Normas para Codex.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-014
Desarrolla:
- Estándares generales de desarrollo
Implementación:
- Constituirá la referencia común para cualquier desarrollo realizado dentro de ESP Platform.
***
SPEC-016 — Estándares UI/UX
Documento: SPEC-016
Título: Estándares UI/UX
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define los estándares de interfaz de usuario (UI) y experiencia de usuario (UX) que deberán seguir todos los componentes de ESP Platform.
Su objetivo es proporcionar una experiencia homogénea, intuitiva y profesional en toda la plataforma, independientemente del dispositivo o aplicación utilizada.
***
2. Objetivos
La experiencia de usuario deberá transmitir:
- simplicidad;
- claridad;
- rapidez;
- consistencia;
- sensación de producto profesional.
Todas las aplicaciones deberán compartir la misma filosofía visual.
***
3. Filosofía
La interfaz nunca deberá recordar a una herramienta técnica de desarrollo.
ESP Platform deberá percibirse como un producto comercial de alta calidad.
La complejidad técnica deberá permanecer oculta siempre que sea posible.
***
4. Consistencia
Todos los componentes deberán compartir:
- misma identidad visual;
- misma terminología;
- misma organización;
- mismos criterios de navegación;
- mismos mensajes.
El usuario no deberá aprender una interfaz diferente para cada módulo.
***
5. Diseño
El diseño deberá priorizar:
- espacios amplios;
- buena legibilidad;
- pocos elementos simultáneos;
- navegación sencilla;
- jerarquía visual clara.
La información importante deberá destacar de forma natural.
***
6. Navegación
Toda la plataforma deberá resultar fácilmente navegable.
El usuario deberá saber siempre:
- dónde se encuentra;
- qué está haciendo;
- qué ocurrirá al realizar una acción.
***
7. Formularios
Los formularios deberán minimizar el número de campos.
Siempre que sea posible:
- valores por defecto;
- autocompletado;
- validación inmediata;
- mensajes claros.
***
8. Mensajes
Todos los mensajes deberán ser:
- comprensibles;
- breves;
- útiles;
- consistentes.
Nunca deberán mostrarse errores técnicos al usuario cuando puedan sustituirse por explicaciones más claras.
***
9. Colores
Los colores deberán utilizarse con un propósito.
Ejemplos:
- éxito;
- advertencia;
- error;
- información.
El color nunca deberá ser el único mecanismo para transmitir información importante.
***
10. Iconografía
Los iconos deberán ser:
- sencillos;
- reconocibles;
- consistentes.
Todo icono importante deberá ir acompañado de texto cuando sea necesario.
***
11. Adaptabilidad
Toda la plataforma deberá funcionar correctamente en:
- ordenador;
- tablet;
- teléfono móvil.
El diseño será responsive desde el inicio.
***
12. Rendimiento
La interfaz deberá responder con rapidez.
El usuario deberá recibir siempre información sobre el progreso de operaciones largas.
Ejemplos:
- barras de progreso;
- indicadores de carga;
- mensajes de estado.
***
13. Accesibilidad
Siempre que resulte posible deberán seguirse criterios básicos de accesibilidad.
Ejemplos:
- contraste adecuado;
- tamaño suficiente;
- navegación mediante teclado;
- etiquetas descriptivas.
***
14. Experiencia del instalador
Las operaciones habituales deberán requerir el menor número posible de pasos.
Ejemplos:
- Flasher;
- Provisioning;
- OTA.
El objetivo será reducir tiempos de instalación y errores.
***
15. Beneficios
Para el usuario:
- aprendizaje rápido;
- menor frustración;
- sensación de calidad.
Para el administrador:
- menor tiempo de formación;
- menor número de incidencias.
Para la plataforma:
- identidad propia;
- coherencia;
- diferenciación frente a otras soluciones.
***
16. Evolución futura
La identidad visual podrá evolucionar.
Sin embargo deberán mantenerse:
- coherencia;
- simplicidad;
- facilidad de uso.
Las mejoras visuales nunca deberán perjudicar la usabilidad.
***
17. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-006 Flasher Web;
- SPEC-009 Provisioning;
- SPEC-010 Fleet Management.
Será aplicable a toda interfaz desarrollada para ESP Platform.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-015
Desarrolla:
- Estándares UI
- Estándares UX
- Experiencia de usuario
Implementación:
- Constituirá la referencia común para todas las interfaces de usuario desarrolladas dentro de ESP Platform.
***
SPEC-017 — Convenciones de Nomenclatura
Documento: SPEC-017
Título: Convenciones de Nomenclatura
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define las convenciones de nomenclatura que deberán utilizarse en todos los componentes de ESP Platform.
Su objetivo es mantener una terminología uniforme en el código, la documentación, la infraestructura y los dispositivos.
Una nomenclatura coherente reduce errores y facilita el mantenimiento del proyecto.
***
2. Objetivos
Las convenciones deberán garantizar:
- claridad;
- coherencia;
- legibilidad;
- escalabilidad;
- facilidad de búsqueda.
Todos los desarrollos deberán seguir estas normas.
***
3. Filosofía
Cada elemento deberá tener un único nombre oficial.
No deberán utilizarse nombres diferentes para representar el mismo concepto.
La terminología utilizada en la documentación deberá coincidir con la utilizada en el software.
***
4. Nombre del proyecto
El nombre oficial será:
ESP Platform
Los componentes internos utilizarán este nombre como referencia.
***
5. Aplicaciones
Las aplicaciones oficiales seguirán el prefijo:
AZ-
Ejemplos:
- AZ-TEMP
- AZ-POWER
- AZ-NFC
- AZ-IO
- AZ-RELAY
Nuevas aplicaciones deberán respetar este criterio.
***
6. Edge OS
El sistema operativo común recibirá el nombre:
Aeizoon Edge OS
No deberán utilizarse variantes diferentes.
***
7. Backend
El Backend se identificará como:
ESP Platform Backend
Los módulos internos podrán disponer de nombres específicos siempre que mantengan coherencia.
***
8. Firmware
Las versiones de firmware deberán identificarse mediante:
- aplicación;
- versión;
- hardware.
Ejemplo conceptual:
AZ-TEMP v1.2.0 ESP32-S3
***
9. Hardware
Los modelos deberán identificarse mediante nombres claros y consistentes.
Ejemplos:
- ESP32 DevKit
- ESP32-S3
- ESP32-C6
- Aeizoon Board (futuro)
***
10. Base de datos
Las entidades deberán utilizar nombres descriptivos.
Las tablas representarán conceptos del negocio.
Se evitarán abreviaturas innecesarias.
***
11. APIs
Las rutas deberán mantener una estructura uniforme.
Ejemplo:
/api/v1/devices
/api/v1/firmware
/api/v1/users
/api/v1/groups
***
12. Código
Las clases, paquetes y módulos deberán utilizar nombres descriptivos.
No deberán utilizarse nombres genéricos como:
- Utils
- Misc
- Temp
- Test
Salvo justificación clara.
***
13. Variables
Los nombres deberán describir claramente su propósito.
Se evitarán abreviaturas ambiguas.
La claridad tendrá prioridad sobre la brevedad.
***
14. Documentación
Toda la documentación deberá utilizar la misma terminología definida en esta especificación.
No deberán coexistir nombres alternativos para un mismo concepto.
***
15. Evolución
La incorporación de nuevos nombres deberá respetar los criterios definidos en este documento.
Cuando aparezca un nuevo concepto, deberá asignársele un nombre único antes de comenzar su implementación.
***
16. Beneficios
Para el desarrollador:
- mayor claridad;
- menor confusión;
- búsqueda más sencilla.
Para el proyecto:
- documentación consistente;
- mantenimiento simplificado;
- menor deuda técnica.
***
17. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-004 Edge OS;
- SPEC-005 Backend;
- SPEC-014 APIs;
- SPEC-015 Estándares de Desarrollo.
Será aplicable a todo el ecosistema ESP Platform.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-016
Desarrolla:
- Convenciones de nomenclatura
- Terminología oficial
Implementación:
- Constituirá la referencia oficial para todos los nombres utilizados dentro de ESP Platform.
***
SPEC-018 — Architecture Decision Records (ADR)
Documento: SPEC-018
Título: Architecture Decision Records (ADR)
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el uso de Architecture Decision Records (ADR) dentro de ESP Platform.
Su objetivo es conservar de forma permanente las decisiones arquitectónicas relevantes adoptadas durante el desarrollo del proyecto.
Los ADR permitirán comprender no solo qué se decidió, sino también por qué se tomó cada decisión.
***
2. Objetivos
Los ADR deberán permitir:
- documentar decisiones importantes;
- justificar alternativas descartadas;
- preservar el conocimiento del proyecto;
- facilitar futuras revisiones;
- reducir la dependencia del conocimiento personal.
***
3. Filosofía
Toda decisión arquitectónica significativa deberá quedar registrada.
Las decisiones pequeñas del desarrollo diario no requerirán un ADR.
Solo deberán documentarse aquellas decisiones cuyo impacto sea relevante para la evolución del proyecto.
***
4. Cuándo crear un ADR
Se generará un ADR cuando exista una decisión relacionada con:
- arquitectura;
- tecnologías;
- seguridad;
- almacenamiento;
- comunicaciones;
- interfaces;
- despliegue;
- mantenimiento.
***
5. Contenido mínimo
Cada ADR deberá incluir como mínimo:
- identificador;
- fecha;
- estado;
- contexto;
- decisión adoptada;
- consecuencias.
***
6. Estados
Los ADR podrán encontrarse en alguno de los siguientes estados:
- Propuesto.
- Aprobado.
- Sustituido.
- Obsoleto.
El historial deberá conservarse.
***
7. Numeración
Cada ADR dispondrá de un identificador único.
Ejemplos:
ADR-001
ADR-002
ADR-003
La numeración será secuencial.
***
8. Relación con las SPEC
Las SPEC definen la arquitectura general.
Los ADR documentan decisiones concretas tomadas durante la implementación.
Las SPEC constituyen documentos permanentes.
Los ADR reflejan la evolución del proyecto.
***
9. Modificación
Un ADR aprobado no deberá modificarse.
Si cambia una decisión, deberá generarse un nuevo ADR indicando cuál sustituye al anterior.
Esto permitirá conservar el historial completo.
***
10. Responsabilidad
Los ADR podrán ser redactados por:
- desarrolladores;
- arquitectos;
- Codex.
La aprobación corresponderá al responsable del proyecto.
***
11. Beneficios
Los ADR permitirán:
- comprender decisiones antiguas;
- evitar repetir análisis ya realizados;
- facilitar la incorporación de nuevos desarrolladores;
- mejorar la continuidad del proyecto.
***
12. Evolución futura
La plataforma podrá incorporar herramientas para consultar automáticamente los ADR.
También podrán relacionarse con:
- incidencias;
- versiones;
- Roadmap;
- documentación técnica.
***
13. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-001 Filosofía;
- SPEC-002 Arquitectura;
- SPEC-015 Estándares de Desarrollo.
Será aplicable a todas las decisiones arquitectónicas futuras.
***
14. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-017
Desarrolla:
- Gestión de Architecture Decision Records
Implementación:
- Constituirá el procedimiento oficial para registrar las decisiones arquitectónicas relevantes de ESP Platform.
***
SPEC-019 — Normas para Codex
Documento: SPEC-019
Título: Normas para Codex
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define las normas generales que deberán seguir Codex y cualquier otro agente de inteligencia artificial durante el desarrollo de ESP Platform.
Su objetivo es garantizar que toda implementación respete la arquitectura, los estándares y la filosofía del proyecto.
***
2. Objetivos
Codex deberá:
- respetar la arquitectura definida;
- mantener la coherencia del proyecto;
- minimizar la deuda técnica;
- documentar su trabajo;
- facilitar el mantenimiento futuro.
***
3. Filosofía
Codex actuará como desarrollador del proyecto, no como diseñador de la arquitectura.
La arquitectura se encuentra definida en las SPEC.
Las modificaciones arquitectónicas deberán proponerse, nunca aplicarse automáticamente.
***
4. Alcance
Codex podrá:
- implementar;
- refactorizar;
- documentar;
- corregir errores;
- realizar pruebas;
- mejorar el código.
No deberá modificar decisiones arquitectónicas sin aprobación expresa.
***
5. Principios generales
Toda implementación deberá respetar:
- simplicidad;
- modularidad;
- claridad;
- mantenibilidad;
- reutilización.
***
6. Arquitectura
Antes de implementar cualquier funcionalidad, Codex deberá comprobar que resulta coherente con las SPEC existentes.
En caso de conflicto deberá informar antes de continuar.
***
7. Reutilización
Antes de crear un nuevo componente deberá comprobar si ya existe uno reutilizable.
La duplicación de código deberá evitarse siempre que sea posible.
***
8. Documentación
Toda funcionalidad relevante deberá ir acompañada de la documentación correspondiente.
La documentación deberá mantenerse sincronizada con el código.
***
9. Calidad
Codex deberá priorizar:
- código legible;
- estructura clara;
- responsabilidades bien definidas;
- bajo acoplamiento.
La claridad tendrá prioridad sobre soluciones excesivamente complejas.
***
10. Validación
Toda funcionalidad implementada deberá verificarse antes de considerarse terminada.
Siempre que resulte posible deberán realizarse pruebas adecuadas.
Los resultados deberán documentarse.
***
11. Cambios
Los cambios importantes deberán explicarse.
Cuando una implementación implique decisiones relevantes, Codex deberá indicar:
- qué cambia;
- por qué cambia;
- consecuencias.
***
12. Comunicación
Las respuestas deberán ser:
- claras;
- técnicas;
- concisas;
- orientadas a la implementación.
Cuando exista incertidumbre deberá indicarse explícitamente.
***
13. Gestión de incidencias
Ante un problema, Codex deberá:
- identificar la causa;
- proponer alternativas;
- justificar la solución adoptada.
No deberá ocultar limitaciones conocidas.
***
14. Relación con los ADR
Cuando una decisión implique un cambio arquitectónico significativo, Codex deberá proponer la creación de un nuevo ADR.
Las SPEC únicamente cambiarán mediante decisión expresa del responsable del proyecto.
***
15. Relación con el Roadmap
Codex deberá respetar el Roadmap definido para ESP Platform.
No deberá adelantar fases sin autorización.
Cada implementación deberá corresponder con la fase activa del proyecto.
***
16. Beneficios
Estas normas permitirán:
- mantener la coherencia;
- reducir errores;
- facilitar revisiones;
- preservar la arquitectura;
- acelerar el desarrollo.
***
17. Relación con otras SPEC
Esta especificación complementa especialmente:
- SPEC-015 Estándares de Desarrollo;
- SPEC-018 ADR.
Será aplicable durante todo el ciclo de vida del proyecto.
***
18. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-018
Desarrolla:
- Normas de trabajo para Codex
- Reglas de implementación
Implementación:
- Constituirá el marco de trabajo obligatorio para cualquier agente de inteligencia artificial que participe en el desarrollo de ESP Platform.
***
SPEC-020 — Roadmap
Documento: SPEC-020
Título: Roadmap
Proyecto: ESP Platform
Versión: 1.0
Estado: Borrador para revisión
Documento maestro final: ESP_PLATFORM_ARCHITECTURE_v1.0.md
***
1. Propósito
Esta especificación define el Roadmap oficial de ESP Platform.
Su objetivo es establecer el orden de ejecución del proyecto para garantizar un desarrollo progresivo, coherente y alineado con la arquitectura definida en las SPEC anteriores.
El Roadmap constituye la planificación de alto nivel del proyecto.
***
2. Filosofía
El desarrollo deberá realizarse mediante fases incrementales.
Cada fase deberá generar un resultado funcional antes de comenzar la siguiente.
No deberán iniciarse fases posteriores mientras la fase actual no se considere suficientemente estable.
***
3. MVP
El primer objetivo del proyecto será disponer de un MVP completamente funcional.
El MVP deberá permitir:
- instalar firmware mediante Flasher Web;
- arrancar un ESP32;
- acceder a la interfaz web del dispositivo;
- gestionar firmware desde el Backend.
La finalidad del MVP será validar toda la arquitectura definida.
***
4. Fase 1
Infraestructura.
Objetivos:
- crear la máquina virtual;
- desplegar el Backend;
- configurar PostgreSQL;
- desplegar el Frontend;
- preparar el repositorio de firmware.
Resultado esperado:
Infraestructura completamente operativa.
***
5. Fase 2
Flasher Web.
Objetivos:
- cargar firmware;
- seleccionar hardware;
- conectar mediante USB;
- flashear un ESP32;
- verificar el resultado.
Resultado esperado:
Primer dispositivo funcionando.
***
6. Fase 3
Edge OS.
Objetivos:
- estructura común del firmware;
- configuración;
- interfaz web;
- MQTT;
- Modbus TCP.
Resultado esperado:
Primer firmware oficial.
***
7. Fase 4
Provisioning.
Objetivos:
- alta automática;
- identidad;
- QR;
- registro en Backend.
Resultado esperado:
Primer dispositivo integrado completamente en ESP Platform.
***
8. Fase 5
OTA.
Objetivos:
- actualización remota;
- verificación;
- rollback.
Resultado esperado:
Actualizaciones seguras.
***
9. Fase 6
Recovery.
Objetivos:
- recuperación;
- Factory Reset;
- diagnóstico.
Resultado esperado:
Arquitectura resiliente.
***
10. Fase 7
Fleet Management.
Objetivos:
- inventario;
- monitorización;
- operaciones remotas.
Resultado esperado:
Administración centralizada.
***
11. Fase 8
Aplicaciones.
Desarrollo progresivo de:
- AZ-TEMP;
- AZ-POWER;
- AZ-NFC;
- AZ-IO;
- AZ-RELAY.
Cada aplicación reutilizará Edge OS.
***
12. Fase 9
Industrialización.
Objetivos:
- hardware propio;
- fabricación;
- certificaciones;
- documentación;
- soporte.
Resultado esperado:
Producto comercial.
***
13. Fase 10
Modelo SaaS.
Objetivos:
- multiempresa;
- multiusuario;
- licencias;
- suscripciones;
- despliegue cloud.
Resultado esperado:
ESP Platform como servicio.
***
14. Prioridades
El orden de prioridad será siempre:
1. Arquitectura.
2. Estabilidad.
3. Funcionalidad.
4. Rendimiento.
5. Optimización.
Nunca deberá sacrificarse la arquitectura por acelerar una implementación.
***
15. Gestión del conocimiento
Durante todo el desarrollo deberán mantenerse actualizados:
- SPEC;
- ADR;
- documentación técnica;
- Roadmap.
La documentación formará parte del producto.
***
16. Evolución
El Roadmap podrá ampliarse.
Las nuevas fases deberán respetar la arquitectura definida en las SPEC anteriores.
Las modificaciones importantes deberán documentarse mediante ADR.
***
17. Finalización
Se considerará completada una fase cuando:
- los objetivos se hayan alcanzado;
- las pruebas sean satisfactorias;
- la documentación esté actualizada.
Solo entonces podrá iniciarse la siguiente fase.
***
18. Relación con otras SPEC
Esta especificación resume y coordina todas las SPEC anteriores.
Constituye el documento de referencia para planificar el desarrollo de ESP Platform.
***
19. Estado documental
Estado: Pendiente de aprobación
Dependencias:
- SPEC-001 a SPEC-019
Desarrolla:
- Planificación general
- Roadmap oficial
Implementación:
- Constituirá la guía oficial para la ejecución del proyecto y la priorización de todas las fases de desarrollo de ESP Platform.
***
Información técnica del documento
- Ruta lógica
- architecture/ESP_PLATFORM_ARCHITECTURE_v1.0.md
- Commit Git
a83cef9e1ee0c5b0b22662fe3493139d77c23570- SHA-256
210c4155862c245259c654f1f5714be15f56ced93b91e264c1c4c22a27f99add- Regeneración
scripts/build-documentation.sh