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.
When to use which mode
Section titled “When to use which mode”| Mode | Best for | What Icelake does |
|---|---|---|
| Generic JSON | Sensors that publish a flat JSON object with numeric fields | Maps every numeric field to a metric, every string field to a label |
| TTN LoRaWAN | Devices registered on The Things Network | Auto-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.
1. Add the MQTT source
Section titled “1. Add the MQTT source”In the admin dashboard, go to Data In → MQTT Sources → Add Source and fill in:
| Field | Value |
|---|---|
| Name | demo-temperature |
| Broker URL | mqtts://test.mosquitto.org:8883 |
| Topic | icelake/demo/+/temperature |
| Parsing Mode | Generic JSON |
| Username / Password | leave blank (public broker) |
Click Test connection, then Save. Icelake subscribes immediately.
2. Publish a sample message
Section titled “2. Publish a sample message”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"}'3. See it land
Section titled “3. See it land”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_idFROM metricsWHERE metric_name = 'temperature' AND location = 'kitchen'ORDER BY timestamp DESCLIMIT 10;Broker endpoints
Section titled “Broker endpoints”Icelake’s managed service also exposes its own MQTT broker, so devices can publish directly without a third-party broker:
| Protocol | Endpoint | Notes |
|---|---|---|
| MQTTS (TLS) | mqtts://api.icelake.eu:8883 | Recommended for production |
| MQTT v5 | mqtt://api.icelake.eu:8885 | Plain 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.
Topic patterns & wildcards
Section titled “Topic patterns & wildcards”Standard MQTT wildcards apply:
+— single-level wildcard (matches one topic segment)#— multi-level wildcard (matches everything beneath, must be last)
Examples:
sensors/# — all sensor topicssensors/+/temperature — temperature from every sensorhome/+/+/state — any state topic two levels downv3/my-app@ttn/devices/+/up — TTN uplinks for one applicationTenant isolation & security
Section titled “Tenant isolation & security”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.
Related docs
Section titled “Related docs”- The Things Network — LoRaWAN-specific setup with auto-parsing
- Admin Dashboard — manage sources, datasets, and API keys
- Home Assistant — ship smart-home entities via the HACS integration