Skip to content

System Architecture ​

La aplicación móvil OmilooS actúa como el panel de control soberano del usuario para gestionar generación local, trading energético y conectividad de red mesh. Para lograr una tolerancia máxima a fallos (resiliencia offline) y un aislamiento completo del hardware, el sistema se divide en tres niveles arquitectónicos.


1. Clean Architecture (Capa Flutter) ​

La lógica visual y de negocio en Dart está estructurada bajo patrones desacoplados de Clean Architecture. Ninguna vista interactúa de forma directa con sockets TCP o APIs de la cadena.

       [ CAPA DE PRESENTACIÓN ]
   Widgets (UI) ◄──► BLoC (State/Events)
             │
             ▼
        [ CAPA DE DOMINIO ]
   Use Cases ◄──► Entities (Modelos Puros)
             │
             ▼
         [ CAPA DE DATOS ]
   Repositories ◄──► Data Sources (Modbus/Rust FFI)

A. Capa de Presentación ​

  • Widgets (UI): Componentes gráficos de cristal esmerilado (Glassmorphism). Implementan animaciones fluidas de partículas y flujos energéticos sin lógica pesada en el hilo principal.
  • BLoC (Business Logic Component): Gestor de estados de la aplicación. Maneja eventos asíncronos y emite estados inmutables que redibujan la interfaz.

B. Capa de Dominio ​

  • Entities: Definiciones puras de datos (EnergySnapshot, LinkPoint, MeshNode) sin anotaciones de bases de datos o serializadores JSON.
  • Use Cases: Operaciones lógicas aisladas (p. ej., CalculateLos, GetTelemetryStream, PlaceP2pOrder).

C. Capa de Datos ​

  • Repositories: Coordinadores que determinan si los datos deben recuperarse de los dispositivos físicos locales, de la blockchain, o de bases de datos locales.
  • Data Sources: Mapeadores de bajo nivel que interactúan con Sockets, MethodChannels y el puente nativo de Rust.

2. Rust FFI Bridge (Rendimiento Crítico) ​

Para las tareas pesadas que el procesador móvil o de placa embebida no puede realizar de forma eficiente en la máquina virtual de Dart, OmilooS delega el control a una librería compilada en Rust (rust/src) expuesta mediante FFI:

  1. lora_driver.rs: Control de bajo nivel del chip transceptor Semtech SX1262. Procesa la modulación de las tramas de radiofrecuencia (LoRa), detecta colisiones de paquetes y computa el CRC antes de enviarlo por el puerto serie USB-OTG.
  2. inference_engine.rs: Enlace nativo C++ (a través de llama.cpp) para interactuar con la GPU/NPU integrada del hardware Edge (como el procesador Rockchip RK3588). Ejecuta modelos de lenguaje locales AndromedaLM en formatos cuantizados (GGUF INT4/8) protegiendo el consumo doméstico del usuario.
  3. substrate_rpc.rs: Cliente ultra-ligero JSON-RPC para la validación y anclaje descentralizado en EmpoorioChain.

3. Integración Inter-App (Deep Linking de Seguridad) ​

Para garantizar la seguridad de las claves criptográficas y evitar que una vulnerabilidad en la aplicación comprometa los fondos del usuario, OmilooS implementa un aislamiento de privilegios estricto:

[ OmilooS ] ──(omiloos://sign)──► [ OmilooS ] (Firma con chip Secure Element)
     ▲                                    │
     └──────(omiloos://signed)────────────┘
  • Firmas Criptográficas: Cuando se publica una oferta de venta de excedentes de energía en la red de malla, OmilooS genera el payload del trade y lo transmite mediante un Deep Link a la app OmilooS. Tras la autorización biométrica del usuario, OmilooS firma la transacción utilizando el Secure Element físico del teléfono y la retorna a OmilooS para su emisión on-chain.
  • Liquidación de Micropagos: La transferencia de tokens $DRACMA se delega a Eoonia Wallet a través de canales de estado (State Channels) de baja latencia.