Os sistemas que consomem os dados (relays em Python, rotas de busca do Astro e mapeamentos do dashboard) todos esperam um formato JSON estável. Mudar as chaves sem atualizar quem as consome quebra os rótulos das sondas e as inserções no histórico sem nenhum aviso.
Documento canônico
{
"temp": {
"0": { "f": 38.2, "c": 3.4, "h": 41.0 },
"1": { "f": 36.8, "c": 2.7, "h": 43.5 },
"avg": { "f": 37.5, "c": 3.1, "h": 42.2 }
}
}
Significado dos campos
- Chaves numéricas correspondem aos índices das sondas no firmware e às entradas de mapeamento do dashboard.
- f / c: Fahrenheit e Celsius da mesma amostra.
- h: umidade relativa, em porcentagem, daquela sonda.
- avg: média apenas das sondas saudáveis; omita ou congele se um sensor estiver offline.
Formatos alternativos (detectados automaticamente)
A ingestão por push e os feeds por pull também aceitam SenML JSON (array RFC 8428 com unidades Cel / %RH) e respostas Home Assistant REST (state + attributes.unit_of_measurement) quando a raiz nativa temp não existe. Exemplos ao vivo: SenML, HA REST. Detalhes: ingestão e webhooks.
Consumidores
A busca da página inicial lê essa estrutura para os cartões públicos. Os feeds em Python podem manter o mesmo payload em cache. Mapeie os rótulos pelo mapeamento das sondas.
Perguntas frequentes
Qual formato de JSON o ProbeHarbor espera?
O formato padrão de pull é um objeto temp com chaves de sonda (f, c, h). O push também aceita chaves planas, sensors[], arrays JSON SenML e objetos de estado REST do Home Assistant. Os campos opcionais battery_pct e rssi ajudam a diagnosticar dispositivos fracos. Veja /about/ingest-and-webhooks ou o feed de exemplo em /api/feeds/example?format=document.