DomoDreams · NSPanel Pro

A control panel you'd actually want on your wall.

Turn a Sonoff NSPanel Pro into a fully-custom Home Assistant panel — soft, crafted surfaces, 32 curated styles, and every button laid out visually from the HA sidebar. All local, all over MQTT, no cloud.

Home Assistant MQTT · local push 480×480 · Android 8.1 Multi-panel
Grid
Control grid on the panel
Clock
Themeable clock face

What it is

🎛️

Premium by default

A crafted UI, not a dashboard

Soft, pre-rendered surfaces tuned for the panel's low-power GPU. It reads as a designed object, not a browser tab pinned to the wall.

🧩

One document

Look and behavior together

A single config describes what each tile looks like and what it does. The panel renders it; the integration executes it.

🛰️

Local push

Everything over MQTT

Buttons publish events, Home Assistant mirrors real entity state back, and the panel lights up to match. Optimistic on tap, reconciled from state.

🖥️

No JSON by hand

Edit it visually

A WYSIWYG editor lives right in the HA sidebar. Build layouts by clicking — pick entities, arrange tiles, choose page types, set the theme.

🏠

By design

Multi-panel

One Home Assistant drives N panels, each scoped to its own device, entities and topic namespace. Nothing assumes a single panel.

🔌

Resilient

Boots offline

The panel renders from retained topics and a local cache. Broker or HA down? It still shows your last-known UI. Your walls don't phone home.

Typed pages, swipe between them

grid · clock · weather · alarm · camera · music

Mix and match per panel. Every page type is a first-class citizen with its own layout and behavior.

Grid
Button grid
Covers & dimmers
Cover and dimmer controls
Alarm keypad
Alarmo keypad

Thirty-two styles, one panel

From soft matte to wood & brass

Every curated style rendered on the same two grids — light and dark, minimal and maximal. Pick one from a dropdown and change the whole feel of the wall.

Open the gallery

How it works

The integration owns the Home Assistant side end-to-end. The app never touches HA discovery topics — it just renders and reports.

event
Panel → HA. A button was pressed; HA runs the bound service call.
config
HA → Panel. Layout + bindings, retained, so the panel boots from the broker.
state
HA → Panel. Entity state mirror, retained. Tiles reconcile to reality.
cmd
HA → Panel. Wake, change page, reload — device-targeted.
# domodreams/panel/{device}/…
NSPanel Pro ──MQTT──▶  event      (button pressed)
            ◀─MQTT───  config     (layout + bindings, retained)
            ◀─MQTT───  state/*    (entity state mirror, retained)
            ◀─MQTT───  cmd/*      (wake, page, reload, …)

# Reconnect: exponential backoff with jitter (1s → 30s).
# Boots from retained topics + local cache when HA is down.