ProbeHarbor · kit

Ingest protocol

Engineering home for push/pull ingest. The live product, dashboard, and billing live at probeharbor.dev. Case study: ProbeHarbor. Full operator ingest docs: probeharbor.dev/developers.

Goals

  1. First successful POST creates or binds the device (auto-import).
  2. Push ingest and scheduled HTTPS pull feeds both work; many payload shapes are accepted.
  3. Auth is per-device (URL token or header), not a global firmware secret.

Minimal reading (flat keys)

Illustrative flat payload — live ingest also accepts sensors[], SenML, and Home Assistant REST shapes. Keys become sensor IDs on first contact.

{
  "device_id": "garage-north-01",
  "ts": "2026-09-07T16:02:11.000Z",
  "firmware": "esp32-dht22-1.4.0",
  "temp1": 3.2,
  "humidity1": 41,
  "door1": false
}
  • device_id — stable id you control.
  • ts — ISO-8601 UTC when the sample was taken.
  • temp1 / humidity1 — preferred flat channels (°C).
  • Optional channels: door1, leak / wet contacts, battery, rssi, firmware.

Transport

Push: POST JSON to a per-device ingest URL over HTTPS. Expect 2xx on accept; treat retries as idempotent on (device_id, ts) when possible.

Pull: expose an HTTPS feed the edge can fetch on a schedule. Same JSON object, a small array of readings, or a documented HA/SenML shape. Prefer fresh samples; stale feeds should not reset alerts falsely.

Related