Antes de existir oferta, ordem ou pagamento, o medidor precisa enviar uma medição assinada. No fluxo atual, o device envia os dados a cada 15 minutos. A plataforma aceita o formato MVP em kWh e o formato da dissertação em Wh.

Visão geral

A avaliação de mercado é assíncrona (Celery Beat). O POST de medição apenas persiste; o matching corre no ciclo periódico do Market Service.

Headers obrigatórios

O HMAC usa o segredo public_key guardado no Meters Service. O Gateway serializa o JSON com chaves ordenadas e separadores compactos antes de validar a assinatura.

Formato MVP

Regras:
  • produced_kwh e consumed_kwh não podem ser negativos;
  • net_kwh deve corresponder a produced_kwh - consumed_kwh, arredondado para 4 casas;
  • measured_at_utc aceita ISO 8601 e é normalizado para UTC;
  • o sensor do header precisa coincidir com sensor_id.
Campos opcionais:
  • reactive_inductive_varh
  • reactive_capacitive_varh

Formato da dissertação

Regras:
  • activeImport é consumo em Wh;
  • activeExport é produção em Wh;
  • os dois campos são obrigatórios e não podem ser negativos;
  • o Gateway converte Wh para kWh e calcula net_kwh;
  • deviceId precisa coincidir com X-Sensor-Id.
Não misture os dois formatos no mesmo payload. Se houver campos MVP e dissertação juntos, a API retorna AMBIGUOUS_MEASUREMENT_FORMAT.

Persistência no Meters

O Meters Service valida e grava a medição no InfluxDB. Regras principais:
  • a cadência esperada é uma medição a cada 15 minutos por sensor;
  • a medição não pode estar mais de 15 minutos no futuro;
  • não pode existir outra medição do mesmo sensor no mesmo timestamp;
  • o sensor precisa existir;
  • last_communication_at é atualizado quando a medição gravada é mais recente.
As consultas internas por janela aceitam no máximo 60 minutos por chamada e respeitam o limite configurado em MEASUREMENTS_WINDOW_MAX.

Resposta ao device

Depois de gravar a medição, o Gateway consulta pagamentos pendentes no Transactions Service e devolve:
Se houver pagamentos, o device comprador grava a transação sem assinatura na fila local e o worker de pagamentos processa depois.

Motivos comuns de rejeição

Comercialização

Como a medição vira oferta, ordem ou trade