SenseCAP D1 Hubitat Dashboard — Setup Guide
Turn a SenseCAP Indicator D1 into a wall-mounted touchscreen dashboard for your Hubitat devices — live status, room-based navigation, and touch control, no cloud required (everything talks directly over your local network).
Flash it from your browser: SenseCAP D1 Hubitat Dashboard — Flash from your browser
This was built with heavy AI assistance (Claude) — from the ESP-IDF/LVGL firmware itself through to debugging, the Hubitat companion app, and this web flasher. Sharing that openly since it's very much part of how this came together, and might be useful context if you're curious about the process or run into anything that needs a closer look.
What you'll need
- A SenseCAP Indicator D1 (ESP32-S3 based)
- A USB cable that supports data, not just charging
- Google Chrome or Microsoft Edge on a desktop or laptop (Windows, macOS, Linux, or ChromeOS) — the web flasher uses the Web Serial API, which only these two browsers support. It won't work on a phone, tablet, Safari, or Firefox.
- A Hubitat Elevation hub on the same local network
- 10–15 minutes
Step 1 — Flash the firmware
- Open SenseCAP D1 Hubitat Dashboard — Flash from your browser in Chrome or Edge
- Connect the D1 to your computer via USB
- Close any other program that might be using the D1's serial port (Arduino IDE, PuTTY, another browser tab already connected to it, etc.)
- Click Connect device & install
- Your browser will list available serial/COM ports — select the one for the D1 and click Connect
- Click Install, then confirm. This writes the bootloader, partition table, and application (takes about 30–60 seconds)
- When it finishes, click Next/Close — the D1 will reboot on its own
Already have a working D1 with this firmware installed? Flashing a newer version this way does not touch your saved Wi-Fi credentials or Hubitat configuration — it'll just update and reconnect automatically, no re-setup needed. Everything below is only for a brand-new device.
If your computer doesn't already have a driver for the board's USB-to-serial chip (commonly a CP210x or CH34x/CH9102 family chip depending on the exact unit), install the matching driver first and reconnect the cable.
Step 2 — Connect the D1 to your Wi-Fi
A brand-new (or freshly erased) D1 has no saved Wi-Fi credentials, so it starts its own temporary setup network:
- On your phone or computer, open your Wi-Fi network list and connect to
SenseCAP-D1-Setup(it's open, no password — you may see a "no internet" warning, that's expected) - Open a browser and go to
http://192.168.4.1:8080/ - You'll see a SenseCAP D1 Setup page — enter your home Wi-Fi network name and password
- (The Weather fields on that page are optional — leave them blank; weather is handled from Hubitat instead)
- Click Save and reboot
The D1 will reboot and join your home Wi-Fi. Give it about 10 seconds.
Step 3 — Find the D1's IP address
Check your router's connected-devices / DHCP client list for a device named SenseCap-D1 (or similar) and note its IP address. You'll need this in the next step.
Tip: if your router supports it, set a DHCP reservation for this device so its IP address never changes. Without one, your router may hand it a different address later, which will silently break the dashboard until you update the IP in Hubitat again.
Step 4 — Install the Hubitat app
- On your Hubitat hub, go to Apps Code
- Click New App
- Paste in the full SenseCap D1 Config app source — get it from:
https://raw.githubusercontent.com/ienam-smarthome/sensecap-d1-flash/main/SenseCapD1ConfigApp.groovy
(open that link, select all, copy, paste into the Apps Code editor) - Click Save
- Enable OAuth — this step is required, not optional. Without it, the D1 can display live status but can't send taps back to Hubitat, so every button will silently do nothing. Near the top of the editor, click the gear/settings icon → OAuth → Enable OAuth in Apps → Update
- Go to Apps → Add User App
- Select SenseCap D1 Config
Step 5 — Configure the app
In the app's settings page:
- D1 local IP address — enter the IP address you found in Step 3
- D1 dashboard devices — select the devices you want shown on the D1's screen
- Timezone — for most common timezones this is auto-detected from your hub's own Time Zone setting (Hub Details page), so it should already show the correct value. If it's blank, the app will tell you what to look up and where.
- Optionally configure motion-based display control, screensaver brightness schedule, and the periodic full-sync interval (default 15 minutes — this is a safety-net resync in case a live update ever gets missed; lower catches drift faster, higher means fewer pushes to the device)
- Click Done/Save
This immediately pushes your device list to the D1 and subscribes to live updates. The D1's screen should populate with your rooms and devices within a few seconds.
Verifying it's working
- The D1 should show a Rooms screen with tiles for each room your devices belong to
- Tap a room to see its devices; tap a switch/light tile to toggle it — you should see it change on Hubitat within a second or two
- Toggle a device from Hubitat itself (not the D1) and confirm the D1's display updates on its own — this confirms live push is working end to end
Updating to a newer version
If you already have a working D1, updating is quick and non-destructive:
- Re-flash from the same web installer: SenseCAP D1 Hubitat Dashboard — Flash from your browser — this only rewrites the bootloader, partition table, and application, never the storage area holding your Wi-Fi credentials and Hubitat config, so the D1 reconnects on its own with no re-setup
- In Hubitat, open Apps Code, find SenseCap D1 Config, replace its entire source with the latest version from https://raw.githubusercontent.com/ienam-smarthome/sensecap-d1-flash/main/SenseCapD1ConfigApp.groovy, and Save
- Open the app's settings and check the Timezone field — for most common timezones it's auto-detected from your hub's own Time Zone setting (Hub Details page). Hit Done either way, to make sure any new settings introduced in that release get pushed to the device
Check the thread for release notes on what changed before updating, in case a specific version needs an extra step (like setting a newly-added field) beyond the three above.
Troubleshooting
D1 screen stuck on "Wi-Fi: starting" or "Config app: waiting"
Double-check the IP address entered in the Hubitat app matches the D1's actual current IP (see Step 3) — this is the most common cause, especially if a DHCP reservation wasn't set.
Hubitat's logs show repeated "SenseCap D1 live push failed"
This means Hubitat can't currently reach the D1 at the configured IP — check the device is powered on, connected to Wi-Fi, and that the IP in the app settings is still correct. The app automatically backs off retries and recovers on its own once the device is reachable again; no action needed beyond fixing the IP if it's changed.
Device states on the dashboard don't match Hubitat
Press Send settings to D1 now in the Hubitat app to force a full resync. If this keeps happening, check that the device in question is actually selected under "D1 dashboard devices."
Taps on the D1 do nothing — lights/switches don't respond, even though the display shows correct live status
This means OAuth isn't enabled for the app (see Step 4) — the D1 can receive updates but has no way to send commands back. Go to Apps Code → SenseCap D1 Config → gear icon → OAuth → Enable OAuth in Apps → Update, then reopen the app's settings and click Done once. Hubitat's own Logs page will show no access token available warnings when this is the cause.
Can't reach 192.168.4.1:8080 during Wi-Fi setup
Make sure you're actually connected to the SenseCAP-D1-Setup network (not still on your home Wi-Fi) before trying that address.
Web installer says my browser isn't supported
You need Chrome or Edge on a desktop/laptop — Safari, Firefox, and mobile browsers don't support the Web Serial API this tool relies on.
Clock is wrong / an hour off
Check the Timezone field in the app settings — it auto-fills from your hub's Time Zone setting for most common zones, but if your specific zone wasn't recognized, the field stays blank and the D1 defaults to UK time until you set one manually (the app will tell you what to look up and point you to a reference).
Credits
This project drew inspiration from @Ultrasmart.pl's excellent Hub Monitor showcase — a dedicated, fully local SenseCAP D1 dashboard for Hubitat. Well worth a read if you haven't seen it. Thanks for sharing the idea with the community!
Questions or issues — reply in this thread.











