Sign inSign up

paredero/iot-simulator

By paredero

Updated about 2 months ago

IoT Device Simulator

Image
Internet of things
0

85

paredero/iot-simulator repository overview

IoT Device Simulator

Docker Hub License: MIT Python

IoT Device Simulator UI

A configurable IoT device simulator with a real-time web UI. Define virtual devices, generate realistic telemetry, and stream it to multiple targets — screen, MQTT, Kafka, TCP/JSON, file, HTTP, AMQP and CoAP — with optional payload encryption. The UI is available in English and Spanish.

Features

  • Up to 100 devices, each with its own interval and optional jitter.
  • Rich field generators: timestamp, fixed/random number, gaussian, random walk, sine wave, fixed/random/pattern string, boolean, weighted enum, UUID, geo-point (GPS jitter) and file-driven values.
  • Multiple outputs per device, combined freely: screen, MQTT (TLS/QoS/ retain/auth), Kafka, TCP/JSON, file, HTTP webhook, AMQP (RabbitMQ), CoAP.
  • Optional AES-256-GCM payload encryption per output.
  • Anomaly injection to test alerting pipelines.
  • Bundled example scenarios loadable in one click from the UI.
  • JSON / YAML import & export of the full configuration.
  • Real-time WebSocket log, dark/light themes.

Quick start

Docker
docker run --rm -p 8000:8000 paredero/iot-simulator:latest
# or, from a clone:
docker compose up
Local
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000

Then open http://localhost:8000.

Usage

  1. Click + New sensor, give it a name, add fields and outputs, and save.
  2. Or click ★ Examples to load a ready-made scenario (smart building, GPS fleet, industrial machine, energy meter, air quality).
  3. Watch payloads stream live in the bottom log; start/stop, clone, edit or delete devices from their cards.
  4. Use Export / Import to save and restore configurations (JSON or YAML).

The REST API and WebSocket are documented in-app via the API button, and at /docs (Swagger UI).

Configuration

Environment variables:

VariableDefaultDescription
LISTEN_HOST0.0.0.0Bind host for the TCP/JSON ingress listener.
LISTEN_PORT5050Port for the TCP/JSON listener (0 disables).
LOG_LEVELINFOPython logging level.

Ports: 8000 (Web UI, REST API, WebSocket) and 5050 (TCP/JSON ingress).

Documentation

GuideDescription
docs/USAGE.mdUser guide: fields, outputs, encryption, examples
docs/API.mdREST + WebSocket reference
docs/CONFIG_SCHEMA.mdSensor / field / output / encryption schema
examples/Ready-to-import scenarios

A Helm chart for Kubernetes is available in helm/iot-simulator/.

License

MIT © 2026 IoT Device Simulator contributors.

Tag summary

Content type

Image

Digest

sha256:1be6849dd

Size

67 MB

Last updated

about 2 months ago

docker pull paredero/iot-simulator