Skip to content

MQTT & IoT Ingestion

New here? Start with the Quickstart to launch Icelake locally and ingest your first reading in 5 minutes.

Icelake speaks MQTT natively — you point a source at any MQTT broker, Icelake subscribes to a topic, decodes each message, and lands the result on S3 as Parquet. No Node-RED, no Telegraf, no gateway service in between.

You manage MQTT sources from the Icelake admin dashboard under Data In → MQTT Sources. Each source captures broker credentials, a topic pattern, and a parsing mode.

ModeBest forWhat Icelake does
Generic JSONSensors that publish a flat JSON object with numeric fieldsMaps every numeric field to a metric, every string field to a label
TTN LoRaWANDevices registered on The Things NetworkAuto-extracts device EUI, RSSI/SNR, decoded payload fields. See the TTN guide for step-by-step setup

Walkthrough: a temperature sensor in 3 minutes

Section titled “Walkthrough: a temperature sensor in 3 minutes”

This example uses Eclipse Mosquitto as a public test broker and a simple mosquitto_pub call, but the shape is the same for any broker you own.

In the admin dashboard, go to Data In → MQTT Sources → Add Source and fill in:

FieldValue
Namedemo-temperature
Broker URLmqtts://test.mosquitto.org:8883
Topicicelake/demo/+/temperature
Parsing ModeGeneric JSON
Username / Passwordleave blank (public broker)

Click Test connection, then Save. Icelake subscribes immediately.

Publish one reading
mosquitto_pub \
-h test.mosquitto.org -p 8883 --capath /etc/ssl/certs \
-t 'icelake/demo/kitchen/temperature' \
-m '{
"temperature": 21.4,
"humidity": 48,
"device_id": "sensor-kitchen-01",
"location": "kitchen"
}'

Within a few seconds the new dataset appears in Data Sets in the admin dashboard. You can also ask MasterMind:

“Show me the last ten temperature readings from the kitchen sensor”

or query by SQL:

SELECT timestamp, temperature, humidity, device_id
FROM metrics
WHERE metric_name = 'temperature' AND location = 'kitchen'
ORDER BY timestamp DESC
LIMIT 10;

Icelake’s managed service also exposes its own MQTT broker, so devices can publish directly without a third-party broker:

ProtocolEndpointNotes
MQTTS (TLS)mqtts://api.icelake.eu:8883Recommended for production
MQTT v5mqtt://api.icelake.eu:8885Plain TCP, MQTT 5.0 features

Use your client ID as the MQTT username and your API key (ilk_…) as the password. Topics follow the pattern {tenant_id}/v1/devices/{device_id}/sensors/{sensor_id}/telemetry.

Standard MQTT wildcards apply:

  • + — single-level wildcard (matches one topic segment)
  • # — multi-level wildcard (matches everything beneath, must be last)

Examples:

sensors/# — all sensor topics
sensors/+/temperature — temperature from every sensor
home/+/+/state — any state topic two levels down
v3/my-app@ttn/devices/+/up — TTN uplinks for one application

Every MQTT source binds to exactly one API key. Data ingested from that source is scoped to the corresponding tenant — queries, dashboards, and retention policies all respect the boundary. To isolate environments or teams, create one API key (and one MQTT source) per tenant.