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_iotalready 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— bigintstation_id— textmeasured_ts— timestampmetric—temperature_c,humidity_pct,wind_kmhvalue— 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:
- Line — Average temperature per month, one line per latitude band
- Bar — Number of stations per band
- 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 |