Not sure whether this is useful, but some other dashboard widget apps that allow changing variables (like Widgetkeeper and Custom Dash) use an API key that a user can generate in the web app. The user then needs to indicate which permissions are associated with the API key. One of those is changing variables.
Thanks, I will look into that. It has been a while since I dove into this. I remember finding solutions, but those were Homeyscript based and did not work in actual apps.
Claude skill: build Dashboard Studio dashboards fully automatically
Hi all, and thanks @Satoer for this great app!
I’ve tested the new Dashboards Feature of Claude Claude Dashboards together with MCP AI Bridge and also Homey CLI Skill. It is really amazing of what Claude can do with this.
But data update is pull through the MCP Bridge only which is far from beeing efficient.
So I’ve tried if Claude now with its good knowledge of dashboards would be able to create Dashboards for the Dashboard Studio app, which is by far the most versatile Homey Dashboard system I’ve seen so far. But the Editor could be challenging for beginners (like me).
I’ve written a skill for Claude Desktop (Anthropic’s AI assistant) that designs, tests and saves complete Dashboard Studio dashboards on its own. You describe what you want (“show my Homey’s CPU, RAM and temperature with day and week graphs”), and Claude does the rest. It talks to Homey through the MCP AI Bridge app and works in the Dashboard Studio editor through its built-in browser.
@Satoer: I hope this is ok for you…
What the skill does
- Fully automated workflow: checks preconditions (MCP AI Bridge running, Dashboard Studio installed, editor URL from your Homey’s IP + port 5050), collects devices/capabilities/insights, generates the dashboard JSON, loads it into your editor with live values, checks it, and saves it to Homey after you confirm the name.
- Reads the real topic names from the editor’s live data / Data Stream Explorer. Names are never guessed from device names, so no more empty fields because of a wrong slug (umlauts, trailing spaces…).
- Enables the needed capabilities in Dashboard Studio automatically (
enabled_capabilities). It merges with your existing entries and never overwrites them. - Browser budget: on LAN addresses, Claude’s built-in browser asks you to approve every single browser action. The skill does everything it can via the bridge and bundles the browser work into ~4 calls: open editor, read topics, one test run with automatic checks (missing values, clipped text, formula errors), save + verify. So you click “allow” a handful of times instead of dozens.
- Data that isn’t a device capability (system values, insight history for 24 h / 7 days, min/avg/max) is fed in by an auto-created HomeyScript that pushes it as
homey/event/...topics. - Lots of verified Dashboard Studio know-how baked in: file schema, widget fields, formulas and bindings, graph quirks (
maxPointsdefaults to 20!), overlaying two graphs with a second scale on the right, gauges, navigation buttons, saving and verifying. - Safe by default: nothing is saved, overwritten, or created on Homey without your OK (unless your prompt explicitly allows it, see below).
Requirements / compatibility
- Claude Desktop with the integrated browser (that’s where I built and tested it), plus the MCP AI Bridge app connected to Claude.
- Dashboard Studio v2.0.12 on a Homey Pro (2026).
- I don’t know whether it works in other AI tools like ChatGPT. It relies on Claude’s skill format, the MCP AI Bridge tools and Claude’s built-in browser. Feedback welcome!
Example 1: Homey system monitor, built in one go
This prompt builds the dashboard in the first screenshot without any questions:
Use the dashboard-studio-json skill and the Homey MCP AI Bridge. Build a Dashboard Studio dashboard "Homey System" that monitors my Homey's internals, fully automatically and without asking me questions. You are explicitly allowed to: run test scripts, create one HomeyScript and one Advanced Flow as data feed, and save the dashboard to Homey under a new name (never overwrite an existing dashboard). Use the integrated Claude browser and stick to the skill's browser budget.
Content:
1. Current values as gauges: CPU load %, RAM used %, SoC temperature °C, flash storage used %; below each a short detail line (load 1/5/15 min, RAM used/total MB and swap, temperature range 24 h and 7-day max, free GB).
2. A power tile: undervoltage now (red, blinking) / OK (green), undervoltage max 24 h, undervoltage events since boot, throttling since boot.
3. Combined graph "CPU load & temperature" for 24 h (CPU as filled line) and for 7 days (CPU as hourly bars), temperature as an overlaid line with its own scale on the right; legend with avg/max CPU and temperature range.
4. Graphs of Homey's memory usage for 24 h and 7 days with avg/max.
5. RAM per app (top 5 table) plus Homey core and total apps memory.
6. Header with uptime and time of last update. Dark theme, 1280×870, scale layout.
Data: feed everything via a HomeyScript that sends values with the Dashboard Studio "Send to Dashboard Studio" card (homey/event/... topics): current values every minute, insight histories (system loadavg, temperature, memory, undervoltage ratio; 24 h and 7 days) plus min/avg/max every 5 minutes. Trigger it with an Advanced Flow every minute. Test everything in the editor, fix the layout until there are no missing values or clipped texts, then save, verify, and show me a screenshot.
What gets created on your Homey automatically:
- HomeyScript “DS SysMon”: reads
Homey.systeminfo (load average, RAM, swap, SoC temperature, uptime, undervoltage/throttling flags), memory per app, storage, and the system insights (CPU load, temperature, memory, undervoltage) for 24 h and 7 days. It pushes everything to Dashboard Studio ashomey/event/sys_*(current values),h_*(histories) ands_*(min/avg/max) topics. Current values update every run; histories every 5 minutes. - Advanced Flow “DS SysMon – every minute”: an every-minute trigger that runs the script. Disable it and the dashboard simply stops updating.
- The dashboard JSON, saved in Dashboard Studio (as a new file; nothing is overwritten).
Example 2: Energy flow dashboard
My energy dashboard was built with the same skill. It shows three Kostal inverters (with per-string power and daily yield), house consumption, the Tibber Pulse grid meter, the go-e wallbox and today’s totals (PV, consumption, grid import, cost).
- Animated energy-flow arrows: they only animate while power actually flows, line width scales with the power, and the grid arrow reverses automatically between export and import (based on the meter’s sign convention, which the skill checks first).
- High-contrast flow styling: a dimmed base line with a bright yellow moving pulse (red for grid import), so even small power flows are easy to see.
- Glowing icons for active sources.
- All values are live device capabilities. The skill enabled them in Dashboard Studio automatically and read the exact topic names from the editor; no extra scripts were needed for this one.
The skill file can be found here: github.com/tnsturm/DashboardStudioClaudeSkill. Install it as a skill in Claude, connect the MCP AI Bridge, and try it. Happy to hear how it works for you!
@Torsten_Sturm great work, and thanks for building on the bridge! Two things that might help:
- Since 5.0 (now on the test channel) the bridge can serve skills itself. On the Home & knowledge tab you can add your own skill, up to 40 KB, and yours is about 30. Every assistant that connects can then read it with skills_list and skills_read, not just Claude Desktop. The browser part still needs Claude’s built-in browser, of course, but the Dashboard Studio know-how would be there for any client.
- On the pull side: Claude’s own dashboards get their data by calling tools, and the bridge cannot push into them, so for live values Dashboard Studio is the better home, as you found. If you keep a Claude dashboard anyway, switch its key to lean mode (Security tab, Tools on the key): that roughly halves the tokens each refresh costs.
@Satoer sorry for borrowing your topic for a moment, and thanks for an app that makes this possible.
Wow, this is really interesting. I actually tried generating dashboard JSONs with AI, but my results were nowhere near as clean as what you generated.
Sure, totally fine by me.
I would actually be happy to add some native endpoint access in Dashboard Studio so the AI does not have to “hack” its way through the interface like this. (Though I have not studied your documentation yet, how this actually works). If that makes things easier, let me know.
I still need to wrap my head around how all this MCP stuff works first, but I would not mind to help make this run smooth. But, on the other hand, I am also a bit hesitant to recommend regular users to give an AI full admin access to their Homey like that. I really do not want to be the guy responsible when an AI does something destructive to someone’s setup. The top models might handle it fine, but who knows what happens if people try this with a cheaper flash model that starts hallucinating. ![]()
No problem. I didn’t even knew you guys where working on this.
So if I understand this right
Claude created flows with Dashboard Studio cards to push the data to Dashboard Studio rather than enabling those capabilities directly inside the Dashboard Studio configuration? (I don’t even know if Claude has access to that configuration using the Homey CLI, and it probably doesn’t
.)
I asked Claude to explain it nicely: ![]()
Claudes Answer:
There are two ways, depending on where the value comes from:
| Type of value | Approach | How |
|---|---|---|
Device measurement (e.g. an inverter’s measure_power, the weather station’s temperature) |
Directly in Dashboard Studio’s configuration | The app stores enabled values in its enabled_capabilities setting (device ID → list of capabilities). Claude reads the setting via the MCP Bridge, adds the new entries without removing existing ones, and writes it back after your confirmation. From then on the app sends the values as topic <device name>/<capability>. |
| Anything that is not a device measurement (system data such as Homey’s CPU, RAM and chip temperature; insight histories over 24 h / 7 days; computed values such as min/avg/max) | HomeyScript + Flow card | These values can’t be enabled in Dashboard Studio. A HomeyScript reads them and sends them as homey/event/<name> using the “Send to Dashboard Studio” card. An Advanced Flow runs the script on a schedule. |
Rule of thumb: if a value can be enabled directly in the configuration, that’s the way to go. It’s simpler, needs no flow, and updates instantly on every change. The script-and-flow route is only for values that can’t be enabled directly.
How it worked out in my setup:
- System monitor: only HomeyScript + Flow.
enabled_capabilitieswasn’t touched, because none of these values are device measurements. - Energy dashboard: the capabilities (Kostal, Solar-Log, Tibber Pulse, go-e) were already enabled from an earlier run. They were read, not changed.
I think it is related to the new beta Dashboards feature of Claude, it does not only include the architecture to create internal Dashboard Artifacs but also a lot of training on how Dashboards look great and the underlying necessary techniques.
That would be great, I think the best path is to talk directly to @weide43 how this could be done best, because I’m not a MCP expert. Easy access for the AI to the complete documentation including the changelog will also help.
People like me who install the MCP AI Bridge should know what they are doing. And the MCP App brings in a lot of control of what an AI Agent is allowed to do: MCP Security Controls.
NEW Dashboard Studio TEST version v2.0.13
2026-10-12
- New: Edit Homey Variables - Update Homey Logic variables directly from dashboard widgets like edit boxes, switches, and sliders using an optional Personal API Key.
- New: Direct Flow Starting - Run Standard and Advanced Flows with a single tap from dashboard buttons or switches using an optional Personal API Key.
- New: Direct Mood Activation - Activate room ambiance and lighting moods directly from dashboard buttons using an optional Personal API Key.
- New: Calendar Flow Cards - Renamed to “Convert iCal JSON to Markdown” with new view formats (Tomorrow, Yesterday, Next/Previous week, Next weekend, Next/Previous month, and rolling day views).
- New: Flexible Calendar Range - Load & Filter iCal flow card adds “Previous, current and next month” timeframe so a single download can feed multiple markdown views.
- Improved: Calendar Memory & Performance - Optimized iCal streaming filter, parsing, and markdown generation to reduce memory and CPU usage on Homey.
- Improved: Calendar Documentation - Expanded in-app documentation with recommended multi-view patterns and flow advice.
- Improved: Binding Options - Payload formula edit box automatically expands for multi-line formulas.
- Improved: Reorganized Editor settings into a more intuitive, logical layout.
- Improved: Connecting Widgets & Data Documentation - Updated in-app documentation for connecting widgets and live data.
- Fixed: Disabled Widgets - Disabled widgets reliably block all touch, click, and keyboard interactions now.
- Fixed: Flow Card Trigger - Switching browser tabs back to Dashboard Studio no longer re-triggers the “Dashboard Loaded / Refreshed” flow card.
- Fixed: Button Audio - Long-pressing a Switch or Button widget configured with an additional topic now plays audio feedback.
New: Write Homey Variables, Direct Flow Starting, and Direct Mood Activation using an optional Personal API Key.
Homey doesn’t allow apps to change variables directly, but with a personal user API key, this is now possible inside Dashboard Studio.
Everyone thank SunBeech above for giving us the solution to make this possible ![]()
This API key also made a few other things directly possible as well. Once you generate and add an API key, you can now directly start “Flows” (and read their enabled or disabled state) and directly start “Moods”. Read how to generate and use the personal API key in the documentation.
Calendar Flow Cards
and @Bert_Onraedt, @SOJI, @Gert_Winther
IMPORTANT!: If you use the iCal cards, please read this because this update might break your existing setups.
I changed how the iCal cards work, though I tried to keep backwards compatibility for those of you parsing the JSON yourself with Homey Script.
How it worked before:
The [Load & filter iCal] card downloaded a specific date range and decided the starting point, and the [Convert iCal JSON to Markdown] card just converted that exact range to Markdown.
How it works now:
The [Load & filter iCal] card is now meant to grab a broader range (like “Previous, current and next month”), while the [Convert iCal JSON to Markdown] card is always anchored to “today”. Just make sure the date range you want to display in your Markdown is actually included in the range you loaded in the first card, otherwise your table might have missing days. (For instance I you just load the first month and if it’s the first day of the month and your card needs to display “yesterday”, that data won’t be available in the JSON.). I kept all the other filters also (both cards have a big list) to keep as much backwards compatibility as possible.
The big advantage:
If you want to show multiple calendars on your dashboard (like this week, next week, and the whole month), you now only have to download your calendar feed once with the [Load & filter iCal] card. From that single download, you can generate as many Markdown calendar views as you want.
I completely rewrote the code behind these cards to be much faster and use way less memory. Since I am not a heavy calendar user myself, please check if all your events are still showing up properly. Let me know if it works as expected, if you run into any issues, and how the memory usage looks.
Please read for a deeper and better explanation this documentation.
Small fixes / changes:
Switching tabs should not trigger the Dashboard load/refresh card anymore.
This is fixed ![]()
Hue and Saturation is now renamed to Color Tone and Color Intensity.
Hi Satoer,
I’m a new Homey user, but already really appreciate the amazing work involved in creating an app this complex.
I hope you or your colleagues can help me with the calendar functionality.
I have 4 iCal URLs, processing through Advanced Flow, parallel processing in pairs, Marked Down and sent to Dashboard Studio. I have checked the output text, and I can see appointments for all 4 calendars, Blocks1-4.
The App configuration in Homey is set to colour by calendar in ‘Calendar Source Blocking’, and lists the 4 unique IDs
However, in the dashboard, only appointments from two calendars show - Block 1 and Block 3.
I have experimented with various combination pairs, all working perfectly, but any more than 2 calendar sources, the dashboard only shows 2.
Is there a default setting I can change to increase the displayed number of calendars?
Not sure that this is relevant, but from the text file with 4 inputs, the first entries are from Block1 and Block3, entries for the other two blocks dispersed further through the file.
Hi Barry,
Thanks.
Could you first tell me what version of Dashboard Studio you are running? I just released a new version where large portions of the Calendar code were rewritten to be more performant and memory friendly. (and the method of parsing has been changed)
If you are running the stable V1 version or a version prior to V2.0.13 (you can see this at the top of the editor), please upgrade to version v2.0.13. I think most of the V2 bugs are resolved now, and it is actually running more stably than the V1 version.
Hi,
I’m was running version 1.11.7, installed from the Homey App page.
I’ve upgraded to the Test version now, all calendars showing. Thank you.
Looks Great! Almost ready for the kids to start using ![]()
That is great! Please feel free to share a photo of your dashboard in action. Other users are more than welcome to join in too ![]()
I am really hoping to put together a big gallery of real world use cases and examples. We have over 2300 users now, yet only a handful of people have shared a few pictures so far. I am specifically looking for actual photos of the dashboards running on your devices rather than screenshots.
Seeing what everyone is doing with their dashboards also inspires me and triggers ideas for what to add next. Some users are even creating specific SVG controls. For example, I saw someone who made a dashboard with non square shaped containers, and now I have built that right into the native container widget.
Send you some photo’s of my dashboard



