Skip to content

Instantly share code, notes, and snippets.

@dskvr
Created June 7, 2024 13:53
Show Gist options
  • Save dskvr/9775d1a4dcbd86e99c79b486be0b0af8 to your computer and use it in GitHub Desktop.
Save dskvr/9775d1a4dcbd86e99c79b486be0b0af8 to your computer and use it in GitHub Desktop.
Bambu Lab P1S Lovelace Dashboard
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-title-card
title: Bambu Lab X1C
alignment: start
- type: custom:mod-card
card:
type: custom:mushroom-chips-card
chips:
- type: entity
entity: button.p1s_stop_printing
icon: mdi:stop
content_info: false
- type: entity
entity: button.p1s_pause_printing
icon: mdi:pause
content_info: false
- type: entity
entity: button.p1s_resume_printing
icon: mdi:play
content_info: false
card_mod:
style: |
ha-card {
display: flex;
justify-content: end;
align-items: center;
height: 80px;
}
- type: custom:mod-card
card:
camera_view: live
type: picture-glance
entities: []
camera_image: camera.p1s_camera
- type: custom:mod-card
card_mod:
style:
hui-horizontal-stack-card $: |
div#root > :first-child {
width: 20%;
flex: auto;
}
div#root > :last-child {
width: 80%;
flex: auto;
}
card:
type: horizontal-stack
cards:
- type: custom:mushroom-chips-card
chips:
- type: template
entity: binary_sensor.p1s_online
content: EXT.
card_mod:
style: |
ha-card {
background: none !important;
border: none;
font-size: 4rem !important;
}
- type: custom:mushroom-chips-card
chips:
- type: template
entity: binary_sensor.p1s_online
content: AMS
card_mod:
style: |
ha-card {
background: none !important;
border: none;
font-size: 4rem !important;
}
- type: spacer
- type: entity
entity: sensor.p1s_ams_1_temperature
- type: entity
entity: sensor.p1s_ams_1_humidity_index
icon: mdi:water-opacity
- type: custom:mod-card
card_mod:
style:
hui-horizontal-stack-card $: |
div#root > :first-child {
width: 20%;
flex: auto;
}
div#root > :last-child {
width: 80%;
flex: auto;
}
card:
type: horizontal-stack
cards:
- type: custom:mod-card
card_mod:
style: |
ha-card {
font-size: 10px;
--external_spool_color: {{state_attr('sensor.p1s_externalspool_external_spool', 'color') }};
--tray_1_color: {{state_attr('sensor.p1s_ams_1_tray_1', 'color') }};
--tray_2_color: {{state_attr('sensor.p1s_ams_1_tray_2', 'color') }};
--tray_3_color: {{state_attr('sensor.p1s_ams_1_tray_3', 'color') }};
--tray_4_color: {{state_attr('sensor.p1s_ams_1_tray_4', 'color') }};
--external_spool_bg: {% if is_state_attr('sensor.p1s_externalspool_external_spool', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_1_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_1', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_2_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_2', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_3_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_3', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_4_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_4', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
}
card:
card_mod:
style: |
.entities {
align-items: start !important;
}
show_name: false
show_icon: true
show_state: true
type: glance
entities:
- entity: sensor.p1s_externalspool_external_spool
icon: mdi:circle-slice-8
card_mod:
style: |
:host {
--paper-item-icon-color: var(--external_spool_color);
}
state-badge {
background-color: var(--external_spool_bg);
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- type: custom:mod-card
card_mod:
style: |
ha-card {
font-size: 10px;
--external_spool_color: {{state_attr('sensor.p1s_externalspool_external_spool', 'color') }};
--tray_1_color: {{state_attr('sensor.p1s_ams_1_tray_1', 'color') }};
--tray_2_color: {{state_attr('sensor.p1s_ams_1_tray_2', 'color') }};
--tray_3_color: {{state_attr('sensor.p1s_ams_1_tray_3', 'color') }};
--tray_4_color: {{state_attr('sensor.p1s_ams_1_tray_4', 'color') }};
--external_spool_bg: {% if is_state_attr('sensor.p1s_externalspool_external_spool', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_1_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_1', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_2_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_2', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_3_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_3', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
--tray_4_bg: {% if is_state_attr('sensor.p1s_ams_1_tray_4', 'active', true) %} rgba(255,254,249, 0.25); {% else %} rgba(111,111,111, 0.2) {% endif %};
}
card:
card_mod:
style: |
.entities {
align-items: start !important;
}
show_name: false
show_icon: true
show_state: true
type: glance
entities:
- entity: sensor.p1s_ams_1_tray_1
icon: mdi:circle-slice-8
card_mod:
style: |
:host {
--paper-item-icon-color: var(--tray_1_color);
}
state-badge {
background-color: var(--tray_1_bg);
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: sensor.p1s_ams_1_tray_2
icon: mdi:circle-slice-8
card_mod:
style: |
:host {
--paper-item-icon-color: var(--tray_2_color);
}
state-badge {
background-color: var(--tray_2_bg);
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: sensor.p1s_ams_1_tray_3
icon: mdi:circle-slice-8
card_mod:
style: |
:host {
--paper-item-icon-color: var(--tray_3_color);
}
state-badge {
background-color: var(--tray_3_bg);
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: sensor.p1s_ams_1_tray_4
icon: mdi:circle-slice-8
card_mod:
style: |
:host {
--paper-item-icon-color: var(--tray_4_color);
}
state-badge {
background-color: var(--tray_4_bg);
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- type: custom:mod-card
card:
type: custom:mushroom-chips-card
chips:
- type: template
entity: binary_sensor.p1s_online
content: Printer
card_mod:
style: |
ha-card {
background: none !important;
border: none;
font-size: 4rem !important;
}
- type: spacer
- type: entity
entity: sensor.p1s_current_stage
- type: light
icon: mdi:lightbulb
entity: light.p1s_chamber_light
- type: entity
entity: sensor.p1s_wi_fi_signal
- type: entity
entity: binary_sensor.p1s_hms_errors
icon: mdi:alert-circle
- type: custom:mod-card
card:
show_name: false
show_icon: true
show_state: true
type: glance
entities:
- entity: sensor.p1s_nozzle_temperature
icon: mdi:printer-3d-nozzle-heat
- entity: sensor.p1s_bed_temperature
icon: mdi:train-car-flatbed
- entity: sensor.p1s_chamber_temperature
icon: mdi:minus-box-outline
- entity: sensor.p1s_speed_profile
state_color: false
- type: custom:mod-card
card:
type: custom:timer-bar-card
entities:
- entity: sensor.p1s_print_progress
guess_mode: true
active_icon: mdi:printer-3d
start_time:
entity: sensor.p1s_start_time
end_time:
entity: sensor.p1s_end_time
layout: full_row
text_width: 0px
mushroom: null
- type: custom:mushroom-chips-card
chips:
- type: entity
entity: sensor.p1s_print_progress
- type: entity
entity: sensor.p1s_end_time
alignment: justify
@odin6796
Copy link

Ok got it workin with 2 AMS units no external spool.
Also for the A1.

If anyone needs it please ask

@Woody7946
Copy link

Hallo odin6796
darf ich fragen, wie Du es geschafft hast?

@ur-vile
Copy link

ur-vile commented Mar 9, 2025

Got it working with my P1P (upgraded to P1S) by replacing all P1/X1 references with p1p_xxxserialnumberxxx, probably because I am in LAN only mode. Except for the print progress bar, can't seem to get that working, it's just blank space.

@xiaohaiGreen
Copy link

WIth the P1S,my print progress bar is also not working, we need some help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment