Los sistemas que consumen los datos (relays en Python, rutas de consulta de Astro y asignaciones del panel) dan por hecho una estructura JSON estable. Cambiar las claves sin actualizar a esos consumidores rompe en silencio las etiquetas de las sondas y las inserciones del historial.
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 de los campos
- Las claves numéricas coinciden con los índices de sonda del firmware y con las entradas de asignación del panel.
- f / c: Fahrenheit y Celsius de la misma muestra.
- h: porcentaje de humedad relativa de esa sonda.
- avg: media solo de las sondas que funcionan bien; omítela o congélala si un sensor está desconectado.
Formatos alternativos (detección automática)
La ingesta push y los feeds pull también aceptan SenML JSON (array RFC 8428 con unidades Cel / %RH) y respuestas de la API REST de Home Assistant (state + attributes.unit_of_measurement) cuando falta la raíz nativa temp. Ejemplos en vivo: SenML, HA REST. Detalles: ingesta y webhooks.
Consumidores
La consulta de la página de inicio lee esta estructura para las tarjetas públicas. Los feeds en Python pueden guardar en caché la misma carga útil. Asigna las etiquetas con la asignación de sondas.
Preguntas frecuentes
¿Qué estructura JSON espera ProbeHarbor?
La estructura pull predeterminada es un objeto temp con claves de sonda (f, c, h). Push también acepta claves planas, sensors[], arrays JSON SenML y objetos de estado REST de Home Assistant. Los campos opcionales battery_pct y rssi ayudan a diagnosticar dispositivos con señal débil. Consulta /about/ingest-and-webhooks o el feed de ejemplo en /api/feeds/example?format=document.