Skip to content

IoT — Climate sensors NOAA walkthrough

Persona path: carol (analyst) · Catalogs: postgres_postgis_iot · Duration: ~20 min · Difficulty: star

This demo uses a NOAA-style synthetic sensor dataset where temperature naturally decreases with latitude. Carol asks ADEN to plot the gradient by latitude band; the BI layer renders a time series; Carol exports a CSV for a partner.

What this proves

  • A time-series question is solved by ADEN in one prompt over a federated PostGIS source.
  • The BI layer renders a multi-line chart by band without manual configuration.
  • The geographic banding logic is generated, not hard-coded.

Pre-requisites

  • Demo URL: https://demo.akko-ai.com
  • Catalog postgres_postgis_iot already federated.
  • 1 persona provisioned: carol.

Step 1 — Carol signs in and inspects the IoT catalog

Sign in as carol. Navigate to Governance → Catalog explorer → postgres_postgis_iot.

Expected tables:

iot.stations          (1 240 rows, geometry POINT)
iot.measurements      (45 600 000 rows)
iot.calibration_runs  (180 rows)

Click measurements and confirm columns:

  • measurement_id — bigint
  • station_id — text
  • measured_ts — timestamp
  • metrictemperature_c, humidity_pct, wind_kmh
  • value — double

Screenshot: tests/e2e/playwright/artefacts/demos/iot-sensors/01-catalog-tables.png

Step 2 — Carol opens ADEN

Click AI → ADEN. Set:

  • Catalog: postgres_postgis_iot
  • Model: qwen2.5-coder:7b

Screenshot: tests/e2e/playwright/artefacts/demos/iot-sensors/02-aden-scope.png

Step 3 — Carol asks the time-series question

Prompt:

plot the monthly average temperature for 2024 grouped by latitude band of 10 degrees,
include the number of stations per band

Click Ask. Expected SQL:

WITH station_band AS (
    SELECT
        s.station_id,
        floor(ST_Y(s.geom) / 10) * 10 AS lat_band
    FROM postgres_postgis_iot.iot.stations s
), tagged AS (
    SELECT
        m.measured_ts,
        m.value,
        sb.lat_band
    FROM postgres_postgis_iot.iot.measurements m
    JOIN station_band sb USING (station_id)
    WHERE m.metric = 'temperature_c'
      AND m.measured_ts BETWEEN TIMESTAMP '2024-01-01' AND TIMESTAMP '2024-12-31'
)
SELECT
    date_trunc('month', measured_ts) AS month,
    lat_band,
    avg(value)                       AS avg_temp_c,
    count(DISTINCT station_id) OVER (PARTITION BY lat_band) AS n_stations
FROM tagged
GROUP BY 1, 2
ORDER BY 2, 1;

Expected result snapshot (excerpt):

| month       | lat_band | avg_temp_c | n_stations |
| 2024-07-01  | -30      | 12.4       | 78         |
| 2024-07-01  |   0      | 26.8       | 142        |
| 2024-07-01  |  30      | 24.1       | 312        |
| 2024-07-01  |  60      |  8.7       | 96         |

Screenshot: tests/e2e/playwright/artefacts/demos/iot-sensors/03-aden-result.png

Step 4 — Carol promotes the dashboard

Click Promote to dashboard. ADEN proposes a 3-tile dashboard:

  1. Line — Average temperature per month, one line per latitude band
  2. Bar — Number of stations per band
  3. Table — Raw monthly averages
+-------------------- AKKO IoT — Temperature by latitude 2024 ---------+
| 12 latitude bands | 1 240 stations                                   |
+----------------------------------------------------------------------+
| [ Multi-line: temp / month / band ]   [ Bar: stations / band ]       |
+----------------------------------------------------------------------+

The line chart shows the expected decreasing temperature pattern as latitude moves away from the equator.

Screenshot: tests/e2e/playwright/artefacts/demos/iot-sensors/04-line-dashboard.png

Step 5 — Carol filters by season

In the dashboard, add a filter month between Jul and Sep.

Expected: the line chart redraws to show only the summer; the band 0 peaks at ~29 deg C, the band 60 peaks at ~10 deg C.

Screenshot: tests/e2e/playwright/artefacts/demos/iot-sensors/05-summer-filter.png

Step 6 — Carol exports the CSV for a partner

Click Export → CSV.

Expected: a 144-row file (12 months times 12 bands). Columns: month, lat_band, avg_temp_c, n_stations.

Screenshot: tests/e2e/playwright/artefacts/demos/iot-sensors/06-csv-export.png

Cleanup

  • Sign out.

What this proves

  • Time-series questions converge in one ADEN prompt against a federated source.
  • Latitude banding is generated on the fly through PostGIS ST_Y, not hard-coded.
  • The BI layer produces a multi-line chart without manual config.

Files in the repo

File Role
scripts/seed-iot.sh Seeds 1 240 stations and 45M measurements
dbt/models/marts/iot/temp_by_lat_band.sql Curated materialized view