Skip to content

InfluxDB Line Protocol (Ingest)

The IoT de-facto ingest path: devices, Telegraf and collectors already speak it. TCP, newline-delimited, fire-and-forget.

<table>,entity=<device> <field>=<value>[,<field>=<value>...] [<timestamp-ns>]
xcon-db-time serve -root /var/lib/xcon-db-time -ilp :9009 -ilp-db firm1
printf 'telemetry,entity=veh-1 speed=52.5,status="moving" 1700000000000000000\n' | nc host 9009

Semantics

  • the entity tag is required; other tags are ignored
  • timestamps are nanoseconds (converted to the engine's milliseconds); omitted = server time
  • unknown tables and channels are auto-registered in the catalog: kind inferred from the first value, FILL NONE — mechanics only, never meaning. Declare channels properly via CREATE TABLE when you want HOLD/staleness.
  • value syntax → frozen types: "..." → string; 4.2, 42i, true/false → f64
  • a malformed line is dropped; the stream lives on (per-line contract). A type conflict with the catalog is an error, not a coercion.

Security model

ILP carries no credentials. One listener binds to one database (-ilp-db); run one listener per firm and firewall it to that firm's devices. For authenticated ingest, use POST /write instead — same line format, basic auth.