RisalDash RisalDash

Fake sensors · Every widget

Build an ESP32 dashboard for 66 sensors — without owning a single one

RisalDash ships fake versions of 66 real sensors. Point a widget at one and it generates believable, moving data — so you can build and demo a full ESP32 / ESP8266 web dashboard, every widget live, with no hardware at all. Then swap in the real driver later, with your variable names unchanged.

Fake sensorsNo hardware66 sensorsEvery widgetESP32 + ESP8266
RisalDash Showcase running on an ESP32 — every widget live: gauges, charts, a robot face, a Leaflet map, a 3D cube and a thermal heatmap, all from fake sensors
The Showcase example — every widget, driven entirely by fake sensors, served from the ESP over WebSocket.

The slowest part of an IoT project is usually the shopping. You want to design the dashboard, but the BME280 is still in the mail. RisalDash flips that around: fake every sensor, build the whole UI today, and drop in the real module when it arrives. Nothing in the sketch changes but the one line that reads the hardware.

Fake a sensor in one line

Each RisalFake* bundle generates realistic, correlated data — temperature that drifts, power that fluctuates, an IMU that tumbles:

#include <RisalDash.h>
#include <RisalFake.h>

RisalUI dash("Weather");
RisalFakeEnv env;   // fake BME280-style environment — no hardware

void setup() {
  dash.sensor("bme280", &temp, &hum, &pres).chart();  // preset -> the right widgets
  dash.beginAP("RisalDash-Demo", "12345678");
}
void loop() {
  env.update();
  temp = env.temperature(); hum = env.humidity(); pres = env.pressure();
  dash.update();
}

Twelve bundles cover the common shapes: environment, weather, power, air quality, IMU, GPS, BLE scan, battery/BMS, flow, weight, health and gas.

66 sensor presets

dash.sensor("id", …) expands a known sensor into the right readouts, units and ranges — so a real build is one line, and the fake demo is the same line:

Every widget, on one board

The Showcase example puts the entire widget set on six swipeable pages, all animating at once:

metric · gauge · chart · stat · progress · badge · led · label · toggle · slider · number · select · radio · button · text · textarea · password · time · date · color · table · log · terminal · summary · device card · AI · robot face · Leaflet map · 3D cube · thermal heatmap · image

Readouts (metric, gauge, chart, stat, progress, badge, LED), controls and HTML form inputs (toggle, slider, select, radio, color, date, time, password…), data cards (table, log, terminal, summary, AI) and the rich visuals — a robot face, a Leaflet map, a 3D orientation cube and a thermal heatmap — each a single dash.* call, live over WebSocket.

Six swipeable pages

Swipe left/right between them — this is real output on an ESP32, every value fake:

RisalDash Showcase Sensors page running on an ESP32
Sensors — A BME280 preset expands into temp, humidity & pressure with trend charts, plus wind and UV gauges.
RisalDash Showcase Readouts page running on an ESP32
Readouts — Metric, ring gauge, stat, progress bar, status badge, LED and label.
RisalDash Showcase Controls page running on an ESP32
Controls — Toggle, slider, stepper, select, radio group and an action button.
RisalDash Showcase Inputs page running on an ESP32
Inputs — Text, textarea, password, time, date and a color picker.
RisalDash Showcase Data page running on an ESP32
Data — Summary hero, device card, live-values table, event log and AI card.
RisalDash Showcase Visual page running on an ESP32
Visual — Robot face, Leaflet map, 3D orientation cube, thermal heatmap and terminal.

Runs on both — ESP32 and ESP8266

The full set builds on both chips (about 58% RAM / 42% flash on an ESP8266 Wemos D1 mini, and lighter on an ESP32). Bump RISAL_MAX_WIDGETS to 96 in the sketch and the whole kitchen sink fits — no trimming. Everything is served by the ESP itself; nothing hits a cloud.

The full Showcase sketch — ESP32 & ESP8266, no hardware.