Añadir dispositivos push y pull

Paso a paso: crea un dispositivo de ingesta push o un feed HTTPS de consulta, asigna las claves JSON a etiquetas de Home y verifica las lecturas en vivo.

Primer plano de cables Ethernet Cat-5e blancos con conectores RJ45
El JSON de las sondas suele salir de la LAN por Ethernet o por un relay cercano, no directamente a internet. Foto: DiscDepotDundee.co.uk. CC BY-SA 4.0

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)

  1. Inicia sesión y abre Devices.
  2. En Push devices, haz clic en Create push device (se llama Workshop probe por defecto; puedes cambiarle el nombre cuando quieras).
  3. 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.
  4. ¿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.
  5. 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 (o publish ok en Boron). Las claves de los sensores se importan automáticamente (claves planas, objeto temp, 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.
  6. 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).
  7. 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

  1. 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
}
  1. Abre Devices → Pull feeds.
  2. Añade un feed: nombre, URL HTTPS y JSON root key (por defecto temp). Usa Test feed URL antes de guardar.
  3. 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.
  4. 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

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.