Skip to content

Modbus Telemetry ​

OmilooS lee directamente las variables físicas de los inversores solares y baterías residenciales sin depender de los servidores cloud de los fabricantes. Esto se logra mediante el protocolo industrial Modbus TCP sobre la red local del usuario.


1. Protocolo de Conexión ​

La lectura de datos se realiza en la capa de datos a través de TelemetryModbusDatasource. La app inicia un cliente de Socket TCP (ModbusTcpClient) dirigido a la IP de red local del inversor (por defecto 192.168.1.150 en el puerto 502).

  • Intervalo de Sondeo (Polling): Cada 2 segundos.
  • Timeout de Conexión: 1.5 segundos (evita congelar el hilo de UI de Flutter si el inversor está desconectado).
  • Mecanismo de Resiliencia (Fallback): Si ocurre una excepción de red (SocketException o timeout), el sistema conmuta automáticamente a un flujo simulado con variaciones aleatorias gaussianas para mantener la UI operativa.

2. Mapa de Registros (Estándar SunSpec) ​

OmilooS realiza peticiones de tipo Read Holding Registers (Function Code 03) y Read Input Registers (Function Code 04). El mapa base decodifica los siguientes registros industriales SunSpec estándar:

RegistroParámetro FísicoTipo de DatoUnidad
40071Potencia CA de Salida Totaluint16 + Factor de EscalaVatios (W)
40083Voltaje Medio de Red de CAuint16 + Factor de EscalaVoltios (V)
40096Energía Acumulada Generadauint32Vatios-hora (Wh)
40120Estado de Carga de Batería (SoC)uint16Porcentaje (%)
40125Temperatura del Silicio del Inversorint16Grados Celsius (°C)

3. Renderizado Dinámico de Flujo de Potencia ​

La telemetría en tiempo real alimenta visualmente al widget PowerFlowCanvas ubicado en la pestaña principal de la aplicación.

  • Tecnología de Dibujo: Implementado mediante un CustomPainter en Flutter.
  • Algoritmo de Partículas: Se calculan ecuaciones diferenciales simples en base a los valores instantáneos de generación fotovoltaica, estado de carga de la batería y consumo de la vivienda. Las partículas se desplazan simulando la dirección real y velocidad de los electrones (p. ej., strings solares hacia el inversor, y excedentes saliendo hacia la red de vecinos).
  • Interpolación y Suavizado: Se utiliza interpolación cúbica mediante la librería fl_chart para pintar el histórico de 24 horas sin dientes de sierra ni parpadeos.