ProbeHarbor acepta lecturas de dos formas: tu hardware envía (push) JSON a una URL de ingesta, o nosotros extraemos (pull) JSON por HTTPS de un feed público de forma programada. Ambas se configuran en Dashboard → Devices. Los nodos ESP o a batería nuevos deberían usar push. Pull es para servidores LAN siempre encendidos o relés que ya exponen JSON por HTTPS.
Una cuenta gratuita (sin tarjeta) vincula tu clave de ingesta a tu hogar, para que el historial y las alertas sigan siendo privados. Si quieres ver lecturas sin registrarte, echa antes un vistazo a la demo en vivo.
Elige push o pull
| Ingesta push | Feed pull | |
|---|---|---|
| Quién inicia | Tu dispositivo | ProbeHarbor |
| Red | El dispositivo necesita HTTPS saliente (Uno Ethernet: HTTP hacia un relé TLS en la LAN) | La URL del feed debe ser accesible públicamente |
| Autenticación | Clave por dispositivo en la URL; aviso de flasheo + Reveal ingest key | URL HTTPS pública (TLS) |
| Forma del JSON | Claves planas, objeto temp, sensors[], SenML o HA REST | Raíz temp anidada (por defecto); SenML o HA REST detectados automáticamente |
| Ideal para | ESP32, Pico W, STM32 Nucleo (Ethernet + relé HTTPS en la LAN), Arduino Uno + Ethernet | Servidores Ethernet, relés FastAPI |
Dispositivo push (recomendado)
- Inicia sesión y abre Devices.
- En Push devices, haz clic en Create push device (se llama Workshop probe por defecto; puedes cambiarle el nombre cuando quieras).
- En el aviso de ingesta: escanea el QR o usa Download Arduino .ino / MicroPython .py / CircuitPython code.py / Zephyr main.c / CH32V main.c / AVR main.S / Teensy 4.1 .ino / PIC18 main.c / Particle Boron .ino / ESPHome snippet (con la URL o la ruta de ingesta ya rellenada). La clave permanece en la página 30 minutos y sobrevive a una recarga hasta que la cierres.
- ¿Perdiste la clave más tarde? En la tarjeta del dispositivo usa Reveal ingest key (si la recuperación de claves está activada en el servidor) o Rotate key para emitir una nueva. Los dispositivos creados antes de activar la recuperación de claves necesitan una rotación para guardar una copia cifrada recuperable.
- Flashea un ESP32 (consulta las opciones de flasheo: Arduino IDE, PlatformIO, MicroPython o el esptool web de Espressif), una Pico W (CircuitPython / MicroPython / Arduino-Pico), una STM32 Nucleo (Zephyr C + Ethernet), una CH32V307 (WCHNET C + Ethernet), un Uno en ensamblador GNU AVR (ATmega328P + W5100), una Teensy 4.1 (QNEthernet), un PIC18F67J60 (MLA TCP/IP) o una Particle Boron (webhook LTE). ¿Primero necesitas las piezas? Lista de materiales del kit ESP32 de congelación, Pico W, STM32 Zephyr, CH32V RISC-V, ensamblador AVR, Teensy 4.1, PIC18 Ethernet o celular (DS18B20 impermeable). El monitor serie a 115200 debería mostrar
POST 200(opublish oken Boron). Las claves de los sensores se importan automáticamente (claves planas, objetotemp, SenML o Home Assistant REST). Después puedes renombrar los sensores en la página Devices. La asignación manual en Advanced es opcional, para asignar claves de antemano. - Más ejemplos (Uno Ethernet + DHT22, MAX31855, MAX6675, etc.): sketches/. El W5100 no puede hacer TLS: envía un POST HTTP a un relé en la LAN (feeds en Python /
push_https_forward.py). - Haz una prueba rápida con curl y abre Live con la sesión iniciada. Si pasan unos 30 minutos sin envíos, Live avisa de que una sonda puede estar desconectada.
Ejemplo con curl (push)
Obtén un cuerpo de ejemplo en vivo del feed de ingesta de ejemplo (basado en el clima) y envíalo con POST a tu clave de dispositivo.
curl -X POST "https://probeharbor.dev/api/ingest/YOUR_DEVICE_KEY" \
-H "Content-Type: application/json" \
-d '{"temp1": 42.5, "door1": false, "battery": 87, "rssi": -62}' Formatos de payload: claves planas, el objeto clásico temp, sensors[] con tipo, SenML (RFC 8428) o JSON state de Home Assistant REST. Están documentados en ingesta y webhooks y en la referencia para desarrolladores de ingesta push. Prueba ejemplos en vivo: nativo, SenML, HA REST.
Feed pull
- Comprueba que tu feed devuelve JSON por HTTPS. Forma clásica (clave raíz por defecto
temp):
{
"temp": {
"0": { "c": 18.5, "f": 65.3, "h": 42 },
"1": { "c": 19.0, "f": 66.2, "h": 40 },
"avg": { "f": 65.75, "c": 18.75, "h": 41 }
},
"battery_pct": 87,
"rssi": -62
} - Abre Devices → Pull feeds.
- Añade un feed: nombre, URL HTTPS y JSON root key (por defecto
temp). Usa Test feed URL antes de guardar. - Haz clic en Save pull setup: las claves de las sondas se importan automáticamente del feed en vivo. Renombra las etiquetas en la misma página o haz clic en Accept suggested names.
- Haz clic en Fetch now para obtener lecturas al instante, o espera al siguiente sondeo programado y confirma las tarjetas en Live.
Por defecto, los feeds pull esperan objetos de sonda anidados bajo la raíz configurada (no claves planas al estilo push). Los arrays JSON SenML y las respuestas de Home Assistant REST se detectan automáticamente cuando falta esa raíz: pega la URL tal cual y asigna las claves de sonda que exponen SenML o HA (p. ej. 0, state). Si el microcontrolador no puede hacer TLS (Uno + shield Ethernet W5100), usa un relé HTTPS local (consulta feeds en Python o el reenviador HTTP→HTTPS con la biblioteca estándar para la ingesta push).
¿Ya usas MQTT?
Mantén Mosquitto o el MQTT de Home Assistant en tu LAN y replica las lecturas por HTTPS. ProbeHarbor no es un broker MQTT. Receta completa (curl, rest_command de HA, Node-RED): guía del puente MQTT. Consulta también ProbeHarbor frente a MQTT casero.
Comprueba que ya estás en línea
- Live: las tarjetas se actualizan en vivo; las sondas rezagadas muestran un aviso amarillo de desconexión tras unos 30 minutos.
- Devices → Status: última conexión, batería y RSSI cuando el payload los incluye (tras la primera lectura en vivo).
- Lo esencial contra heladas: define el umbral de congelación y el correo en Devices tras el primer POST, o en Alerts → When to alert, y envía una prueba (desbloquea el Overview completo tras la configuración inicial).
- Overview: estado del espacio; tras lo esencial, las métricas de Status (horas bajo cero, margen más frío, ΔT interior−exterior, dispersión entre sondas) e Insights (noches de riesgo, puerta/corriente/movimiento, calidad del aire). Los gráficos semanales pueden superponer humedad y punto de rocío cuando hay HR.
Relacionado
- API de ingesta y webhooks de alertas
- Alta con el QR del kit
- Configurar feeds de temperatura (a fondo sobre pull)
- Depurar lecturas desactualizadas
- Receta del puente MQTT · frente a MQTT casero · documentación MQTT para desarrolladores
- Desarrolladores: ingesta push · feeds pull
Preguntas frecuentes
¿Uso push o pull?
Usa push para nodos ESP/Arduino que puedan hacer POST HTTPS saliente. Usa pull cuando ya tengas un feed JSON HTTPS público (o un relé TLS) que ProbeHarbor pueda consultar de forma programada.
¿Por qué no aparecen lecturas en Home aunque la ingesta funcione?
Primero envía JSON por POST: las claves de los sensores se importan solas en Devices. Si Home sigue vacío, confirma que el dispositivo recibió un POST y revisa Devices → Device health. En los feeds pull, la raíz JSON debe ser correcta (temp por defecto), salvo que la URL devuelva SenML o JSON REST de Home Assistant, que se detectan automáticamente.