Saltar a contenido

ADR-022: Modo isla — operación autónoma sin internet

Estado: aceptado Fecha: 2026-05-17

Contexto

SmallCountry opera en una zona de montaña con conectividad a internet intermitente y de baja fiabilidad. Los cortes pueden durar horas o días. Las funciones críticas de la granja (control de riego, monitoreo de gallinas, sensores ambientales, gestión agrícola) deben seguir funcionando sin conexión externa. Sin un modo de operación autónomo, un corte de internet podría paralizar la operación de la granja o causar pérdida de datos.

Decisión

Todo servicio clasificado como Tier S (Supervivencia) o Tier A (Alta disponibilidad) según ADR-002 debe tener un fallback offline. Los dispositivos ESP32 y Shelly operan de forma autónoma usando lógica local sin depender del servidor central. MQTT en el edge usa buffer SPIFFS en los ESP32 para almacenar mensajes durante desconexiones. farmOS opera en modo local con caché de datos, sincronizando cuando la conexión se restablece. El resto de servicios (Tier B/C) pueden degradarse o pausarse durante el modo isla.

Alternativas consideradas

Opción Por qué se descartó
Dependencia total de la nube Inviable: la conectividad no está garantizada. Una interrupción de internet detendría todas las operaciones críticas.
Internet satelital (Starlink, HughesNet) Latencia alta, costo recurrente elevado, dependencia de un proveedor externo. Útil como respaldo pero no como solución primaria. Starlink requiere cielo despejado.
Respaldo celular (4G/5G) Cobertura insuficiente en la zona de montaña. No es una opción confiable.
## Consecuencias
- ✅ Las funciones críticas de la granja nunca se detienen por falta de internet.
- ✅ ESP32 y Shelly con lógica autónoma local: los actuadores (riego, puertas, luces) funcionan aunque el servidor central esté caído.
- ✅ Buffer SPIFFS en ESP32: los datos de sensores no se pierden durante cortes, se almacenan localmente y se transmiten al reconectar.
- ✅ farmOS en modo local: los registros de cultivos, animales y tareas se capturan sin conexión y sincronizan después.
- ❌ Complejidad adicional en el firmware de los ESP32 para manejar el buffer y la lógica autónoma.
- ❌ Sincronización de datos post-corte: requiere manejo de conflictos cuando los datos offline difieren de la base central.
- ❌ No todos los servicios pueden operar offline: algunos Tier B/C simplemente no estarán disponibles durante el modo isla (inconveniente aceptado).
## Referencias
- ADR-003: Offline-first
- ADR-008: ESP32 como MCU
- Mecanismo 3: Degradación independiente