Data Output
Overview
Thingsee AIR produces measurement data that you can access through the Haltian IoT Platform — receive JSON measurements via MQTT Stream API or query via GraphQL Service API.
This page documents the measurement types, payload formats, and how to access the data.
If you operate your own gateways and decode raw mesh messages, see the CBOR Uplink Reference for the binary message specification.
Haltian IoT Measurements
The AIR sensor produces the following measurement types:
| Measurement Type | Description |
|---|---|
carbonDioxide | CO₂ concentration in ppm |
tvoc | Total Volatile Organic Compounds in ppb |
ambientTemperature | Temperature in °C |
humidity | Relative humidity % |
airPressure | Air pressure in Pa |
batteryPercentage | Remaining battery level |
carbonDioxide
Reports current CO₂ concentration. Higher values indicate poor ventilation.
MQTT Topic:
haltian-iot/events/{integration-id}/{api-key-id}/measurements/carbonDioxide/{device-uuid}
JSON Payload:
{
"measured_at": "2026-01-28T08:52:11Z",
"carbonDioxide": 538
}
Fields:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
carbonDioxide | Integer (ppm) | CO₂ concentration. < 800 good, 800–1000 moderate, > 1000 poor |
Reporting behavior:
- Reports every
reportInterval(default 3600s) - Reports immediately when CO₂ change exceeds hysteresis threshold (default 10 ppm)
GraphQL query example:
query {
measurementLastCarbonDioxide(
where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
) {
deviceId
measuredAt
carbonDioxide
}
}
6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6— your device UUID
tvoc
Reports Total Volatile Organic Compounds concentration.
MQTT Topic:
haltian-iot/events/{integration-id}/{api-key-id}/measurements/tvoc/{device-uuid}
JSON Payload:
{
"measured_at": "2026-01-28T08:52:11Z",
"tvoc": 72
}
Fields:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
tvoc | Integer (ppb) | TVOC level. < 220 good, 220–660 moderate, > 660 poor |
GraphQL query example:
query {
measurementLastTvoc(
where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
) {
deviceId
measuredAt
tvoc
}
}
6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6— your device UUID
ambientTemperature
Reports ambient temperature from the onboard environmental sensor.
MQTT Topic:
haltian-iot/events/{integration-id}/{api-key-id}/measurements/ambientTemperature/{device-uuid}
JSON Payload:
{
"measured_at": "2026-01-28T08:52:11Z",
"ambientTemperature": 22.4
}
Fields:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
ambientTemperature | Float (°C) | Ambient temperature |
GraphQL query example:
query {
measurementLastAmbientTemperature(
where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
) {
deviceId
measuredAt
ambientTemperature
}
}
6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6— your device UUID
humidity
Reports relative humidity.
MQTT Topic:
haltian-iot/events/{integration-id}/{api-key-id}/measurements/humidity/{device-uuid}
JSON Payload:
{
"measured_at": "2026-01-28T08:52:11Z",
"humidity": 45.8
}
Fields:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
humidity | Float (%) | Relative humidity (0–100%) |
GraphQL query example:
query {
measurementLastHumidity(
where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
) {
deviceId
measuredAt
humidity
}
}
6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6— your device UUID
airPressure
Reports atmospheric air pressure.
MQTT Topic:
haltian-iot/events/{integration-id}/{api-key-id}/measurements/airPressure/{device-uuid}
JSON Payload:
{
"measured_at": "2026-01-28T08:52:11Z",
"airPressure": 101325.0
}
Fields:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
airPressure | Float (Pa) | Atmospheric pressure in Pascals. Standard atmosphere ≈ 101325 Pa |
GraphQL query example:
query {
measurementLastAirPressure(
where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
) {
deviceId
measuredAt
airPressure
}
}
6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6— your device UUID
batteryPercentage
Reports remaining battery level. Updated every 6 hours.
MQTT Topic:
haltian-iot/events/{integration-id}/{api-key-id}/measurements/batteryPercentage/{device-uuid}
JSON Payload:
{
"measured_at": "2026-01-28T12:00:00Z",
"batteryPercentage": 78
}
Fields:
| Field | Type | Description |
|---|---|---|
measured_at | ISO 8601 string | Timestamp of measurement |
batteryPercentage | Integer (0–100) | Remaining battery percentage |
Reporting behavior:
- Reported every 6 hours
GraphQL query example:
query {
measurementLastBatteryPercentage(
where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
) {
deviceId
measuredAt
batteryPercentage
}
}
6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6— your device UUID
Accessing Data
MQTT Stream API
Subscribe to real-time measurement events. See Stream API documentation for connection setup.
Service API (GraphQL)
Query historical and latest measurements. See Service API documentation for endpoint and authentication details.