Your Home Digital Twin: Interactive floor 3d plan

My plan is only 13 Mb. “15.216Kb”

I do not think so

An 1,100-line YAML card looks ugly, but floor3d-card slowness is mostly:

  • GLB/OBJ size & triangle count
  • Number of lights casting shadows
  • Browser/GPU

If it actually feels slow, you’ll get more impact from:

  • Converting to GLB and simplifying the model mesh
  • Turning shadow: 'no' on most lights
  • Enabling extralightmode: 'yes' so only active lights cast shadows

than from shaving a few hundred YAML lines.

I am an architect. Trust me

You have done a good job, I can’t remember off the top of my head but I think each of my 3 floors is around that figure. Unfortunately my house has curved walls.

It has been a while since I played around with my model. I did convert the roof and the windows on the top floor to one object. My model could use optimisation that is for sure.

shadow: yes is required to stop it going through like that

With these settings can i solve the light direction? (going to upper floor)

  • Turning shadow: 'no' on most lights
  • Enabling extralightmode: 'yes' so only active lights cast shadows
1 Like

Should be, I am pretty sure they are the settings I used to stop my middle floor bathroom spilling light everywhere. But it should be shadow: yes for the particular light that is spilling light

1 Like

Adding some tutorials to the other software methods would be of value.

1 Like

Of course. I need time for writing tutorials.

1 Like

Other professional programs to evaluate;
If you want to use Rhino;
way:1
use ExportToHASS and then you have an obj file. Import to Rhino for editing you need these settings


Then you will see

After this you can edit, delete or add whatever you need.
way:2
Beginning from Strach.
layer=object groups
Remember
All layers must be unique
Obj File->Group (door)->object1(wing)+object2(frame)+obj3(handle) etc. (sweet home 3D)
Layer (door)For another app->object1(wing)+object2(frame)+obj3(handle) etc. (professional app always use layers))
g lvl001wall_0_1 adizanni format
“lvl000” “lvl001” “lvl002” are the levels so layer name must be “lvl001(1or0 or2 )xxx”
save as obj (convert layer names to group)
For save as or export to obj file use these settings

the important thing is obj group is equals to layer.
In fact other professional pragrams have the the same logic “object groups=layers”

2 Likes

Floor3D [PRO] Card

Your Home Digital Twin – Game Engine Backbone Edition



floor3d-card (aka Your Home Digital Twin)
by @andyHAwith respect and thanks for the original vision and work.


A new upgraded version “Pro” is coming…
Built on a real game-engine backbone, shaped by professional architectural experience — not just code.

:link: Floor3D [PRO] Card (source & documentation):


Context

The original floor3d-card works great and introduced a powerful idea: a true digital twin inside Home Assistant.
However, when models grow large and entity counts increase, natural performance and lifecycle limits begin to appear — not because of bad design, but because UI-driven architectures don’t scale like engines.

This work focuses on scaling and stabilization, not rewriting the idea.


What we improved (without changing the vision)

Single render exit (Render Scheduler)

Original behavior:
Render calls could be triggered from many places — state changes, attributes, resize events, editor lifecycle events.
Under heavy load this caused high CPU/GPU usage and unintentionally masked lifecycle edge cases.

What we did:
We introduced a game-engine style render scheduler:

100 triggers → 1 render path → 1 scheduled frame

All updates now flow through a single render exit.
No render storms. No duplicated geometry work. Clear and deterministic execution.


Faz-0 Engine Backbone – Stability Enhancements

Hostile lifecycle guards

  • Context: Home Assistant editor dialogs, overlays, and z-index changes create a hostile lifecycle for custom cards.
  • Improvement: Defensive guards ensure rendering and animation only happen in valid environments.
  • Result: Stable runtime and predictable editor behavior at scale.

State is not geometry

  • Context: In large setups, indirect geometry updates via state changes cause visual snapping and “refresh fixes it” symptoms.
  • Improvement: Geometry updates are driven only by real positional data (e.g. current_position for covers).
  • Result: Smooth motion, accurate visuals, no false updates.

Index-space invariant

  • Context: As entity counts grow, internal arrays must remain perfectly aligned.
  • Improvement: A strict index-space rule: one slot per entity, always aligned, never skipped.
  • Result: Backbone stability even with hundreds of entities.

Real-world validation

This is not theoretical tuning.

  • 5-story real house
  • 47 MB GLB architectural model
  • 200+ Home Assistant entities

The result:
A significantly faster, cleaner, and more stable foundation —
built like a real structure, not a UI hack.


Additional PRO Features

pro_log?: 'engine' | 'level' | 'all'
Optional detailed logging for debugging engine behavior.
Allows tracing render scheduling, level activation, and lifecycle decisions without polluting normal logs.


Level-Based Entity Filtering (Engine-Level Optimization) Mode (PRO)

Only visible and relevant levels are active.

Example:
If levels 0 → 1 → 2 → 3 are visible, only -1 and 3 are active.
(-1 means = 7/24 active exteriors, covers, alarm, etc.)
All other levels (0, 1, 2) are fully dormant:

  • no state updates processed
  • no render / update logic executed
  • no click, double-click, long-press, or gesture handling

This dramatically reduces unnecessary workload in large multi-floor models.


Editor-only Mode (PRO)

pro_skill?: 'editor' | 'mobile' | 'all'

Editor mode is treated as a configuration scene, not real life:

  • object mapping
  • camera setup
  • visual alignment

Real Home Assistant behavior is intentionally disabled here.

In short:
“Edit Card = setup scene, not runtime.”

This avoids false interactions and keeps editing predictable.


Mobile-only Mode (PRO)

A dedicated mode optimized for tablets and phones:

  • adjusted pixel ratio
  • reduced shadow cost
  • mobile-friendly render parameters

Result: smoother interaction and better battery/performance balance on mobile devices.


1 Like

@levonisyas , I welcome this initiative and I’m impatient to test it! I was really waiting for a professional coder to take over the project and I will try to be a sponsor and active tester. Thanks

1 Like

@adizanni
Thank you so much for your kind words — they truly honor me. My Home Assistant background isn’t very long, mostly limited to hobby use and my own needs, but the original floor3d-card idea was so strong and inspiring that I put a lot of effort into making it more scalable and stable.

I only tried to place the existing structure on a more robust and engine‑like foundation; the core architectural vision and the whole “digital twin” concept are entirely your creation. For me, you will always remain the true master coder behind this project.

Your support, feedback, and active testing mean a lot. I’m confident we can take this to an even higher level together.

Thanks…
Levent