Data Output

Measurement data produced by Thingsee AIR — MQTT streams and GraphQL queries for CO₂, TVOC, temperature, humidity, and air pressure

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.


Haltian IoT Measurements

The AIR sensor produces the following measurement types:

Measurement TypeDescription
carbonDioxideCO₂ concentration in ppm
tvocTotal Volatile Organic Compounds in ppb
ambientTemperatureTemperature in °C
humidityRelative humidity %
airPressureAir pressure in Pa
batteryPercentageRemaining 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:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
carbonDioxideInteger (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
  }
}

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:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
tvocInteger (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
  }
}

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:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
ambientTemperatureFloat (°C)Ambient temperature

GraphQL query example:

query {
  measurementLastAmbientTemperature(
    where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
  ) {
    deviceId
    measuredAt
    ambientTemperature
  }
}

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:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
humidityFloat (%)Relative humidity (0–100%)

GraphQL query example:

query {
  measurementLastHumidity(
    where: {deviceId: {_eq: "6e5f8ac6-a099-44e5-bb28-25fd3d1f47a6"}}
  ) {
    deviceId
    measuredAt
    humidity
  }
}

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:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
airPressureFloat (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
  }
}

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:

FieldTypeDescription
measured_atISO 8601 stringTimestamp of measurement
batteryPercentageInteger (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
  }
}

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.