Integrates Home Assistant with your Hubble dashboard via WebSocket, providing real-time entity state pills and persistent notification display.
- A running Home Assistant instance accessible on your network
- A Home Assistant Long-Lived Access Token
- Open Home Assistant in your browser
- Click your profile icon (bottom-left)
- Scroll to Long-Lived Access Tokens
- Click Create Token, give it a name (e.g., "Hubble Dashboard")
- Copy the token — you won't see it again
- Go to the Hubble Admin Panel (
http://localhost:3000/admin) - Navigate to Modules
- Install the module (or use
hubble add modulewith the local path) - Click on the module to expand its configuration
- Set:
- Home Assistant URL: Your HA instance URL (e.g.,
http://homeassistant.local:8123) - Long-lived access token: Paste the token from above
- Home Assistant URL: Your HA instance URL (e.g.,
- Save the configuration
The module will connect to Home Assistant via WebSocket and begin caching entity states.
A pill-shaped display showing a single entity's state. Two visual styles:
- Colored pill: When the current state has a mapping (state → color + icon)
- Neutral pill: When the state has no mapping — shows title and state inline
- Configure — Select the entity, set a title, pick a default icon
- State Mapping — Map state values to colors and Lucide icons (e.g., "on" → green + Sun icon)
- Configure Visibility — Set conditions for when the pill should be visible
Displays Home Assistant persistent notifications in a scrollable list with:
- Bold title + relative timestamp
- Markdown-rendered description
- Configurable max notification count
- Optional visibility conditions
- Max Notifications — Set via the auto-generated number field (1–50, default 10)
- Configure Visibility — Condition builder for show/hide logic
Both widgets support conditional visibility based on entity states:
- Build conditions with AND/OR groups
- Operators: equals, does not equal, contains, does not contain, is empty
- Nest sub-groups (max 2 levels) for complex logic
- Example: Show pill only when
binary_sensor.someone_homeequalsonANDinput_boolean.dashboard_modeequalsdetailed
The connector maintains a single WebSocket connection to Home Assistant:
- Authenticates with the long-lived token
- Fetches all entities and caches them in memory
- Subscribes to state changes for only the entities used by your widgets
- Auto-reconnects with exponential backoff if disconnected
Entity state changes are emitted in real-time to all dashboard clients via Hubble's WebSocket broadcast system.
cd modules/home-assistant
npm install
npm run build- "Missing ha_url or ha_token" — Configure both fields in the Admin panel
- Widgets show no data — Check that the connector is connected (look for "Authenticated with Home Assistant" in logs)
- Entity not found — Make sure the entity exists in HA and its domain is correct
- Visibility not working — Verify the condition entity IDs are exact matches