Skip to content

O coletor, a Factory e os adapters ​

Objetivo: entender quem escolhe o equipamento e o que muda entre fabricantes.

A entrada monta o processo ​

main.ts fornece ao runtime a busca do inventário, a Factory, a publicação MQTT e configuração. O runtime não precisa criar o Prisma nem conhecer bytes Modbus para organizar o ciclo.

A fonte habilitada em inverter_sources tem adapterKey. Essa chave seleciona a classe; manufacturer e model são descrições, não código executável.

ts
const ADAPTERS = {
  'solis-solarman': () => new SolisAdapter(),
  'saj-r6-modbus-tcp': () => new SajR6Adapter(),
};

Trecho reduzido da Factory. Uma chave ausente é rejeitada, não resolvida por aproximação do nome.

O ciclo é sequencial ​

Cada fonte elegível conecta, lê, converte e publica. Timeout limita conexão, leitura e publicação. O finally tenta desconectar mesmo quando há erro.

Depois de concluir o ciclo, o runtime agenda o próximo em 60 segundos. O intervalo entre leituras inclui o trabalho do ciclo; não é uma promessa de amostras em instantes exatos de um minuto.

Solis admite até duas tentativas por ciclo. SAJ admite uma. Uma falha isolada não interrompe todas as outras fontes. Uma chave sem política aprovada é ignorada.

Normalizar antes de publicar ​

O adapter devolve UnifiedTelemetry. O mapper converte powerW em power_w, por exemplo. Potência, duas energias e estado são obrigatórios nessa interface; tensão, PV1 e temperatura são opcionais.

Ausência opcional permanece ausência. Não preencher automaticamente com zero.

O que há dentro de cada adapter? ​

  • Solis delega o transporte à biblioteca e interpreta um vetor com offset do mapa.
  • SAJ monta requisições de leitura TCP, acumula fragmentos, valida o frame e interpreta os blocos aprovados.

Exemplo didático de composição UInt32 no SAJ:

ts
valor = wordAlta * 65536 + wordBaixa;

Depois aplica a escala específica. A ordem das palavras é parte do mapa, não uma regra transferível a qualquer equipamento.

Veja a referência dos inversores e a explicação de Modbus e Solarman.

Revisão técnica: 06/10/2026. Fontes: main.ts, runtime.ts, CollectorFactory.ts, mapper.ts e adapters.

IFSP Campus Boituva · Energia, automação e software em um mesmo projeto