Claude d5659478aa test: add a second real plan to the masonry gate
The second floor covers one class: the multi-wall corridor eating a neighbouring
wall. The first floor brings what neither it nor any synthetic fixture has —
three virtual spans, two wall columns, two solid edges with no thickness record
at all, and 127 noisy coordinates.

The two plans pin opposite states, which is worth more than two plans with the
same defect: one records a known debt of 181 steps, the other records cleanliness
at zero. A regression is caught in both directions.

A declared virtual span is a declared break, not a defect, so the rule from #285
would have reddened on the first floor's own contract. Samples lying on
open_spans are now excluded: 830 of 6800 on that plan, and the remaining gap
count is zero.

The two zero-thickness solid edges are two grid steps long and covered by the
bodies of their neighbours, so the browser sees no break. Their count is
therefore pinned in the model test rather than the smoke — if it grows, or if the
neighbours stop covering them, that shows up before it becomes a hole.

Both fixtures must stay noisy: the project's synthetic models carry exactly zero
noise, which is why #258 and #248 are not reproducible on them. A profile check
asserts at least a hundred noisy coordinates each, so a future write barrier run
over the fixtures cannot quietly rob them of their purpose.

Privacy: names, ids, markers, device bindings and layout are gone; geometry
stays, coordinates unchanged, because they are the point.

Issue: #286
User-Visible: no
2026-08-24 13:10:33 +03:00
2026-08-24 10:55:56 +03:00

🏠 House Plan — a live home map for Home Assistant

HACS Custom GitHub release CI Live demo Telegram chat

📘 Full user guide · 🇷🇺 Русский · 🗂 Project issues

Your whole home at a glance

House Plan turns Home Assistant into a live map of your home. Upload a plan or draw rooms directly on the dashboard, bind them to Home Assistant areas, and the area's devices appear automatically. You can immediately see where a light is on, a door is open, a room is too cold, Zigbee signal is weak, or a leak sensor has fired.

Synthetic home in View mode with rooms, devices, light and climate

Setup is entirely graphical: no floor-plan YAML, Inkscape, or external editor. Plan data and device positions live on the Home Assistant server and stay in sync across screens.

Edit on a desktop computer. View and kiosk are fully supported on phones and tablets. The editors are designed primarily for a mouse and keyboard; individual touch editing operations may be awkward or unavailable. See the exact touch support contract.

What House Plan provides

  • Live state and safe actions. Lights and other safe devices can toggle from the plan; a lock cannot be opened by an accidental plan tap.
  • Three built-in editors. Plan creates rooms, walls and openings; Device places and configures markers; Background adds lines, labels and furniture.
  • Area-aware rooms. New devices appear automatically, while room cards can show temperature, humidity, light state and average LQI.
  • Light and environment. Room fills, lamp Glow, wall shadows, a day-cycle backdrop and sunlight through windows.
  • Doors, windows, gates and vacuums. Openings follow real contacts and locks; a robot can show its position, dock and travelled path.
  • Several floors and screens. Space tabs, swipe navigation, local viewport, and a separate initial floor for each card.
  • Wall-display kiosk. A plan-only view with fullscreen navigation and icon sizes saved for that display.

The same synthetic home in touch View mode

Your first working room

  1. Install the integration and add the card to a dashboard.
  2. Create the first space: upload SVG/PNG/JPG/WebP, reuse an uploaded image, or choose no image and draw the plan by hand.
  3. In Plan, select Room outline, place vertices, and click the first point to close the outline.
  4. Name the room and bind it to a Home Assistant area. Use “No area” for a room that has no devices.
  5. Open Device: devices from the bound area are already placed; drag their markers to the correct positions.
  6. Optionally use Background for lines, text and furniture.
  7. Return to View. The plan now displays live state and accepts safe actions.

Creating the first space

Closing a room outline on its first point

A selected partition and the Plan context tray

Device settings with binding provenance and the exact action result

Live presentation preview for the same device

Every workflow and edge case is in the full user guide. The Background editor contract and vacuum guide are the authorities for those subsystems.

Installation

HACS

Open the repository in HACS

  1. In HACS open ⋮ → Custom repositories.
  2. Add https://github.com/Matysh/houseplan-card as an Integration.
  3. Install House Plan and restart Home Assistant.
  4. Open Settings → Devices & services → Add integration → House Plan.

The card is registered automatically. If you manage Lovelace resources manually, use the URL served by the integration:

resources:
  - url: /houseplan_files/houseplan-card.js
    type: module

Do not use the on-disk path inside custom_components; Home Assistant does not serve that path as a JavaScript module.

Manual installation

Copy custom_components/houseplan to config/custom_components, restart Home Assistant, and add the House Plan integration.

Add the card

Create a dashboard view (Panel works best) and add the card in the UI or as:

type: custom:houseplan-card
title: House plan

Different screens may start on different spaces:

type: custom:houseplan-card
default_floor: ground

All cards share server-side rooms and coordinates. Current mode, viewport and selected space remain local to the screen. Revision checks and live sync cover concurrent clients, but avoid editing the same object in two browsers at once.

Detailed documentation

Support and feedback

  • Questions and plan examples: Telegram @ha_houseplan.
  • Bugs and proposals: GitHub Issues.
  • Before reporting, update House Plan, restart HA and hard-refresh the page. Include the version, browser, logs and reproduction steps; private entity IDs may be replaced with fictional ones.

Documentation screenshots are produced by the reproducible npm run build && node demo/docs/capture.mjs command using synthetic data only. Scenario version, source fingerprint and every image hash are recorded in the screenshot index.

License: MIT.

S
Description
Интерактивный план дома для Home Assistant — Lovelace card + custom component
Readme MIT
542 MiB
Languages
JavaScript 51%
TypeScript 35.8%
Python 12.9%
Shell 0.2%