RisalDash RisalDash

Live demo

A few lines of C++ → a live dashboard

Describe widgets in your sketch — RisalDash generates the HTML, CSS, JS and the WebSocket protocol, served by the ESP itself, offline-first. Here's the code and the result, live.

live render — the same UI the ESP serves

Project gallery

Real projects, a few lines each

Ten dashboards you can build on ESP32 / ESP8266 — greenhouse, energy monitor, gas alarm, weather station, solar and more. Filter by category, open a live demo, grab the source, or read the widget reference.

🛰️
Ready to flash

GPS Tracker

DIY

Live map, speed and satellites on your own web dashboard — a home geofence with alarm, day-by-day track logs and one-tap GPX export. NEO-6M on ESP32 or ESP8266, no cloud, OTA updates.

3hTime
$9Cost
1Sensors
13Widgets
Live map + trailGeofence circleSpeed gaugeSatellites / HDOPAltitude chartDistance to homeGPX / CSV exportVibration alarmOTA update
Wiring 5 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP8266 / ESP32
NEO-6M TX D5 / GPIO16
NEO-6M RX D6 / GPIO17
NEO-6M VCC 3V3
NEO-6M GND GND
Vibration motor IN D1 / GPIO25
🌱
Ready to flash

Smart Greenhouse

Agriculture

Climate, soil moisture and light on one screen — fan, pump and grow-lamp control with a target setpoint.

2hTime
$18Cost
3Sensors
9Widgets
Air temp gaugeHumidity gaugeTrend chartSoil moistureLight (lux)Fan / Pump / LampTarget setpoint
View sketch
dash.gauge("Air temp", &airT, 0, 50, "C");
dash.gauge("Humidity", &airH, 0, 100, "%");
dash.stat ("Light", &lux, "lux");
dash.toggle("Fan", &fan);
dash.toggle("Pump", &pump);
Wiring 11 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
BME280 SDA GPIO21
BME280 SCL GPIO22
BME280 VCC 3V3
BME280 GND GND
Capacitive soil AOUT GPIO34
Capacitive soil VCC 3V3
Capacitive soil GND GND
BH1750 (lux) SDA GPIO21
BH1750 (lux) SCL GPIO22
Pump relay IN GPIO26
Fan relay IN GPIO27
🤖

Mobile Robot

Robotics

Drive it from the browser: live GPS map trail, a 3D IMU heading cube, an animated robot face and on-screen buttons.

4hTime
$35Cost
3Sensors
6Widgets
Speed gaugeGPS map + trailIMU heading cubeRobot faceDrive buttonsBattery %
View sketch
dash.gauge("Speed", &kmh, 0, 30, "km/h");
dash.map ("Position", &lat, &lon);
dash.cube("Heading", &pitch, &roll, &yaw);
dash.face("Mood", &mood);
dash.button("Forward", "GO", []{ drive(1); });
Ready to flash

Energy Monitor

Energy

Mains voltage, current and power live, with a load chart, daily kWh, a cost estimate and a main-relay switch.

2hTime
$15Cost
1Sensors
8Widgets
Power gaugeVoltage gaugeCurrent gaugeLoad chartToday kWhCost estimateMains relay
View sketch
dash.gauge("Power", &watts, 0, 3000, "W");
dash.gauge("Voltage", &volts, 180, 260, "V");
dash.chart("Load", &watts, "W");
dash.stat ("Today", &kwh, "kWh");
dash.toggle("Mains", &mains);
Wiring 6 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
PZEM-004T TX GPIO16
PZEM-004T RX GPIO17
PZEM-004T 5V 5V
PZEM-004T GND GND
CT clamp around live wire into PZEM
Main relay IN GPIO26
🔥
Ready to flash

Gas Safety

Industrial

A smoke / LPG and CO alarm: gauge + trend per gas with latching LED alerts — the sensor preset wires it in one line.

1hTime
$8Cost
2Sensors
4Widgets
Smoke gauge + chartCO gauge + chartSmoke alarm LEDCO alarm LED
View sketch
dash.sensor("mq2", &smoke).chart();
dash.led ("Smoke alarm", &smokeAlarm);
dash.sensor("mq7", &co).chart();
dash.led ("CO alarm", &coAlarm);
Wiring 9 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
MQ-2 (smoke/LPG) AOUT GPIO34
MQ-2 (smoke/LPG) VCC 5V
MQ-2 (smoke/LPG) GND GND
MQ-7 (CO) AOUT GPIO35
MQ-7 (CO) VCC 5V
MQ-7 (CO) GND GND
Buzzer + GPIO25
Fan relay IN GPIO26
Valve relay IN GPIO27
🌤️
Ready to flash

Weather Station

Education

Wind, gust, direction and rain total plus a UV index and BME280 temp / humidity / pressure with trend charts.

3hTime
$25Cost
4Sensors
7Widgets
Wind gaugeGust + directionRain totalUV index gaugeTemp / humidity / pressureTrend charts
View sketch
dash.sensor("weather", &wind, &gust, &dir, &rain);
dash.gauge ("UV index", &uv, 0, 12);
dash.sensor("bme280", &temp, &hum, &pres).chart();
Wiring 8 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
Anemometer pulse (interrupt) GPIO27
Anemometer GND GND
Wind vane AOUT GPIO35
Rain bucket pulse (interrupt) GPIO14
LTR390 (UV) SDA GPIO21
LTR390 (UV) SCL GPIO22
BME280 SDA GPIO21
BME280 SCL GPIO22
☀️
Ready to flash

Solar Power Monitor

Energy

Battery SoC, pack voltage and charge current from the BMS preset, alongside PV voltage and load power — built from BatteryBMS + PowerMeter.

3hTime
$28Cost
3Sensors
7Widgets
Battery SoC gaugePack voltageCharge current chartPV voltageLoad powerCharging LED
View sketch
dash.sensor("bms", &soc, &packV, &amps, &temp).chart();
dash.gauge("PV voltage", &pv, 0, 60, "V");
dash.chart("Charge", &charge, "W");
dash.led ("Charging", &charging);
Wiring 6 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
INA226 (solar) SDA GPIO21
INA226 (solar) SCL GPIO22
INA226 (solar) VCC 3V3
BMS UART TX GPIO16
BMS UART RX GPIO17
Load relay IN GPIO26
🐠
Ready to flash

Aquarium Controller

Laboratory

Planned: water temperature, pH and TDS/EC with heater, pump and a light schedule.

4hTime
$30Cost
4Sensors
8Widgets
Water temp (DS18B20)pH gaugeTDS / ECWater levelHeater togglePump toggleLight schedule
View sketch
dash.gauge("Water temp", &t, 0, 40, "C");
dash.gauge("pH", &ph, 0, 14);
dash.metric("TDS", &tds, "ppm");
dash.toggle("Heater", &heater);
dash.toggle("Pump", &pump);
Wiring 11 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
DS18B20 DATA (+4.7k pull-up to 3V3) GPIO4
DS18B20 VCC 3V3
DS18B20 GND GND
pH board Po GPIO34
TDS AOUT GPIO35
Float switch signal GPIO14
Pump relay IN GPIO25
Filter relay IN GPIO26
Heater relay IN GPIO32
Light relay IN GPIO33
Feeder servo signal GPIO13
🏠
Ready to flash

Smart Home

Home

Planned: mmWave presence, room climate and per-room lighting with dimming and scenes.

6hTime
$60Cost
5Sensors
12Widgets
Presence (LD2410)Room temp / humidityLights per roomDimmer sliderClimateScenes
View sketch
dash.badge ("Presence", &occupied);
dash.gauge ("Room temp", &t, 0, 40, "C");
dash.toggle("Living light", &l1);
dash.slider("Dim", &dim, 0, 255);
Wiring 10 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
LD2410 (mmWave) TX GPIO16
LD2410 (mmWave) RX GPIO17
AHT20 SDA GPIO21
AHT20 SCL GPIO22
INA219 SDA GPIO21
INA219 SCL GPIO22
Living relay IN GPIO25
Kitchen relay IN GPIO26
Curtain motor driver IN GPIO27
Door reed (INPUT_PULLUP) signal GPIO14
🛠️
Ready to flash

CNC Machine

Industrial

Planned: spindle RPM, feed rate and axis position with a load chart and an emergency-stop button.

8hTime
$90Cost
4Sensors
10Widgets
Spindle RPM gaugeFeed rateAxis position X/Y/ZLoad chartE-stop buttonTemp
View sketch
dash.gauge("Spindle", &rpm, 0, 24000, "RPM");
dash.metric("Feed", &feed, "mm/min");
dash.chart("Load", &load, "%");
dash.button("E-STOP", "STOP", []{ estop(); });
Wiring 6 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
Tacho (opto/hall) OUT (interrupt) GPIO27
ACS712 OUT GPIO34
MAX6675 thermocouple SCK GPIO18
MAX6675 thermocouple CS GPIO5
MAX6675 thermocouple SO GPIO19
E-stop (INPUT_PULLUP) signal GPIO14
🖨️
Ready to flash

3D Printer

DIY

Planned: hotend and bed temperature, print progress, a fan slider and pause / resume controls.

6hTime
$70Cost
4Sensors
9Widgets
Hotend temp gaugeBed temp gaugePrint progressFan sliderPause / resumeJog controls
View sketch
dash.gauge("Hotend", &hotend, 0, 260, "C");
dash.gauge("Bed", &bed, 0, 120, "C");
dash.progress("Progress", &pct, "%");
dash.slider("Fan", &fan, 0, 255);
Wiring 5 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
Hotend thermistor (100k NTC divider) signal GPIO34
Bed thermistor signal GPIO35
Part-cooling fan (MOSFET gate) gate GPIO25
E-stop (INPUT_PULLUP) signal GPIO14
Printer serial (optional) TX GPIO16
🌡️
Ready to flash

Smart Thermostat

Home

A WiFi thermostat on your phone — live room temperature and humidity, a setpoint, and hysteresis that switches the heater relay. DS18B20 / DHT ready.

1hTime
$6Cost
1Sensors
6Widgets
Room temp gaugeHumidity gaugeTrend chartSetpointHeating LEDHold toggle
View sketch
dash.gauge("Room temp", &roomT, 0, 40, "C");
dash.number("Setpoint", &setpoint, 5, 35, 1);
dash.led  ("Heating", &heating);
dash.toggle("Hold", &hold);
Wiring 7 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
DS18B20 DATA GPIO4
DS18B20 VCC 3V3
DS18B20 GND GND
4.7k pull-up DATA–VCC
Heater relay IN GPIO26
Heater relay VCC 5V
Heater relay GND GND
💡
Ready to flash

LED Strip Controller

Home

A WLED-style web controller for WS2812 / SK6812 strips — colour picker, brightness, effects, and a live current-draw gauge so you never overload the PSU.

1hTime
$5Cost
0Sensors
7Widgets
Power toggleColour pickerBrightness sliderEffect selectLED countCurrent-draw gauge
View sketch
dash.color ("Color", &color);
dash.slider("Brightness", &brightness, 0, 255);
dash.select("Effect", "Solid,Rainbow,Breathe,Chase", &effect);
Wiring 5 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
WS2812B DIN GPIO5
470Ω inline DIN
WS2812B 5V 5V
WS2812B GND GND
1000µF cap 5V–GND
🚰
Ready to flash

Water Tank Monitor

Home

Ultrasonic water-tank level on the web — a percentage gauge, litres, a trend, and an auto-pump that refills below 25 %. HC-SR04 / JSN-SR04T ready.

1hTime
$7Cost
1Sensors
6Widgets
Level gaugeVolumeTrend chartAir-gap distanceLow-level LEDPump toggle
View sketch
dash.gauge ("Level", &levelPct, 0, 100, "%");
dash.stat  ("Volume", &liters, "L");
dash.toggle("Pump", &pump);
Wiring 5 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
HC-SR04 TRIG GPIO5
HC-SR04 ECHO GPIO18
HC-SR04 VCC 5V
HC-SR04 GND GND
Pump relay IN GPIO26
🚶
Ready to flash

Motion Security

Home

A PIR / mmWave alarm dashboard — a motion LED, a daily event count, an arm switch, siren state, and a rolling event log. HC-SR501 / LD2410 ready.

1hTime
$4Cost
1Sensors
6Widgets
Motion LEDEvents counterArmed toggleSiren LEDSince-last statEvent log
View sketch
dash.led  ("Motion now", &motion);
dash.badge("Events today", &events);
dash.toggle("Armed", &armed);
Wiring 5 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
PIR HC-SR501 OUT GPIO14
PIR HC-SR501 VCC 5V
PIR HC-SR501 GND GND
Buzzer + GPIO27
Buzzer GND
🚗
Ready to flash

Garage Door Opener

Home

Open your garage from the web — one relay-pulse button, a live door position, a reed-switch open/closed state, and an activity log. ESP8266 or ESP32.

45mTime
$5Cost
1Sensors
5Widgets
Open LEDPosition statMoving LEDToggle buttonActivity log
View sketch
dash.led ("Open", &open);
dash.button("Toggle door", "Open / Close", trigger);
dash.stat("Position", &position, "%");
Wiring 5 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
Relay IN GPIO26
Relay VCC 5V
Relay GND GND
Reed switch A GPIO14
Reed switch B GND
📍
Ready to flash

GPS Tracker

Robotics

A live-map vehicle tracker — a moving marker plus speed and heading stats, driven by a NEO-6M feed (TinyGPS++). Uses the built-in map widget.

1.5hTime
$9Cost
1Sensors
5Widgets
Live mapSpeed statHeading statLatitudeSpeed trend
View sketch
dash.map ("Location", &lat, &lon);
dash.stat("Speed", &speed, "km/h");
dash.stat("Heading", &heading, "deg");
Wiring 4 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
NEO-6M TX GPIO16
NEO-6M RX GPIO17
NEO-6M VCC 3V3
NEO-6M GND GND
🔐
Ready to flash

RFID Access Control

Home

An RFID smart-lock dashboard — whitelist scans with grant/deny counters, the last card, an auto-relock, and an access log. MFRC522 / PN532 ready.

1.5hTime
$8Cost
1Sensors
6Widgets
Locked LEDGrants counterDenied counterLast cardUnlock buttonAccess log
View sketch
dash.led  ("Locked", &locked);
dash.badge("Grants today", &grants);
dash.button("Unlock", "Momentary unlock", unlock);
Wiring 7 wires

Reference wiring — typical connections, verify against your exact board / module before powering on. Not a tested build.

Part Its pin ESP32
MFRC522 SDA GPIO5
MFRC522 SCK GPIO18
MFRC522 MOSI GPIO23
MFRC522 MISO GPIO19
MFRC522 RST GPIO22
MFRC522 3V3 3V3
Lock relay IN GPIO26

How it compares

RisalDash next to ESPUI & Blynk

Only verifiable, neutral facts. These are different tools for different jobs — pick by what you need, not by a scoreboard.

Feature RisalDashESPUIBlynk
On-device self-hosted UI YesYesLocal server or cloud
Works offline in AP mode YesYes (LAN)Cloud-first
Account required NoNoYes
License MITMITLibrary MIT · platform proprietary
Boards ESP32 · ESP8266ESP32 · ESP8266ESP32 · ESP8266 · many MCUs
Client Responsive webResponsive webNative mobile apps + web
OTA firmware update Yes (local, opt-in)NoYes (cloud)
Hosted cloud No (local only)NoYes
Transport WebSocketWebSocketBlynk protocol

What RisalDash adds

Capabilities that ship in RisalDash itself:

Built-in i18n + RTL (EN · RU · UZ · AR)MCP / AI-tool integrationZero-Waste linker — unused widgets compile to 0 bytesAnimated robot faceOffline captive-portal Wi-Fi provisioning

Blynk is a full cloud IoT platform with hosted servers, native mobile apps and OTA; RisalDash is a local, no-cloud on-device UI. ESPUI is the closest peer — an on-device web UI. Different tools for different jobs.