Sample IoT Sensor Dataset Generator

Fake time-series sensor readings for IoT demos

Generates synthetic IoT sensor time-series data — temperature, humidity, and pressure — with device IDs and evenly-spaced timestamps as CSV or JSON. Useful for testing IoT dashboards, time-series databases, and telemetry pipelines. It runs free in your browser on Gera Tools, with nothing uploaded.

Last updated Source: Gera Tools

Is this real sensor data?

No. Every reading is generated locally in your browser using a random walk around realistic baselines. Nothing is captured from a real device and no data leaves your browser.

This generator produces realistic time-series telemetry for fake IoT sensors so you can build and test dashboards, time-series databases, and ingestion pipelines without wiring up real hardware. Everything runs locally in your browser.

How it works

Each device emits a series of readings using a random walk so the values trend smoothly instead of jumping around:

next = clamp(previous + random(-step, +step), min, max)
  • Temperature starts near 21 °C, humidity near 45%, pressure near 1013 hPa.
  • Each new reading drifts a small amount from the previous one, then is clamped to a physically plausible range.
  • Timestamps are evenly spaced by your chosen interval, counting backward from the current time so the latest reading is now.

Output is CSV with a header or pretty-printed JSON, with each device’s series generated independently.

What each field looks like

FieldTypeExample valueNotes
device_idstringsensor_03Zero-padded, e.g. 01–10
timestampISO 86012025-04-01T14:23:00ZUTC, evenly spaced
temperature_cfloat21.4Clamped to a plausible range
humidity_pctfloat46.20–100
pressure_hpafloat1012.8~sea-level range

The CSV header line makes it paste directly into InfluxDB, TimescaleDB, or any spreadsheet tool. The JSON output follows a records format — an array of objects — that maps cleanly to Elasticsearch, MongoDB time-series, or a REST payload.

Illustrative worked example

Suppose you want to test an alert that fires when temperature exceeds 30 °C for three consecutive readings on any device. Generate two devices, 200 readings, 60-second interval. Most runs will stay well below 30 °C because the random walk is clamped, but the variance is enough to produce occasional spikes. Feed the CSV to your pipeline and verify that the alert fires exactly when the threshold is crossed — not due to gaps in timestamps or parsing errors.

For a simpler smoke-test of a dashboard: generate one device, 50 readings, any interval, and paste the JSON into your mock server’s seed endpoint. The smooth trend line confirms your chart is rendering in time order, not shuffled.

Choosing the right parameters

  • Dense ingest test: 10 devices × 1,000 readings × 10 s interval → spans about 2.8 hours, produces 10,000 rows. Good for batch-load performance.
  • Sparse alerting test: 3 devices × 50 readings × 600 s interval → spans 8 hours. Useful for time-bucketing queries on hourly rollups.
  • Multi-device concurrency: set 50 devices to verify your time-series DB handles a fan-out ingestion without index contention.

Tips

  • Seed repeatability. Each generation is independently random. If you need a fixed dataset for a reproducible test, generate once and save the file — the browser does not store it.
  • Realistic noise floor. The step size is tuned so individual readings vary by roughly 0.2–0.5 units per interval, matching typical low-cost sensor noise. If you need noisier data, generate and add jitter in your preprocessing step.
  • No dependencies. Everything runs in-browser with no upload, no API key, and no rate limit.