Hi everyone,
This is my first Home Assistant dashboard and I’m still very new to Home Assistant, so it’s been a bit of a learning experience. I’ve built it with a lot of assistance from AI along the way. It originally started as a simple display for my commute on a wall-mounted Android tablet, but has gradually grown into a central dashboard for the house.
The frontend is custom HTML/CSS/JavaScript rather than Lovelace, with Home Assistant handling most of the smart home integrations.
Current features include:
-
Live local bus times, updating every 10 seconds
-
Live train departures, with logic that removes trains I couldn’t realistically catch based on the next available buses
-
Home and work weather with 7-day forecasts and dynamic weather/time-of-day backgrounds
-
Four CCTV cameras streamed through go2rtc/WebRTC, including fullscreen HD views and automatic stream recovery
-
Automatic tablet screen scheduling, with the display turning on and off at set times, as well as automatically following the alarm state so the screen turns off when the alarm is set and back on when it’s unset
-
Heating control, including the main thermostat, TRVs, boosts and an “all heating off” function
-
Lighting control with brightness, colour presets and a custom colour picker
-
System/network monitoring using Home Assistant sensors
-
Bin collection reminders
-
Expandable bus and train departure boards
-
Responsive layout that scales across the wall tablet, PCs and other devices
Home Assistant communicates with the dashboard using WebSockets, so entity changes appear without refreshing the page. The different parts of the dashboard also update independently, which means things like transport data can refresh without interrupting the CCTV streams.
AI has been a big part of building it. I’ve used it to help write and troubleshoot the JavaScript, HTML/CSS, Home Assistant integration, API logic and backend code. It’s been very much an iterative process of coming up with an idea, testing it on the actual tablet, finding what doesn’t work and then refining it.
What started as “I want to see what bus I need to catch for my train” has got slightly out of hand, but I’m pretty happy with where it’s ended up!









