Lightweight MQTT data logger & dashboard: history, CSV export, LWT status, retention. amd64 + arm64
1.4K
Lightweight, self-hosted MQTT data logger and dashboard. Run → Add Topic → Publish → See Data.
SenseHive subscribes to the MQTT topics you add, logs every message to SQLite 24/7 (with or without the dashboard open) and shows live values, history and device status in a clean web UI.
pip install sensehive-iotdocker run -d --name sense-hive \
-p 5000:5000 \
-v $(pwd)/sensehive-data:/app/data \
--restart unless-stopped \
devprincekumar/sense-hive:latest
Open http://localhost:5000 and log in with admin / admin123 (change it under
Settings → Account). The default broker is the public broker.hivemq.com; change it
under Settings.
| Tag | Description |
|---|---|
latest | Latest release, multi-arch (amd64 + arm64) |
1.1.0, 1.1 | SenseHive 1.1.0, multi-arch |
arm-pi-5 | Same multi-arch release image; kept for existing Raspberry Pi setups |
edge | Built from the main branch on every commit (tested, unreleased) |
One image runs on x86-64 servers and on ARM64 boards (Raspberry Pi 4/5, Jetson, Apple Silicon). Docker picks the right architecture automatically.
| Area | What you get |
|---|---|
| MQTT logging | Any broker, username/password auth, wildcard topics (sensors/#, home/+/temp), JSON or plain payloads |
| Dashboard | Live updates (SSE) across all open tabs, last value per topic, last 50 entries history, CSV export |
| Payload rendering | Nested JSON and arrays are pretty-printed and wrap correctly in Chrome and Firefox |
| Organization | Mandatory tag and Node ID per topic; filter by tag; sort by name, tag, status, last update, entries or size; group cards by node |
| Device health | Optional LWT/status topic per topic: online/offline per topic and per node, counts in the navbar, pushed live |
| Stats | Entry count and approximate size per topic, total entries and database size |
| Data management | Retention by age and/or max entries per topic (hourly, or "Run Cleanup Now"), SQLite WAL mode |
| Security | Login-protected UI and API, persistent random session secret, no data baked into the image |
| Operations | /api/health and /api/status endpoints, Docker HEALTHCHECK, timezone-aware timestamps |
/app/data volume.services:
sense-hive:
image: devprincekumar/sense-hive:latest
container_name: sense-hive
ports:
- "5000:5000"
volumes:
- ./sensehive-data:/app/data
environment:
DEFAULT_BROKER_HOST: broker.hivemq.com # first start only
DEFAULT_TIMEZONE: UTC
restart: unless-stopped
| Variable | Default | Purpose |
|---|---|---|
DEFAULT_BROKER_HOST / DEFAULT_BROKER_PORT | broker.hivemq.com / 1883 | Broker for a new database |
DEFAULT_BROKER_USERNAME / DEFAULT_BROKER_PASSWORD | empty | Broker credentials for a new database |
SENSEHIVE_FORCE_BROKER | false | true applies the DEFAULT_BROKER_* values on every start |
DEFAULT_TIMEZONE | UTC | Timezone for a new database |
RETENTION_DAYS / RETENTION_MAX_ENTRIES | 0 (off) | Initial retention policy |
RETENTION_INTERVAL | 3600 | Seconds between retention runs |
SQLITE_WAL | true | Set false on network filesystems (NFS/SMB) |
SECRET_KEY | random, persisted | Session secret |
DB_PATH | /app/data/iot_dashboard.db | Database location |
HAOS / Supervised users can install the add-on in one click: it opens in the sidebar, connects to the Mosquitto add-on automatically and stores data in Home Assistant backups. See https://github.com/855princekumar/sensehive-ha-addon
Every image is built by CI after the full regression suite passes (73 tests on Python 3.9 to 3.13, including an end-to-end run against a real Mosquitto broker), plus a container health check and a pip package smoke test.
Content type
Image
Digest
sha256:bf606c953…
Size
49.5 MB
Last updated
1 day ago
docker pull devprincekumar/sense-hive