Your Home Digital Twin: Interactive floor 3d plan

Yes, absolutely. I use it as my main dashboard! Thank you!

1 Like

Good day Adizanni, Yes, I have the card on one of the tabs in HA, but do not use it as it does not load on my iPhone or any of my older wall tablets. On the computer it takes 3 minutes or longer to load. Its a pity since I put long hours making it work, but unusable.

I know, if the model is too heavy the card shows its limits. You need to strike a balance between the quality of the rendering and the performances. I use mine as the home page for my HA and it loads fast, but I reduced the model to the bare minimum and still I think it is nice and useful.

Yes… Allowing an option for the card to open a default floor when using a multi floor model. e.g. 3 floors in a model but want floor 2 to open as the default view.

Hi
I am trying to make a dashboard with a sidebar card to the left with a meny and the rest of the screen to the right i use floor-card.
This works nice on the desktop but on my tablet the floor card is more to the left and the sidebar hides a part of it.
Why ?
I have tried alot to make this work but it will not.
I am using Panel:True and i have tried many variants of combining CSS styles and Card-mod but it’s always the same. It will not work between different resolutions.
Maybe the sidebar card i use on GitHub - DBuit/sidebar-card do something.
Are there somebody who knows ?

Have you tried @media queries to pick up different screen sizes?
See this post for how to use. Also see CSS left, right or padding to possibly move your card.

One thing I have noticed with the card when setting a camera view is it does not look the same on different devices. You are better off creating a conditional card that is specific to each screen resolution.

Hello @adizanni,

I’m using it as a view to my HA installation. The rendering speed relays on the client used. A 20Mb GLB model is well handled by a Rpi4 with 4Mb and fairly fast rendered by a modern (less than 5 years old) client computed with an average GPU.

There is a library called DRACOloader that is used to compress and uncompress threejs models: three.js docs. It is possible that the Digital Twin could benefit from this library. Keep on this awesome card.

1 Like

Thanks Andrew.
Yes it looks like i have to use @media queries.
I used this and changed height and margin-top in a card-mod.
It looks like this works.

1 Like

I am pleased to hear

Hi
I can see somebody have used Browser mod for popup.
I could only do this with gesture and running a script with browser mod configuration.
This works great.
The problem is that browser mod popup shows on all screens.
I know that to get this work on active screen i have to use a fire-dom-event.
This i have not succided to configure with floor card and gesture.

Anybody who have an ide on how to do this ?

I do not know how to confine the browser mod popup to the active screen. It’s not really an issue for me, since I typically only have one screen open, but please let me know if you figure it out.

For what it’s worth, here’s the script for one of my popup cards.

alias: 3D Family Room
sequence:
  - data:
      card_mod:
        style:
          ha-dialog$: |
            div {          
              background-color: transparent !important;
            }
      content:
        type: custom:stack-in-card
        mode: vertical
        card_mod:
          style:
            .: |
              ha-card {
                --ha-card-background: #637f8a60;
                --paper-item-icon-color: white;
                backdrop-filter: blur(4px);
                border-radius: 15px;
                color: white;
              }              
        cards:
          - type: custom:room-card
            title: Family Room
            card_mod:
              style:
                .: |
                  ha-card {
                    color: white;
                    --primary-text-color: white;  
                  }               
            templates:
              - name: t1
                template:
                  show_icon: true
                  state_color: true
                  styles:
                    color: white
                  tap_action:
                    action: toggle
              - name: t2
                template:
                  show_icon: true
                  state_color: true
                  styles:
                    color: white
                  tap_action:
                    action: more-info
            info_entities:
              - entity: switch.amplifier_switch
                icon: mdi:surround-sound
                show_icon: true
                name: Amplifier
              - entity: sensor.amplifier_power
            entities:
              - entity: switch.mini_plug_with_power_meter_2
                name: Bookcase Light
                icon: mdi:wall-sconce-flat
                template: t1
              - entity: switch.in_wall_paddle_switch_qfsw_700s_11
                icon: mdi:server-network
                name: Closet Light
                template: t1
              - entity: switch.desklight_switch
                name: Desk Lamp
                icon: mdi:wall-sconce-flat
                template: t1
              - entity: switch.fr_fan_light_x
                name: Fan Light
                icon: mdi:ceiling-fan-light
                template: t1
              - entity: switch.kauf_plug_12
                name: Floor Lamp
                template: t1
              - entity: switch.shellyplugus_b48a0a1b633c_switch_0
                name: Table Lamp
                icon: mdi:lamp
                template: t1
              - entity: fan.fr_helper_fan
                name: Fan
                template: t2
              - entity: switch.amplifier_switch
                icon: mdi:audio-video
                template: t1
              - entity: remote.family_room_tv
                icon: mdi:television-classic
                name: TV
                show_icon: true
                tap_action:
                  action: call-service
                  service: script.3d_tv_fr
      size: normal
    action: browser_mod.popup
icon: mdi:lightbulb
mode: single

Yes this is something similar to what i have.
But it popup on all screens.

Yes i will tell you if i figure it out.

For now i have set a destination inside the script and the dashboard link is opened with ?BrowserID=Dashboard in the end ,this will be the name of the registered browser , in this way popup always shows on that screen.
But in this way if i want to show the popup on a other screen it will not work.

I think this will have a simple answer.

I have a light object that has been split into 52 separate objects:

KitchenCeilingLight_1 to KitchenCeilingLight_52

If I click on the light object, I could get any of these 52 objects. For my first attempt at setting this object up, I am linking to just 1 of these.

  - entity: light.kitchen_ceiling_bulbs
    type3d: light
    object_id: KitchenCeilingLight_1
    light:
      lumens: "1500"

If I click KitchenCeilingLight_1 or indeed turn it on via the entity itself, the light on the plan does turn on.

I would like to have as little code as possible so do not want 51 copies of this.

I realise there is an object group. Can I add these to a single group and use the group name instead. eg

  - object_group: KitchenCeilingLights
    objects:
      - object_id: KitchenCeilingLight_1
'
'
      - object_id: KitchenCeilingLight_52

  - entity: light.kitchen_ceiling_bulbs
    type3d: light
    object_id: KitchenCeilingLights
    light:
      lumens: "1500"

I ask the question because I tried it and it did not seem to even show any light in the plan when I turned on the light but did not have errors when loading

This should be bracketed with greater-than and less-than signs:

object_id: <KitchenCeilingLights>

Not sure if case matters, but perhaps keep everything lower case, e.g. kitchenceilinglights, as well.

Thanks that sorted it.

Hi to All

I have problem with display of text on the frame. I have few frames and on the last 2 frames I don’t see text. Entity is added to the frame correctly because after double click I see information about the entity. Can anybody help me?


after double click

my code behind:

type: custom:floor3d-card
path: /local/3D/
name: Home
objfile: home.obj
lock_camera: "no"
header: "yes"
click: "yes"
overlay: "no"
hideLevelsMenu: "no"
shadow: "yes"
extralightmode: "yes"
show_axes: "no"
sky: "no"
overlay_bgcolor: transparent
overlay_fgcolor: black
overlay_alignment: top-left
overlay_width: "33"
overlay_height: "20"
north:
  x: 0
  z: -1
camera_position:
  x: -990.6527459533339
  "y": 1700.3763626116745
  z: -588.082873358446
camera_rotate:
  x: -1.8646942157990536
  "y": -0.5280001553799772
  z: -2.1117682562799307
camera_target:
  x: 33.73270710090323
  "y": 19.297690487047873
  z: -79.28298229623606
object_groups:
  - object_group: RoundTable
    objects:
      - object_id: Round_table_1
      - object_id: Round_table_2
      - object_id: Round_table_3
  - object_group: EntranceDoor
    objects:
      - object_id: Door_9
      - object_id: Door_7
      - object_id: Door_5
entities:
  - entity: light.light_3
    type3d: light
    object_id: Ceiling_lamp_1_2
    light:
      shadow: "no"
  - entity: light.light_3
    object_id: Ceiling_lamp_2_2
    type3d: light
    light:
      shadow: "no"
  - entity: light.light_4
    type3d: light
    object_id: Ceiling_lamp_3_2
    light:
      lumens: "800"
      shadow: "no"
  - entity: light.light_5
    object_id: Ceiling_lamp_4_2
    type3d: light
    light:
      shadow: "no"
  - entity: light.living_room_lamp
    object_id: Pendant_lamp_2
    type3d: light
    light:
      lumens: "900"
      shadow: "yes"
      vertical_alignment: bottom
  - entity: light.book_lamp
    action: more-info
    type3d: light
    object_id: Floor_uplight_2
    light:
      shadow: "no"
      vertical_alignment: top
      lumens: "800"
  - entity: light.old_lamp
    action: more-info
    type3d: light
    object_id: Lamp_8
    light:
      vertical_alignment: top
  - entity: binary_sensor.door_zigbee_sensor_1_door
    object_id: Door_1_5
    type3d: door
    door:
      direction: inner
      side: right
      degrees: "65"
      doortype: swing
  - entity: binary_sensor.door_zigbee_sensor_2_door
    object_id: Double_French_window_1_1
    type3d: door
    door:
      doortype: slide
      side: right
      direction: inner
      percentage: "90"
  - entity: sensor.t_h_zigbee_sensor_2_temperature
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_7_3
  - entity: sensor.t_h_zigbee_sensor_2_humidity
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_8_3
  - entity: sensor.t_h_ir_sensor_temp
    object_id: Frame_3_3
    type3d: text
    text:
      textfgcolor: black
  - entity: sensor.t_h_ir_sensor_hum
    object_id: Frame_4_3
    type3d: text
    text:
      textfgcolor: black
  - entity: sensor.t_h_sensor_1_temp
    object_id: Frame_1_3
    type3d: text
    text:
      textfgcolor: black
    action: more-info
  - entity: sensor.t_h_sensor_1_hum
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_2_3
    action: more-info
  - entity: sensor.t_h_sensor_2_temperature
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_14_5
  - entity: sensor.t_h_sensor_2_humidity
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_15_5
  - entity: sensor.t_h_sensor_3_temperature
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_5_3
  - entity: sensor.t_h_sensor_3_humidity
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_6_3
  - entity: sensor.t_h_z_sensor_out_g_temp
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_9_3
  - entity: sensor.t_h_z_sensor_out_g_hum
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_10_3
  - entity: sensor.esp_pool_teplota_vody
    action: more-info
    type3d: text
    text:
      textfgcolor: black
    object_id: Frame_13_5
  - entity: camera.gate
    action: more-info
    type3d: camera
    object_id: CCTV_gate_3
  - entity: camera.garden
    action: more-info
    type3d: camera
    object_id: CCTV_garden_3
  - entity: camera.kitchen
    action: more-info
    type3d: camera
    object_id: CCTV_indoor_1_2
zoom_areas: []
mtlfile: home.mtl
selectionMode: "no"
editModeNotifications: "yes"
backgroundColor: black
globalLightPower: "0.9"

Hey @Roberto555 , if the frame object in Sweethome3d is exactly the same as the one working, it may be reversed (outside in) and the visible part being against the wall; try to pivot it in the z axis 180 degrees and see if the text appears.

1 Like

Hi @adizanni , I tried to add another frame, unfortunately situation is the same. On click I see additional info but text not. :sleepy:


from other side

I thought about storing of data. Maybe floor3d card store some temporary data to another invisible folder. Something goes wrong during storing of data and now it is stuck in some strange situation. I tried to uninstall floor 3d card, delete all my files, install back and store my data in another folder, but this proces didn’t help.

Did you clear cache and data from browser?

1 Like

Hello @Roberto555, as suggested by @Chykan, clearing the cache is the best way to ensure that any change to models and materials will be refreshed, it is also possible to add a fake version to the model URL using a URL query parameter such as model: home.obj?ver=1 (changing the version number each time you change the model) it is also working with the material file (home.mtl).
Second, I see that you are not using the basic frame from SH3D, which is the one that I tested and always working. Also it is strange that the majority of object ID from the frame that you bind to the text entity have the “_3” id, whereas some of them have the “_5” id; usually for the same compound object in SH3D the sub objects have always the same id, try to use _3 in all the frame that you bind to text.
If nothing works, please send me a private message with your model attached either here or in GitHub and I will try to perform some tests.