-
-
Save eodabas/880612a39c4ff04e573dc921ff3aabdf to your computer and use it in GitHub Desktop.
type: sections | |
max_columns: 3 | |
title: P1S | |
path: p1s | |
sections: | |
- type: grid | |
cards: | |
- type: heading | |
heading_style: subtitle | |
badges: | |
- type: entity | |
show_state: false | |
show_icon: true | |
entity: sensor.p1s_current_stage | |
color: "#ff000000" | |
visibility: | |
- condition: screen | |
media_query: "(min-width: 1024px)" | |
- type: custom:mushroom-template-card | |
primary: "Printer State: {{ state_translated(\"binary_sensor.p1s_print_error\") }}" | |
secondary: >- | |
Error Code: {{ state_attr("binary_sensor.p1s_print_error", | |
"code")|replace("_", "-") }} | |
{% if state_attr("binary_sensor.p1s_print_error", "error") != None | |
and state_attr("binary_sensor.p1s_print_error", "error") != "" %} | |
({{ state_attr("binary_sensor.p1s_print_error", "error") }}) | |
{% endif %} | |
icon: mdi:information-slab-circle | |
entity: binary_sensor.p1s_print_error | |
icon_color: red | |
fill_container: true | |
grid_options: | |
columns: full | |
visibility: | |
- condition: state | |
entity: binary_sensor.p1s_print_error | |
state_not: "off" | |
tap_action: | |
action: more-info | |
- type: custom:mushroom-template-card | |
primary: "HMS State: {{ state_translated(\"binary_sensor.p1s_hms_errors\") }}" | |
secondary: >- | |
Error Code: {{ state_attr("binary_sensor.p1s_hms_errors", | |
"1-Code")|replace("_", "-") }} | |
{% if state_attr("binary_sensor.p1s_hms_errors", "1-Error") != None | |
and state_attr("binary_sensor.p1s_hms_errors", "error") != "" | |
and state_attr("binary_sensor.p1s_hms_errors", "error") != "unknown" %} | |
({{ state_attr("binary_sensor.p1s_hms_errors", "error") }}) | |
{% endif %} | |
icon: mdi:information-slab-circle | |
entity: binary_sensor.p1s_hms_errors | |
icon_color: red | |
fill_container: true | |
grid_options: | |
columns: full | |
visibility: | |
- condition: state | |
entity: binary_sensor.p1s_hms_errors | |
state_not: "off" | |
tap_action: | |
action: more-info | |
column_span: 3 | |
- type: grid | |
cards: | |
- type: heading | |
icon: mdi:printer-3d | |
heading_style: subtitle | |
heading: Printer | |
badges: | |
- type: entity | |
show_state: true | |
show_icon: true | |
entity: light.p1s_chamber_light | |
tap_action: | |
action: toggle | |
name: Light | |
state_content: | |
- name | |
- state | |
color: state | |
- type: entity | |
show_state: true | |
show_icon: true | |
entity: sensor.p1s_current_stage | |
icon: mdi:printer-3d | |
color: state | |
- show_state: false | |
show_name: true | |
camera_view: auto | |
type: picture-entity | |
entity: image.p1s_camera | |
- type: picture | |
image_entity: image.p1s_cover_image | |
grid_options: | |
columns: 6 | |
rows: 4 | |
theme: macOS Theme | |
card_mod: | |
style: | | |
ha-card { | |
align-content: center; | |
background: linear-gradient(#999999, #111111); | |
//background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>'); | |
} | |
img { | |
filter: drop-shadow(0px 5px 2px #00000055); | |
} | |
- type: custom:stack-in-card | |
horizontal: true | |
cards: | |
- type: markdown | |
content: > | |
<div><font size="5">{{ states.sensor.p1s_task_name.state[:60] | |
}}</font></div> | |
<table width=100%><tr><td align=left>Printed layers<td | |
align=right><font color=#77fc54 ; size="4">{{ | |
states.sensor.p1s_current_layer.state}}</font>/{{states.sensor.p1s_total_layer_count.state}}</td></tr></table> | |
<table width=100%><tr> <td align=left><font | |
size="5";color=#77fc54>{{ | |
states.sensor.p1s_print_progress.state}}%<td align=right> {% if | |
(states.sensor.p1s_remaining_time.state | int) == 0 %} | |
Success | |
{% else %} | |
<font color=#959595>-{{(states.sensor.p1s_remaining_time.state | int/60) | int }}h{{ states.sensor.p1s_remaining_time.state| int % 60 }}m | |
{% endif %} </td> </tr></table> | |
card_mod: | |
style: | |
.: | | |
ha-card { | |
position: absolute; | |
top: 0px; | |
} | |
ha-markdown: | |
$: | | |
div { | |
height: 135px; | |
overflow: hidden; | |
word-break: break-words; | |
hyphens: auto!important; | |
hyphenate-character: " "; | |
} | |
grid_options: | |
columns: 6 | |
rows: 3 | |
- type: custom:entity-progress-card | |
entity: sensor.p1s_print_progress | |
unit: "%" | |
show_more_info: false | |
bar_size: small | |
bar_color: var(--green-color) | |
layout: horizontal | |
icon: none | |
hide: | |
- icon | |
- name | |
- secondary_info | |
grid_options: | |
columns: 6 | |
rows: 1 | |
card_mod: | |
style: | | |
ha-card { | |
height: 100%; | |
align-content: end; | |
} | |
grid_options: | |
columns: 6 | |
rows: 4 | |
- type: custom:ha-bambulab-print_control-card | |
printer: 27069188e8387ed3d25eae2602210d3b | |
grid_options: | |
columns: full | |
rows: auto | |
card_mod: | |
style: | | |
div.control-container { | |
width: 100%; | |
overflow: hidden; | |
} | |
div.buttons-container { | |
gap: 0px | |
} | |
- type: custom:mushroom-fan-card | |
entity: fan.teckin_plug_4_bentobox_external_socket_1 | |
name: Bento Ext | |
grid_options: | |
columns: 4 | |
rows: 1 | |
tap_action: | |
action: more-info | |
icon_animation: true | |
- type: custom:mushroom-fan-card | |
entity: fan.teckin_plug_2_bentobox_internal_socket_1 | |
name: Bento Int | |
grid_options: | |
columns: 4 | |
rows: 1 | |
tap_action: | |
action: more-info | |
icon_animation: true | |
- type: custom:mushroom-template-card | |
primary: Air Purifier | |
secondary: | | |
{% if states(config.entity) == "on" %} | |
{% if state_attr(config.entity, "mode") == "manual" %} | |
{{ state_attr(config.entity, "percentage") }}% | |
{% else %} | |
{{ state_attr(config.entity, "mode") | capitalize }} | |
{% endif %} | |
{% if state_attr(config.entity, "mode") in [ "manual", "auto"] %} | |
● {{ state_translated('sensor.levoit_131s_air_purifier_air_quality') | capitalize }} | |
{% endif %} | |
{% else %} | |
{{ state_translated(config.entity) }} | |
{% endif %} | |
icon: | | |
{% if is_state(config.entity, 'on') %} | |
mdi:fan | |
{% else %} | |
mdi:fan-off | |
{% endif %} | |
entity: fan.levoit_131s_air_purifier | |
tap_action: | |
action: more-info | |
grid_options: | |
columns: 4 | |
rows: 1 | |
badge_icon: | | |
{% if states(config.entity) == "on" %} | |
{% if state_attr(config.entity, "mode") == "sleep" %} | |
mdi:power-sleep | |
{% endif %}{% endif %} | |
badge_color: orange | |
card_mod: | |
style: | |
mushroom-shape-icon$: | | |
.shape { | |
{% if is_state(config.entity, 'on') %} | |
--icon-color: rgb(var(--rgb-state-fan)); | |
--shape-color: rgba(var(--rgb-state-fan), 0.2); | |
{% endif %} | |
display: flex; | |
} | |
mushroom-shape-icon: | | |
ha-state-icon { | |
{% if is_state(config.entity, 'on') %} | |
{% if state_attr(config.entity, "mode") == "auto" %} | |
{% if is_state('sensor.levoit_131s_air_purifier_air_quality', 'excellent') %} | |
animation: spin 8s linear infinite; | |
{% elif is_state('sensor.levoit_131s_air_purifier_air_quality', 'good') %} | |
animation: spin {{ 1 / (1.5 * (33 / 100) ** 0.5) }}s linear infinite; | |
{% elif is_state('sensor.levoit_131s_air_purifier_air_quality', 'fine') %} | |
animation: spin {{ 1 / (1.5 * (66 / 100) ** 0.5) }}s linear infinite; | |
{% elif is_state('sensor.levoit_131s_air_purifier_air_quality', 'bad') %} | |
animation: spin {{ 1 / (1.5 * (100 / 100) ** 0.5) }}s linear infinite; | |
{% endif %} | |
{% elif state_attr(config.entity, "mode") == "manual" %} | |
animation: spin {{ 1 / (1.5 * (state_attr(config.entity, "percentage") / 100) ** 0.5) }}s linear infinite; | |
{% endif %} | |
{% else %} | |
--shape-animation: none; | |
{% endif %} | |
} | |
- type: custom:mushroom-fan-card | |
entity: fan.p1s_chamber_fan | |
name: Chamber | |
grid_options: | |
columns: 4 | |
rows: 1 | |
tap_action: | |
action: more-info | |
icon_animation: true | |
- type: custom:mushroom-fan-card | |
entity: fan.p1s_aux_fan | |
name: Aux | |
grid_options: | |
columns: 4 | |
rows: 1 | |
tap_action: | |
action: more-info | |
icon_animation: true | |
- type: custom:mushroom-fan-card | |
entity: fan.p1s_cooling_fan | |
name: Cooling | |
grid_options: | |
columns: 4 | |
rows: 1 | |
tap_action: | |
action: more-info | |
icon_animation: true | |
- type: grid | |
cards: | |
- type: heading | |
icon: mdi:camera-control | |
heading_style: subtitle | |
badges: [] | |
heading: Status | |
- show_name: true | |
show_icon: true | |
show_state: true | |
type: glance | |
entities: | |
- entity: sensor.p1s_nozzle_temperature | |
icon: mdi:printer-3d-nozzle-heat | |
name: Nozzle | |
card_mod: | |
style: | | |
:host { | |
--paper-item-icon-color: white; | |
--icon-primary-color: white; | |
} | |
state-badge { | |
background-color: #D5AE43; | |
border-radius: 50%; | |
} | |
div { | |
white-space: unset !important; | |
text-wrap: balance !important; | |
} | |
- entity: sensor.p1s_bed_temperature | |
icon: mdi:train-car-flatbed | |
name: Print Bed | |
card_mod: | |
style: | | |
:host { | |
--paper-item-icon-color: white; | |
--icon-primary-color: white; | |
} | |
state-badge { | |
background-color: #4DAE51; | |
border-radius: 50%; | |
} | |
div { | |
white-space: unset !important; | |
text-wrap: balance !important; | |
} | |
- entity: sensor.p1s_chamber_multi_sensor_temperature | |
icon: mdi:printer-3d | |
name: Chamber | |
card_mod: | |
style: | | |
:host { | |
--paper-item-icon-color: white; | |
--icon-primary-color: white; | |
} | |
state-badge { | |
background-color: #6594E4; | |
border-radius: 50%; | |
} | |
div { | |
white-space: unset !important; | |
text-wrap: balance !important; | |
} | |
- entity: select.p1s_printing_speed | |
name: Speed | |
icon: mdi:window-close | |
card_mod: | |
style: | | |
{% set current_sensor = "select.p1s_printing_speed" %} | |
:host { | |
--paper-item-icon-color: white; | |
--icon-primary-color: white; | |
{% if is_state(current_sensor, "silent") %} | |
--card-mod-icon: mdi:speedometer-slow; | |
{% elif is_state(current_sensor, "standard") %} | |
--card-mod-icon: mdi:speedometer-medium; | |
{% elif is_state(current_sensor, "sport") %} | |
--card-mod-icon: mdi:speedometer; | |
{% elif is_state(current_sensor, "ludicrous") %} | |
--card-mod-icon: mdi:rocket-launch; | |
{% else %} | |
--card-mod-icon: mdi:window-close | |
{% endif %} | |
} | |
state-badge { | |
background-color: orange; | |
border-radius: 50%; | |
} | |
div { | |
white-space: unset !important; | |
text-wrap: balance !important; | |
} | |
state_color: false | |
card_mod: | |
style: | | |
ha-card { | |
font-size: 12px; | |
height: 100% | |
} | |
ha-card.type-glance .entities { | |
align-items: flex-start !important; | |
} | |
- type: heading | |
heading: Ext. Spool | |
heading_style: subtitle | |
grid_options: | |
columns: 3 | |
icon: mdi:alpha-e-box | |
- type: heading | |
heading: AMS | |
heading_style: subtitle | |
grid_options: | |
columns: 9 | |
badges: | |
- type: entity | |
show_state: true | |
show_icon: true | |
entity: sensor.p1s_ams_1_multi_sensor_temperature | |
tap_action: | |
action: more-info | |
- type: entity | |
show_state: true | |
show_icon: true | |
entity: sensor.p1s_ams_1_multi_sensor_humidity | |
tap_action: | |
action: more-info | |
- type: entity | |
show_state: true | |
show_icon: true | |
entity: sensor.p1s_ams_1_humidity_index | |
tap_action: | |
action: more-info | |
icon: mdi:alpha-a-box | |
tap_action: | |
action: perform-action | |
perform_action: input_boolean.toggle | |
target: | |
entity_id: input_boolean.enable_ha_bambulab_ams_spool_cards | |
- type: custom:ha-bambulab-spool-card | |
header: Header Text | |
subtitle: Subtitle Text | |
show_header: true | |
show_type: true | |
spool: 463cf2384c0f8deb41635045674cde41 | |
card_mod: | |
style: | |
.: | | |
ha-card { | |
background: var(--ha-card-background, var(--card-background-color, #fff)); | |
-webkit-backdrop-filter: var(--ha-card-backdrop-filter, none); | |
backdrop-filter: var(--ha-card-backdrop-filter, none); | |
box-shadow: var(--ha-card-box-shadow, none); | |
box-sizing: border-box; | |
border-radius: var(--ha-card-border-radius, 12px); | |
border-width: var(--ha-card-border-width, 1px); | |
border-style: solid; | |
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0)); | |
color: var(--primary-text-color); | |
display: block; | |
transition: all .3sease-out; | |
position: relative; | |
} | |
ha-bambulab-spool { | |
xbackground-color: red!important; | |
margin: 5px; | |
} | |
ha-bambulab-spool $ ams-popup: | | |
div.ha-bambulab-spool-card-container { | |
xbackground-color: cyan; | |
} | |
div.ha-bambulab-spool-card-holder { | |
border: 7px solid rgba(0,0,0,0) !important; | |
background: none !important; | |
} | |
div.ha-bambulab-spool-container { | |
border: 2px solid rgba(0,0,0,0); | |
} | |
div.ha-bambulab-spool-card-holder { | |
width: 62px; | |
margin-left: auto; | |
margin-right: auto; | |
} | |
div.ha-bambulab-spool-info { | |
background: none; | |
font-weight: 500; | |
font-size: 12px; | |
line-height: 16px; | |
color: var(--card-primary-color); | |
letter-spacing: 0.1px; | |
text-overflow: ellipsis; | |
overflow: hidden; | |
} | |
div.v-string-roll { | |
xbackground-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>') !important; | |
} | |
div.v-string-layer { | |
background-color: rgba(0, 0, 0, 0.1); | |
} | |
visibility: | |
- condition: state | |
entity: input_boolean.enable_ha_bambulab_ams_spool_cards | |
state: "on" | |
- type: horizontal-stack | |
cards: | |
- type: custom:ha-bambulab-ams-card | |
entity: "" | |
header: "" | |
subtitle: "" | |
style: vector | |
ams: 489dc2f60789a8ab9cacb6acadd201a4 | |
show_type: true | |
show_info_bar: false | |
card_mod: | |
style: | |
.: | | |
ha-card { | |
background: var(--ha-card-background, var(--card-background-color, #fff)); | |
-webkit-backdrop-filter: var(--ha-card-backdrop-filter, none); | |
backdrop-filter: var(--ha-card-backdrop-filter, none); | |
box-shadow: var(--ha-card-box-shadow, none); | |
box-sizing: border-box; | |
border-radius: var(--ha-card-border-radius, 12px); | |
border-width: var(--ha-card-border-width, 1px); | |
border-style: solid; | |
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0)); | |
color: var(--primary-text-color); | |
display: block; | |
transition: all .3sease-out; | |
position: relative; | |
} | |
ha-bambulab-spool { | |
padding: 0px 0px !important; | |
} | |
ha-bambulab-spool $: | |
ams-popup: | | |
div.ha-bambulab-spool-card-container { | |
xbackground-color: cyan; | |
} | |
div.ha-bambulab-spool-card-holder { | |
border: 7px solid rgba(0,0,0,0) !important; | |
background: none !important; | |
} | |
div.ha-bambulab-spool-container { | |
border: 2px solid rgba(0,0,0,0); | |
} | |
div.ha-bambulab-spool-card-holder { | |
width: 62px; | |
margin-left: auto; | |
margin-right: auto; | |
} | |
div.ha-bambulab-spool-info { | |
background: none; | |
font-weight: 500; | |
font-size: 12px; | |
line-height: 16px; | |
color: var(--card-primary-color); | |
letter-spacing: 0.1px; | |
text-overflow: ellipsis; | |
overflow: hidden; | |
} | |
div.v-string-roll { | |
xbackground-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>') !important; | |
} | |
div.v-string-layer { | |
background-color: rgba(0, 0, 0, 0.1); | |
} | |
grid_options: | |
columns: 9 | |
rows: 3 | |
visibility: | |
- condition: state | |
entity: input_boolean.enable_ha_bambulab_ams_spool_cards | |
state: "on" | |
- type: custom:stack-in-card | |
mode: horizontal | |
keep: | |
outer_padding: true; | |
cards: | |
- type: custom:mushroom-template-card | |
entity: sensor.p1s_externalspool_external_spool | |
primary: > | |
{% if states(config.entity) in [ "", "unknown" ] %}Unknown {{ | |
state_attr(config.entity, 'type') }}{% else %}{{ | |
state_translated(config.entity) }}{% endif %} | |
secondary: | | |
{% if state_attr(config.entity, 'remain') > -1 %}{{ | |
state_attr(config.entity, 'remain') }}%{% endif %} | |
icon: > | |
{% if is_state_attr(config.entity, "active", true) %} | |
mdi:printer-3d-nozzle | |
{% elif is_state_attr(config.entity, 'empty', true) or | |
is_state_attr(config.entity, 'name', "") or | |
is_state_attr(config.entity, 'color', "#00000000") %} | |
mdi:help | |
{% else %} | |
mdi: | |
{% endif %} | |
layout: vertical | |
multiline_secondary: true | |
tap_action: | |
action: more-info | |
card_mod: | |
style: | |
.: | | |
ha-card { height: 140px !important; } | |
mushroom-card { } | |
mushroom-state-item$: | | |
div.container { justify-content: normal; } | |
mushroom-state-info$: | | |
.primary { | |
white-space: pre-wrap!important; | |
height: 60px; | |
font-size: var(--card-secondary-font-size)!important; | |
line-height: var(--card-secondary-line-height)!important; | |
} | |
mushroom-shape-icon$: | | |
.shape { | |
--filament-color: {{ state_attr(config.entity, 'color') }}; | |
display: flex; | |
box-shadow: 0 0 0 5px var(--shape-color) !important; | |
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'name', "") or is_state_attr(config.entity, 'color', "#00000000") %} | |
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>'); | |
background-color: white!important; | |
--icon-color: white; | |
{% else %} | |
background-color: var(--filament-color)!important; | |
--icon-color: var(--filament-color); | |
{% endif %} | |
border-radius: 50% !important; | |
} | |
ha-state-icon$: | | |
@keyframes shake { | |
50% { | |
transform: translate3d(4px, 0, 0); | |
} | |
} | |
ha-icon { | |
{% if is_state_attr(config.entity, "active", true) %} | |
animation: shake 0.2s infinite linear; | |
{% endif %} | |
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5); | |
} | |
grid_options: | |
columns: 3 | |
rows: auto | |
visibility: | |
- condition: state | |
entity: input_boolean.enable_ha_bambulab_ams_spool_cards | |
state: "off" | |
- type: custom:stack-in-card | |
mode: horizontal | |
keep: | |
outer_padding: true; | |
cards: | |
- type: custom:mushroom-template-card | |
entity: sensor.p1s_ams_1_tray_1 | |
primary: > | |
{{ state_translated(config.entity) }}{% if | |
is_state_attr(config.entity, "name", None) %} {{ | |
state_attr(config.entity, 'type') }}{% endif %} | |
secondary: | | |
{% if state_attr(config.entity, 'remain') > -1 %}{{ | |
state_attr(config.entity, 'remain') }}%{% endif %} | |
icon: | | |
{% if is_state_attr(config.entity, "active", true) %} | |
mdi:printer-3d-nozzle | |
{% elif is_state_attr(config.entity, 'empty', true) %} | |
mdi:slash-forward | |
{% elif is_state_attr(config.entity, 'color', "#00000000") %} | |
mdi:help | |
{% else %} | |
mdi: | |
{% endif %} | |
layout: vertical | |
multiline_secondary: true | |
tap_action: | |
action: more-info | |
card_mod: | |
style: | |
.: | | |
ha-card { height: 140px !important; } | |
mushroom-card { } | |
mushroom-state-item$: | | |
div.container { justify-content: normal; } | |
mushroom-state-info$: | | |
.primary { | |
white-space: pre-wrap!important; | |
height: 60px; | |
font-size: var(--card-secondary-font-size)!important; | |
line-height: var(--card-secondary-line-height)!important; | |
} | |
mushroom-shape-icon$: | | |
.shape { | |
--filament-color: {{ state_attr(config.entity, 'color') }}; | |
display: flex; | |
box-shadow: 0 0 0 5px var(--shape-color) !important; | |
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %} | |
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>'); | |
background-color: white!important; | |
--icon-color: white; | |
{% else %} | |
background-color: var(--filament-color)!important; | |
--icon-color: var(--filament-color); | |
{% endif %} | |
border-radius: 50% !important; | |
} | |
ha-state-icon$: | | |
@keyframes shake { | |
50% { | |
transform: translate3d(4px, 0, 0); | |
} | |
} | |
ha-icon { | |
{% if is_state_attr(config.entity, "active", true) %} | |
animation: shake 0.2s infinite linear; | |
{% endif %} | |
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5); | |
} | |
- type: custom:mushroom-template-card | |
entity: sensor.p1s_ams_1_tray_2 | |
primary: > | |
{{ state_translated(config.entity) }}{% if | |
is_state_attr(config.entity, "name", None) %} {{ | |
state_attr(config.entity, 'type') }}{% endif %} | |
secondary: | | |
{% if state_attr(config.entity, 'remain') > -1 %}{{ | |
state_attr(config.entity, 'remain') }}%{% endif %} | |
icon: | | |
{% if is_state_attr(config.entity, "active", true) %} | |
mdi:printer-3d-nozzle | |
{% elif is_state_attr(config.entity, 'empty', true) %} | |
mdi:slash-forward | |
{% elif is_state_attr(config.entity, 'color', "#00000000") %} | |
mdi:help | |
{% else %} | |
mdi: | |
{% endif %} | |
layout: vertical | |
multiline_secondary: true | |
tap_action: | |
action: more-info | |
card_mod: | |
style: | |
.: | | |
ha-card { height: 140px !important; } | |
mushroom-card { } | |
mushroom-state-item$: | | |
div.container { justify-content: normal; } | |
mushroom-state-info$: | | |
.primary { | |
white-space: pre-wrap!important; | |
height: 60px; | |
font-size: var(--card-secondary-font-size)!important; | |
line-height: var(--card-secondary-line-height)!important; | |
} | |
mushroom-shape-icon$: | | |
.shape { | |
--filament-color: {{ state_attr(config.entity, 'color') }}; | |
display: flex; | |
box-shadow: 0 0 0 5px var(--shape-color) !important; | |
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %} | |
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>'); | |
background-color: white!important; | |
--icon-color: white; | |
{% else %} | |
background-color: var(--filament-color)!important; | |
--icon-color: var(--filament-color); | |
{% endif %} | |
border-radius: 50% !important; | |
} | |
ha-state-icon$: | | |
@keyframes shake { | |
50% { | |
transform: translate3d(4px, 0, 0); | |
} | |
} | |
ha-icon { | |
{% if is_state_attr(config.entity, "active", true) %} | |
animation: shake 0.2s infinite linear; | |
{% endif %} | |
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5); | |
} | |
- type: custom:mushroom-template-card | |
entity: sensor.p1s_ams_1_tray_3 | |
primary: > | |
{{ state_translated(config.entity) }}{% if | |
is_state_attr(config.entity, "name", None) %} {{ | |
state_attr(config.entity, 'type') }}{% endif %} | |
secondary: | | |
{% if state_attr(config.entity, 'remain') > -1 %}{{ | |
state_attr(config.entity, 'remain') }}%{% endif %} | |
icon: | | |
{% if is_state_attr(config.entity, "active", true) %} | |
mdi:printer-3d-nozzle | |
{% elif is_state_attr(config.entity, 'empty', true) %} | |
mdi:slash-forward | |
{% elif is_state_attr(config.entity, 'color', "#00000000") %} | |
mdi:help | |
{% else %} | |
mdi: | |
{% endif %} | |
layout: vertical | |
multiline_secondary: true | |
tap_action: | |
action: more-info | |
card_mod: | |
style: | |
.: | | |
ha-card { height: 140px !important; } | |
mushroom-card { } | |
mushroom-state-item$: | | |
div.container { justify-content: normal; } | |
mushroom-state-info$: | | |
.primary { | |
white-space: pre-wrap!important; | |
height: 60px; | |
font-size: var(--card-secondary-font-size)!important; | |
line-height: var(--card-secondary-line-height)!important; | |
} | |
mushroom-shape-icon$: | | |
.shape { | |
--filament-color: {{ state_attr(config.entity, 'color') }}; | |
display: flex; | |
box-shadow: 0 0 0 5px var(--shape-color) !important; | |
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %} | |
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>'); | |
background-color: white!important; | |
--icon-color: white; | |
{% else %} | |
background-color: var(--filament-color)!important; | |
--icon-color: var(--filament-color); | |
{% endif %} | |
border-radius: 50% !important; | |
} | |
ha-state-icon$: | | |
@keyframes shake { | |
50% { | |
transform: translate3d(4px, 0, 0); | |
} | |
} | |
ha-icon { | |
{% if is_state_attr(config.entity, "active", true) %} | |
animation: shake 0.2s infinite linear; | |
{% endif %} | |
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5); | |
} | |
- type: custom:mushroom-template-card | |
entity: sensor.p1s_ams_1_tray_4 | |
primary: > | |
{{ state_translated(config.entity) }}{% if | |
is_state_attr(config.entity, "name", None) %} {{ | |
state_attr(config.entity, 'type') }}{% endif %} | |
secondary: | | |
{% if state_attr(config.entity, 'remain') > -1 %}{{ | |
state_attr(config.entity, 'remain') }}%{% endif %} | |
icon: | | |
{% if is_state_attr(config.entity, "active", true) %} | |
mdi:printer-3d-nozzle | |
{% elif is_state_attr(config.entity, 'empty', true) %} | |
mdi:slash-forward | |
{% elif is_state_attr(config.entity, 'color', "#00000000") %} | |
mdi:help | |
{% else %} | |
mdi: | |
{% endif %} | |
layout: vertical | |
multiline_secondary: true | |
tap_action: | |
action: more-info | |
card_mod: | |
style: | |
.: | | |
ha-card { height: 140px !important; } | |
mushroom-card { } | |
mushroom-state-item$: | | |
div.container { justify-content: normal; } | |
mushroom-state-info$: | | |
.primary { | |
white-space: pre-wrap!important; | |
height: 60px; | |
font-size: var(--card-secondary-font-size)!important; | |
line-height: var(--card-secondary-line-height)!important; | |
} | |
mushroom-shape-icon$: | | |
.shape { | |
--filament-color: {{ state_attr(config.entity, 'color') }}; | |
display: flex; | |
box-shadow: 0 0 0 5px var(--shape-color) !important; | |
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %} | |
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>'); | |
background-color: white!important; | |
--icon-color: white; | |
{% else %} | |
background-color: var(--filament-color)!important; | |
--icon-color: var(--filament-color); | |
{% endif %} | |
border-radius: 50% !important; | |
} | |
ha-state-icon$: | | |
@keyframes shake { | |
50% { | |
transform: translate3d(4px, 0, 0); | |
} | |
} | |
ha-icon { | |
{% if is_state_attr(config.entity, "active", true) %} | |
animation: shake 0.2s infinite linear; | |
{% endif %} | |
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5); | |
} | |
grid_options: | |
columns: 9 | |
rows: auto | |
visibility: | |
- condition: state | |
entity: input_boolean.enable_ha_bambulab_ams_spool_cards | |
state: "off" | |
- type: heading | |
icon: fas:temperature-half | |
heading: Temperatures | |
heading_style: subtitle | |
- type: custom:mini-graph-card | |
name: Nozzle Temp. | |
line_width: 7 | |
font_size: 60 | |
animate: true | |
decimals: 1 | |
points_per_hour: 60 | |
unit: " " | |
show: | |
labels: false | |
points: false | |
state: true | |
fill: false | |
tap_action: | |
action: none | |
state_map: | |
- value: "005" | |
label: "Off" | |
entities: | |
- entity: sensor.p1s_nozzle_target_temperature | |
name: Target | |
state_adaptive_color: true | |
show_state: true | |
show_fill: true | |
show_line: true | |
font_size: 50 | |
smooth: false | |
- entity: sensor.p1s_nozzle_temperature | |
name: Nozzle | |
state_adaptive_color: true | |
show_state: true | |
show_fill: false | |
hours_to_show: 6 | |
grid_options: | |
columns: 6 | |
- type: custom:mini-graph-card | |
name: Bed Temp. | |
line_width: 7 | |
font_size: 60 | |
animate: true | |
decimals: 1 | |
points_per_hour: 60 | |
unit: " " | |
show: | |
labels: false | |
points: false | |
state: true | |
fill: false | |
tap_action: | |
action: none | |
state_map: | |
- value: "005" | |
label: "Off" | |
entities: | |
- entity: sensor.p1s_bed_target_temperature | |
name: Target | |
state_adaptive_color: true | |
show_state: true | |
show_fill: true | |
show_line: true | |
font_size: 50 | |
smooth: false | |
- entity: sensor.p1s_bed_temperature | |
name: Bed | |
state_adaptive_color: true | |
show_state: true | |
show_fill: false | |
hours_to_show: 6 | |
grid_options: | |
columns: 6 | |
- type: grid | |
cards: | |
- type: heading | |
icon: fas:temperature-half | |
heading: Temperature History | |
heading_style: subtitle | |
- chart_type: line | |
period: 5minute | |
type: statistics-graph | |
entities: | |
- entity: sensor.p1s_nozzle_temperature | |
name: Nozzle | |
- entity: sensor.p1s_bed_temperature | |
name: Bed | |
- entity: sensor.p1s_chamber_multi_sensor_temperature | |
name: Chamber | |
- entity: sensor.p1s_ams_1_multi_sensor_temperature | |
name: AMS | |
stat_types: | |
- mean | |
days_to_show: 0.2 | |
- type: heading | |
icon: mdi:fan | |
heading: Fans | |
heading_style: subtitle | |
- chart_type: line | |
period: 5minute | |
type: statistics-graph | |
entities: | |
- entity: sensor.p1s_aux_fan_speed | |
name: Aux | |
- entity: sensor.p1s_cooling_fan_speed | |
name: Cooling | |
- entity: sensor.p1s_chamber_fan_speed | |
name: Chamber | |
- entity: sensor.p1s_heatbreak_fan_speed | |
name: Heat Break | |
stat_types: | |
- mean | |
days_to_show: 0.2 | |
logarithmic_scale: false | |
- type: heading | |
icon: fas:triangle-exclamation | |
heading: Errors History | |
heading_style: subtitle | |
- type: custom:multiple-logbook-card | |
entities: | |
- entity: binary_sensor.p1s_print_error | |
attributes: | |
- value: code | |
- value: error | |
hidden_state: | |
- "off" | |
- unavailable | |
- entity: binary_sensor.p1s_hms_errors | |
attributes: | |
- value: 1-Code | |
label: Code | |
- value: 1-Error | |
label: Error | |
- value: 1-Wiki | |
label: Wiki | |
type: url | |
link_label: Click to visit | |
- value: count | |
hidden_state: | |
- "off" | |
- unavailable | |
show: | |
state: false | |
duration: true | |
start_date: true | |
end_date: false | |
icon: true | |
separator: true | |
entity_name: true | |
custom_logs: false | |
grid_options: | |
columns: 12 | |
subview: true | |
cards: [] | |
badges: [] | |
top_margin: false | |
header: | |
layout: responsive | |
badges_position: bottom |
type: custom:stack-in-card | |
horizontal: true | |
cards: | |
- type: custom:mushroom-template-card | |
primary: | | |
P1S - {{ state_translated("sensor.p1s_current_stage") }} | |
secondary: "{{ state_translated(\"sensor.p1s_task_name\") }}" | |
icon: none | |
icon_color: blue | |
layout: horizontal | |
fill_container: false | |
multiline_secondary: true | |
tap_action: | |
action: navigate | |
navigation_path: /lovelace/p1s | |
card_mod: | |
style: | |
.: | | |
ha-card { | |
dheight: 140px !important; | |
--icon-size: 96px ; | |
} | |
mushroom-card { } | |
mushroom-state-item$: | | |
div.container { | |
justify-content: normal; | |
flex-direction: row-reverse; | |
{% if (states("sensor.p1s_print_progress") | int) == 100 %} | |
padding-bottom: 10px; | |
{% else %} | |
padding-bottom: 0px; | |
{% endif %} | |
} | |
mushroom-state-info$: | | |
.primary { | |
white-space: pre-wrap!important; | |
height: 45px; | |
align-content: flex-end; | |
color: green !important; | |
font-size: 16px !important; | |
} | |
.secondary { | |
} | |
mushroom-shape-icon$: | | |
.shape { | |
display: flex; | |
xbox-shadow: 0 0 0 5px var(--shape-color) !important; | |
background: url("{{ state_attr('image.p1s_cover_image', 'entity_picture') }}"); | |
background: | |
center / contain no-repeat | |
url("{{ state_attr('image.p1s_cover_image', 'entity_picture') }}"), | |
linear-gradient(#999999, #444444); | |
border-radius: 20% !important; | |
} | |
- type: custom:entity-progress-card | |
entity: sensor.p1s_print_progress | |
unit: "%" | |
show_more_info: false | |
bar_size: small | |
bar_color: var(--green-color) | |
layout: horizontal | |
icon: none | |
hide: | |
- icon | |
- name | |
- secondary_info | |
tap_action: | |
action: navigate | |
navigation_path: /lovelace/p1s | |
card_mod: | |
style: | | |
ha-card { | |
height: 10px; | |
margin-top: 0px; | |
margin-bottom: 0px; | |
} | |
visibility: | |
- condition: numeric_state | |
entity: sensor.p1s_print_progress | |
below: 100 | |
- type: markdown | |
content: | | |
<table width=100%> | |
<tr> | |
<td align=left valign=top> | |
<font size=2>Time Left</font><br /> | |
<strong> | |
-{{ (states("sensor.p1s_remaining_time") | int/60) | int }}h{{states("sensor.p1s_remaining_time") | int % 60 }}m | |
</strong> | |
</td> | |
<td align=left valign=top width=78> | |
<font size=2>ETA</font><br /> | |
<strong>{{ as_datetime(states("sensor.p1s_end_time")).strftime("%H:%M") }}</strong> | |
<font size=1>{{ as_datetime(states("sensor.p1s_end_time")).strftime("%b%-d") }}</font> | |
</td> | |
</tr> | |
</table> | |
card_mod: | |
style: | | |
ha-markdown { | |
padding-top: 0px !important; | |
padding-bottom: 4px !important; | |
padding-left: 10px !important; | |
} | |
navigate_to: /lovelace/p1s | |
visibility: | |
- condition: numeric_state | |
entity: sensor.p1s_print_progress | |
below: 100 | |
grid_options: | |
columns: 12 | |
rows: auto |
Attempting to use this dashboard, but having an issue with the middle column not appearing.
Middle column yaml
type: grid
cards:
- type: heading
icon: mdi:camera-control
heading_style: subtitle
badges: []
heading: Status
- show_name: true
show_icon: true
show_state: true
type: glance
entities:
- entity: sensor.bobby_bambu_nozzle_temperature
icon: mdi:printer-3d-nozzle-heat
name: Nozzle
card_mod:
style: |
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
}
state-badge {
background-color: #D5AE43;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: sensor.bobby_bambu_bed_temperature
icon: mdi:train-car-flatbed
name: Print Bed
card_mod:
style: |
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
}
state-badge {
background-color: #4DAE51;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: sensor.bobby_bambu_chamber_multi_sensor_temperature
icon: mdi:printer-3d
name: Chamber
card_mod:
style: |
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
}
state-badge {
background-color: #6594E4;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: select.bobby_bambu_printing_speed
name: Speed
icon: mdi:window-close
card_mod:
style: |
{% set current_sensor = "select.bobby_bambu_printing_speed" %}
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
{% if is_state(current_sensor, "silent") %}
--card-mod-icon: mdi:speedometer-slow;
{% elif is_state(current_sensor, "standard") %}
--card-mod-icon: mdi:speedometer-medium;
{% elif is_state(current_sensor, "sport") %}
--card-mod-icon: mdi:speedometer;
{% elif is_state(current_sensor, "ludicrous") %}
--card-mod-icon: mdi:rocket-launch;
{% else %}
--card-mod-icon: mdi:window-close
{% endif %}
}
state-badge {
background-color: orange;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
state_color: false
card_mod:
style: |
ha-card {
font-size: 12px;
height: 100%
}
ha-card.type-glance .entities {
align-items: flex-start !important;
}
- type: heading
heading: Ext. Spool
heading_style: subtitle
grid_options:
columns: 3
icon: mdi:alpha-e-box
- type: heading
heading: p1s_ams
heading_style: subtitle
grid_options:
columns: 9
badges:
- type: entity
show_state: true
show_icon: true
entity: sensor.bobby_bambu_p1s_ams_1_multi_sensor_temperature
tap_action:
action: more-info
- type: entity
show_state: true
show_icon: true
entity: sensor.bobby_bambu_p1s_ams_1_multi_sensor_humidity
tap_action:
action: more-info
- type: entity
show_state: true
show_icon: true
entity: sensor.bobby_bambu_p1s_ams_1_humidity_index
tap_action:
action: more-info
icon: mdi:alpha-a-box
tap_action:
action: perform-action
perform_action: input_boolean.toggle
target:
entity_id: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
- type: custom:ha-bambulab-spool-card
header: Header Text
subtitle: Subtitle Text
show_header: true
show_type: true
spool: 463cf2384c0f8deb41635045674cde41
card_mod:
style:
.: |
ha-card {
background: var(--ha-card-background, var(--card-background-color, #fff));
-webkit-backdrop-filter: var(--ha-card-backdrop-filter, none);
backdrop-filter: var(--ha-card-backdrop-filter, none);
box-shadow: var(--ha-card-box-shadow, none);
box-sizing: border-box;
border-radius: var(--ha-card-border-radius, 12px);
border-width: var(--ha-card-border-width, 1px);
border-style: solid;
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0));
color: var(--primary-text-color);
display: block;
transition: all .3sease-out;
position: relative;
}
ha-bambulab-spool {
xbackground-color: red!important;
margin: 5px;
}
ha-bambulab-spool $ p1s_ams-popup: |
div.ha-bambulab-spool-card-container {
xbackground-color: cyan;
}
div.ha-bambulab-spool-card-holder {
border: 7px solid rgba(0,0,0,0) !important;
background: none !important;
}
div.ha-bambulab-spool-container {
border: 2px solid rgba(0,0,0,0);
}
div.ha-bambulab-spool-card-holder {
width: 62px;
margin-left: auto;
margin-right: auto;
}
div.ha-bambulab-spool-info {
background: none;
font-weight: 500;
font-size: 12px;
line-height: 16px;
color: var(--card-primary-color);
letter-spacing: 0.1px;
text-overflow: ellipsis;
overflow: hidden;
}
div.v-string-roll {
xbackground-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>') !important;
}
div.v-string-layer {
background-color: rgba(0, 0, 0, 0.1);
}
visibility:
- condition: state
entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "on"
- type: horizontal-stack
cards:
- type: custom:ha-bambulab-p1s_ams-card
entity: ""
header: ""
subtitle: ""
style: vector
p1s_ams: 489dc2f60789a8ab9cacb6acadd201a4
show_type: true
show_info_bar: false
card_mod:
style:
.: |
ha-card {
background: var(--ha-card-background, var(--card-background-color, #fff));
-webkit-backdrop-filter: var(--ha-card-backdrop-filter, none);
backdrop-filter: var(--ha-card-backdrop-filter, none);
box-shadow: var(--ha-card-box-shadow, none);
box-sizing: border-box;
border-radius: var(--ha-card-border-radius, 12px);
border-width: var(--ha-card-border-width, 1px);
border-style: solid;
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0));
color: var(--primary-text-color);
display: block;
transition: all .3sease-out;
position: relative;
}
ha-bambulab-spool {
padding: 0px 0px !important;
}
ha-bambulab-spool $:
p1s_ams-popup: |
div.ha-bambulab-spool-card-container {
xbackground-color: cyan;
}
div.ha-bambulab-spool-card-holder {
border: 7px solid rgba(0,0,0,0) !important;
background: none !important;
}
div.ha-bambulab-spool-container {
border: 2px solid rgba(0,0,0,0);
}
div.ha-bambulab-spool-card-holder {
width: 62px;
margin-left: auto;
margin-right: auto;
}
div.ha-bambulab-spool-info {
background: none;
font-weight: 500;
font-size: 12px;
line-height: 16px;
color: var(--card-primary-color);
letter-spacing: 0.1px;
text-overflow: ellipsis;
overflow: hidden;
}
div.v-string-roll {
xbackground-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>') !important;
}
div.v-string-layer {
background-color: rgba(0, 0, 0, 0.1);
}
grid_options:
columns: 9
rows: 3
visibility:
- condition: state
entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "on"
- type: custom:stack-in-card
mode: horizontal
keep:
outer_padding: true;
cards:
- type: custom:mushroom-template-card
entity: sensor.p1s_eternalspool_external_spool
primary: >
{% if states(config.entity) in [ "", "unknown" ] %}Unknown {{
state_attr(config.entity, 'type') }}{% else %}{{
state_translated(config.entity) }}{% endif %}
secondary: |
{% if state_attr(config.entity, 'remain') > -1 %}{{
state_attr(config.entity, 'remain') }}%{% endif %}
icon: >
{% if is_state_attr(config.entity, "active", true) %}
mdi:printer-3d-nozzle
{% elif is_state_attr(config.entity, 'empty', true) or
is_state_attr(config.entity, 'name', "") or
is_state_attr(config.entity, 'color', "#00000000") %}
mdi:help
{% else %}
mdi:
{% endif %}
layout: vertical
multiline_secondary: true
tap_action:
action: more-info
card_mod:
style:
.: |
ha-card { height: 140px !important; }
mushroom-card { }
mushroom-state-item$: |
div.container { justify-content: normal; }
mushroom-state-info$: |
.primary {
white-space: pre-wrap!important;
height: 60px;
font-size: var(--card-secondary-font-size)!important;
line-height: var(--card-secondary-line-height)!important;
}
mushroom-shape-icon$: |
.shape {
--filament-color: {{ state_attr(config.entity, 'color') }};
display: flex;
box-shadow: 0 0 0 5px var(--shape-color) !important;
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'name', "") or is_state_attr(config.entity, 'color', "#00000000") %}
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>');
background-color: white!important;
--icon-color: white;
{% else %}
background-color: var(--filament-color)!important;
--icon-color: var(--filament-color);
{% endif %}
border-radius: 50% !important;
}
ha-state-icon$: |
@keyframes shake {
50% {
transform: translate3d(4px, 0, 0);
}
}
ha-icon {
{% if is_state_attr(config.entity, "active", true) %}
animation: shake 0.2s infinite linear;
{% endif %}
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
grid_options:
columns: 3
rows: auto
visibility:
- condition: state
entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "off"
- type: custom:stack-in-card
mode: horizontal
keep:
outer_padding: true;
cards:
- type: custom:mushroom-template-card
entity: sensor.p1s_ams_tray_1
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
state_attr(config.entity, 'type') }}{% endif %}
secondary: |
{% if state_attr(config.entity, 'remain') > -1 %}{{
state_attr(config.entity, 'remain') }}%{% endif %}
icon: |
{% if is_state_attr(config.entity, "active", true) %}
mdi:printer-3d-nozzle
{% elif is_state_attr(config.entity, 'empty', true) %}
mdi:slash-forward
{% elif is_state_attr(config.entity, 'color', "#00000000") %}
mdi:help
{% else %}
mdi:
{% endif %}
layout: vertical
multiline_secondary: true
tap_action:
action: more-info
card_mod:
style:
.: |
ha-card { height: 140px !important; }
mushroom-card { }
mushroom-state-item$: |
div.container { justify-content: normal; }
mushroom-state-info$: |
.primary {
white-space: pre-wrap!important;
height: 60px;
font-size: var(--card-secondary-font-size)!important;
line-height: var(--card-secondary-line-height)!important;
}
mushroom-shape-icon$: |
.shape {
--filament-color: {{ state_attr(config.entity, 'color') }};
display: flex;
box-shadow: 0 0 0 5px var(--shape-color) !important;
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %}
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>');
background-color: white!important;
--icon-color: white;
{% else %}
background-color: var(--filament-color)!important;
--icon-color: var(--filament-color);
{% endif %}
border-radius: 50% !important;
}
ha-state-icon$: |
@keyframes shake {
50% {
transform: translate3d(4px, 0, 0);
}
}
ha-icon {
{% if is_state_attr(config.entity, "active", true) %}
animation: shake 0.2s infinite linear;
{% endif %}
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
- type: custom:mushroom-template-card
entity: sensor.p1s_ams_tray_2
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
state_attr(config.entity, 'type') }}{% endif %}
secondary: |
{% if state_attr(config.entity, 'remain') > -1 %}{{
state_attr(config.entity, 'remain') }}%{% endif %}
icon: |
{% if is_state_attr(config.entity, "active", true) %}
mdi:printer-3d-nozzle
{% elif is_state_attr(config.entity, 'empty', true) %}
mdi:slash-forward
{% elif is_state_attr(config.entity, 'color', "#00000000") %}
mdi:help
{% else %}
mdi:
{% endif %}
layout: vertical
multiline_secondary: true
tap_action:
action: more-info
card_mod:
style:
.: |
ha-card { height: 140px !important; }
mushroom-card { }
mushroom-state-item$: |
div.container { justify-content: normal; }
mushroom-state-info$: |
.primary {
white-space: pre-wrap!important;
height: 60px;
font-size: var(--card-secondary-font-size)!important;
line-height: var(--card-secondary-line-height)!important;
}
mushroom-shape-icon$: |
.shape {
--filament-color: {{ state_attr(config.entity, 'color') }};
display: flex;
box-shadow: 0 0 0 5px var(--shape-color) !important;
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %}
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>');
background-color: white!important;
--icon-color: white;
{% else %}
background-color: var(--filament-color)!important;
--icon-color: var(--filament-color);
{% endif %}
border-radius: 50% !important;
}
ha-state-icon$: |
@keyframes shake {
50% {
transform: translate3d(4px, 0, 0);
}
}
ha-icon {
{% if is_state_attr(config.entity, "active", true) %}
animation: shake 0.2s infinite linear;
{% endif %}
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
- type: custom:mushroom-template-card
entity: sensor.p1s_ams_tray_3
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
state_attr(config.entity, 'type') }}{% endif %}
secondary: |
{% if state_attr(config.entity, 'remain') > -1 %}{{
state_attr(config.entity, 'remain') }}%{% endif %}
icon: |
{% if is_state_attr(config.entity, "active", true) %}
mdi:printer-3d-nozzle
{% elif is_state_attr(config.entity, 'empty', true) %}
mdi:slash-forward
{% elif is_state_attr(config.entity, 'color', "#00000000") %}
mdi:help
{% else %}
mdi:
{% endif %}
layout: vertical
multiline_secondary: true
tap_action:
action: more-info
card_mod:
style:
.: |
ha-card { height: 140px !important; }
mushroom-card { }
mushroom-state-item$: |
div.container { justify-content: normal; }
mushroom-state-info$: |
.primary {
white-space: pre-wrap!important;
height: 60px;
font-size: var(--card-secondary-font-size)!important;
line-height: var(--card-secondary-line-height)!important;
}
mushroom-shape-icon$: |
.shape {
--filament-color: {{ state_attr(config.entity, 'color') }};
display: flex;
box-shadow: 0 0 0 5px var(--shape-color) !important;
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %}
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>');
background-color: white!important;
--icon-color: white;
{% else %}
background-color: var(--filament-color)!important;
--icon-color: var(--filament-color);
{% endif %}
border-radius: 50% !important;
}
ha-state-icon$: |
@keyframes shake {
50% {
transform: translate3d(4px, 0, 0);
}
}
ha-icon {
{% if is_state_attr(config.entity, "active", true) %}
animation: shake 0.2s infinite linear;
{% endif %}
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
- type: custom:mushroom-template-card
entity: sensor.p1s_ams_tray_4
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
state_attr(config.entity, 'type') }}{% endif %}
secondary: |
{% if state_attr(config.entity, 'remain') > -1 %}{{
state_attr(config.entity, 'remain') }}%{% endif %}
icon: |
{% if is_state_attr(config.entity, "active", true) %}
mdi:printer-3d-nozzle
{% elif is_state_attr(config.entity, 'empty', true) %}
mdi:slash-forward
{% elif is_state_attr(config.entity, 'color', "#00000000") %}
mdi:help
{% else %}
mdi:
{% endif %}
layout: vertical
multiline_secondary: true
tap_action:
action: more-info
card_mod:
style:
.: |
ha-card { height: 140px !important; }
mushroom-card { }
mushroom-state-item$: |
div.container { justify-content: normal; }
mushroom-state-info$: |
.primary {
white-space: pre-wrap!important;
height: 60px;
font-size: var(--card-secondary-font-size)!important;
line-height: var(--card-secondary-line-height)!important;
}
mushroom-shape-icon$: |
.shape {
--filament-color: {{ state_attr(config.entity, 'color') }};
display: flex;
box-shadow: 0 0 0 5px var(--shape-color) !important;
{% if is_state_attr(config.entity, 'empty', true) or is_state_attr(config.entity, 'color', "#00000000") %}
background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>');
background-color: white!important;
--icon-color: white;
{% else %}
background-color: var(--filament-color)!important;
--icon-color: var(--filament-color);
{% endif %}
border-radius: 50% !important;
}
ha-state-icon$: |
@keyframes shake {
50% {
transform: translate3d(4px, 0, 0);
}
}
ha-icon {
{% if is_state_attr(config.entity, "active", true) %}
animation: shake 0.2s infinite linear;
{% endif %}
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
grid_options:
columns: 9
rows: auto
visibility:
- condition: state
entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "off"
- type: heading
icon: fas:temperature-half
heading: Temperatures
heading_style: subtitle
- type: custom:mini-graph-card
name: Nozzle Temp.
line_width: 7
font_size: 60
animate: true
decimals: 1
points_per_hour: 60
unit: " "
show:
labels: false
points: false
state: true
fill: false
tap_action:
action: none
state_map:
- value: "005"
label: "Off"
entities:
- entity: sensor.bobby_bambu_nozzle_target_temperature
name: Target
state_adaptive_color: true
show_state: true
show_fill: true
show_line: true
font_size: 50
smooth: false
- entity: sensor.bobby_bambu_nozzle_temperature
name: Nozzle
state_adaptive_color: true
show_state: true
show_fill: false
hours_to_show: 6
grid_options:
columns: 6
- type: custom:mini-graph-card
name: Bed Temp.
line_width: 7
font_size: 60
animate: true
decimals: 1
points_per_hour: 60
unit: " "
show:
labels: false
points: false
state: true
fill: false
tap_action:
action: none
state_map:
- value: "005"
label: "Off"
entities:
- entity: sensor.bobby_bambu_target_bed_temperature
name: Target
state_adaptive_color: true
show_state: true
show_fill: true
show_line: true
font_size: 50
smooth: false
- entity: sensor.bobby_bambu_bed_temperature
name: Bed
state_adaptive_color: true
show_state: true
show_fill: false
hours_to_show: 6
grid_options:
columns: 6
I've checked and tested your config. What I noticed is some of the cards are not displayed correctly. But nothing dramatic as "invisible middle column". I suggest you check the diff below and verify your changes. There are some obvious find/replace errors that cause some unwanted changes in card_mod configs
You should only change the entity names and device id's. here is a list for you to see what you need to check
This is the device id for AMS Unit. You can use the GUI editor of the AMS card to change this one.
- 489dc2f60789a8ab9cacb6acadd201a4
These are the entities you should replace:
- select.p1s_printing_speed
- sensor.p1s_ams_1_humidity_index
- sensor.p1s_ams_1_tray_1
- sensor.p1s_ams_1_tray_2
- sensor.p1s_ams_1_tray_3
- sensor.p1s_ams_1_tray_4
- sensor.p1s_bed_target_temperature
- sensor.p1s_bed_temperature
- sensor.p1s_externalspool_external_spool
- sensor.p1s_nozzle_target_temperature
- sensor.p1s_nozzle_temperature
These are zigbee devices in the chamber and the AMS unit.
- sensor.p1s_ams_1_multi_sensor_humidity
- sensor.p1s_ams_1_multi_sensor_temperature
- sensor.p1s_chamber_multi_sensor_temperature
And this is the boolean (toggle) helper you need to create, you can use the same name:
- input_boolean.enable_ha_bambulab_ams_spool_cards
--- middle-orig.yaml 2025-03-19 12:25:59.766911461 +0000
+++ middle-bobby.yaml 2025-03-19 12:25:42.245551316 +0000
@@ -10,7 +10,7 @@
show_state: true
type: glance
entities:
- - entity: sensor.p1s_nozzle_temperature
+ - entity: sensor.bobby_bambu_nozzle_temperature
icon: mdi:printer-3d-nozzle-heat
name: Nozzle
card_mod:
@@ -27,7 +27,7 @@
white-space: unset !important;
text-wrap: balance !important;
}
- - entity: sensor.p1s_bed_temperature
+ - entity: sensor.bobby_bambu_bed_temperature
icon: mdi:train-car-flatbed
name: Print Bed
card_mod:
@@ -44,7 +44,7 @@
white-space: unset !important;
text-wrap: balance !important;
}
- - entity: sensor.p1s_chamber_multi_sensor_temperature
+ - entity: sensor.bobby_bambu_chamber_multi_sensor_temperature
icon: mdi:printer-3d
name: Chamber
card_mod:
@@ -61,12 +61,12 @@
white-space: unset !important;
text-wrap: balance !important;
}
- - entity: select.p1s_printing_speed
+ - entity: select.bobby_bambu_printing_speed
name: Speed
icon: mdi:window-close
card_mod:
style: |
- {% set current_sensor = "select.p1s_printing_speed" %}
+ {% set current_sensor = "select.bobby_bambu_printing_speed" %}
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
@@ -107,7 +107,7 @@
columns: 3
icon: mdi:alpha-e-box
- type: heading
- heading: AMS
+ heading: p1s_ams
heading_style: subtitle
grid_options:
columns: 9
@@ -115,19 +115,19 @@
- type: entity
show_state: true
show_icon: true
- entity: sensor.p1s_ams_1_multi_sensor_temperature
+ entity: sensor.bobby_bambu_p1s_ams_1_multi_sensor_temperature
tap_action:
action: more-info
- type: entity
show_state: true
show_icon: true
- entity: sensor.p1s_ams_1_multi_sensor_humidity
+ entity: sensor.bobby_bambu_p1s_ams_1_multi_sensor_humidity
tap_action:
action: more-info
- type: entity
show_state: true
show_icon: true
- entity: sensor.p1s_ams_1_humidity_index
+ entity: sensor.bobby_bambu_p1s_ams_1_humidity_index
tap_action:
action: more-info
icon: mdi:alpha-a-box
@@ -135,7 +135,7 @@
action: perform-action
perform_action: input_boolean.toggle
target:
- entity_id: input_boolean.enable_ha_bambulab_ams_spool_cards
+ entity_id: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
- type: custom:ha-bambulab-spool-card
header: Header Text
subtitle: Subtitle Text
@@ -164,7 +164,7 @@
xbackground-color: red!important;
margin: 5px;
}
- ha-bambulab-spool $ ams-popup: |
+ ha-bambulab-spool $ p1s_ams-popup: |
div.ha-bambulab-spool-card-container {
xbackground-color: cyan;
}
@@ -202,16 +202,16 @@
}
visibility:
- condition: state
- entity: input_boolean.enable_ha_bambulab_ams_spool_cards
+ entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "on"
- type: horizontal-stack
cards:
- - type: custom:ha-bambulab-ams-card
+ - type: custom:ha-bambulab-p1s_ams-card
entity: ""
header: ""
subtitle: ""
style: vector
- ams: 489dc2f60789a8ab9cacb6acadd201a4
+ p1s_ams: 489dc2f60789a8ab9cacb6acadd201a4
show_type: true
show_info_bar: false
card_mod:
@@ -236,7 +236,7 @@
padding: 0px 0px !important;
}
ha-bambulab-spool $:
- ams-popup: |
+ p1s_ams-popup: |
div.ha-bambulab-spool-card-container {
xbackground-color: cyan;
}
@@ -276,7 +276,7 @@
rows: 3
visibility:
- condition: state
- entity: input_boolean.enable_ha_bambulab_ams_spool_cards
+ entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "on"
- type: custom:stack-in-card
mode: horizontal
@@ -284,7 +284,7 @@
outer_padding: true;
cards:
- type: custom:mushroom-template-card
- entity: sensor.p1s_externalspool_external_spool
+ entity: sensor.p1s_eternalspool_external_spool
primary: >
{% if states(config.entity) in [ "", "unknown" ] %}Unknown {{
state_attr(config.entity, 'type') }}{% else %}{{
@@ -358,7 +358,7 @@
rows: auto
visibility:
- condition: state
- entity: input_boolean.enable_ha_bambulab_ams_spool_cards
+ entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "off"
- type: custom:stack-in-card
mode: horizontal
@@ -366,7 +366,7 @@
outer_padding: true;
cards:
- type: custom:mushroom-template-card
- entity: sensor.p1s_ams_1_tray_1
+ entity: sensor.p1s_ams_tray_1
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
@@ -430,7 +430,7 @@
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
- type: custom:mushroom-template-card
- entity: sensor.p1s_ams_1_tray_2
+ entity: sensor.p1s_ams_tray_2
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
@@ -494,7 +494,7 @@
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
- type: custom:mushroom-template-card
- entity: sensor.p1s_ams_1_tray_3
+ entity: sensor.p1s_ams_tray_3
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
@@ -558,7 +558,7 @@
filter: invert(1) grayscale(1) brightness(500%) opacity(0.5);
}
- type: custom:mushroom-template-card
- entity: sensor.p1s_ams_1_tray_4
+ entity: sensor.p1s_ams_tray_4
primary: >
{{ state_translated(config.entity) }}{% if
is_state_attr(config.entity, "name", None) %} {{
@@ -626,7 +626,7 @@
rows: auto
visibility:
- condition: state
- entity: input_boolean.enable_ha_bambulab_ams_spool_cards
+ entity: input_boolean.enable_ha_bambulab_p1s_ams_spool_cards
state: "off"
- type: heading
icon: fas:temperature-half
@@ -651,7 +651,7 @@
- value: "005"
label: "Off"
entities:
- - entity: sensor.p1s_nozzle_target_temperature
+ - entity: sensor.bobby_bambu_nozzle_target_temperature
name: Target
state_adaptive_color: true
show_state: true
@@ -659,7 +659,7 @@
show_line: true
font_size: 50
smooth: false
- - entity: sensor.p1s_nozzle_temperature
+ - entity: sensor.bobby_bambu_nozzle_temperature
name: Nozzle
state_adaptive_color: true
show_state: true
@@ -686,7 +686,7 @@
- value: "005"
label: "Off"
entities:
- - entity: sensor.p1s_bed_target_temperature
+ - entity: sensor.bobby_bambu_target_bed_temperature
name: Target
state_adaptive_color: true
show_state: true
@@ -694,7 +694,7 @@
show_line: true
font_size: 50
smooth: false
- - entity: sensor.p1s_bed_temperature
+ - entity: sensor.bobby_bambu_bed_temperature
name: Bed
state_adaptive_color: true
show_state: true
Thanks for the help, I'd caught the copy/paste errors and fixed them. I had missed the AMS device id. I was able to get everything but the toggle to work. It sort of works. I can see the round icons but when I toggle to the spool icons, I get a broken card. "Custom element doesn't exist: ha-bambulab-p1s_ams-card"
Not a huge deal, just an oddity.
that is an another copy paste error probably. find ha-bambulab-p1s_ams-card
and replace with ha-bambulab-ams-card
That puts me one step closer, but the issue is now clearly a me problem. Now 'You need to select an AMS' is the error, but I have the device ID from the AMS url in home assistant.
did you check the yaml key? in your first config above it is p1s_ams: xxxxx
but it should be ams: xxxx
did you check the yaml key? in your first config above it is
p1s_ams: xxxxx
but it should beams: xxxx
I did. I started from scratch to make sure I hadn't missed everything and now it's 99.99999% correct. The spool card works, with the exception of the external spool card being missing/hidden.
I appreciate all the troubleshoot. Hopefully other learn from my mistakes.
no worries. and I'm sure you'll figure it out. good luck and have fun
Thank you very much. Works great! :)
Not sure why, but my Bambulab created entities with German entity names. So if someone else wants to save same time, here is the code with german entity names. You only need to change the printers name (mine is r2d2).
type: sections
title: R2D2
path: r2d2
sections:
- type: grid
cards:
- type: heading
heading_style: subtitle
badges:
- type: entity
show_state: false
show_icon: true
entity: sensor.r2d2_name_der_aufgabe
color: "#ff000000"
visibility:
- condition: screen
media_query: "(min-width: 1024px)"
- type: custom:mushroom-template-card
primary: >-
Printer State: {{ state_translated("binary_sensor.r2d2_druckfehler")
}}
secondary: >-
Error Code: {{ state_attr("binary_sensor.r2d2_druckfehler",
"code")|replace("_", "-") }}
{% if state_attr("binary_sensor.r2d2_druckfehler", "error") != None
and state_attr("binary_sensor.r2d2_druckfehler", "error") != "" %}
({{ state_attr("binary_sensor.r2d2_druckfehler", "error") }})
{% endif %}
icon: mdi:information-slab-circle
entity: binary_sensor.r2d2_druckfehler
icon_color: red
fill_container: true
grid_options:
columns: full
visibility:
- condition: state
entity: binary_sensor.r2d2_druckfehler
state_not: "off"
tap_action:
action: more-info
- type: custom:mushroom-template-card
primary: "HMS State: {{ state_translated(\"binary_sensor.r2d2_hms_fehler\") }}"
secondary: >-
Error Code: {{ state_attr("binary_sensor.r2d2_hms_fehler",
"1-Code")|replace("_", "-") }}
{% if state_attr("binary_sensor.r2d2_hms_fehler", "1-Error") != None
and state_attr("binary_sensor.r2d2_hms_fehler", "error") != ""
and state_attr("binary_sensor.r2d2_hms_fehler", "error") != "unknown" %}
({{ state_attr("binary_sensor.r2d2_hms_fehler", "error") }})
{% endif %}
icon: mdi:information-slab-circle
entity: binary_sensor.r2d2_hms_fehler
icon_color: red
fill_container: true
grid_options:
columns: full
visibility:
- condition: state
entity: binary_sensor.r2d2_hms_fehler
state_not: "off"
tap_action:
action: more-info
column_span: 3
- type: grid
cards:
- type: heading
icon: mdi:printer-3d
heading_style: subtitle
heading: Printer
badges:
- type: entity
show_state: true
show_icon: true
entity: light.r2d2_druckraumbeleuchtung
tap_action:
action: toggle
name: Light
state_content:
- name
- state
color: state
- type: entity
show_state: true
show_icon: true
entity: sensor.r2d2_name_der_aufgabe
icon: mdi:printer-3d
color: state
- show_state: false
show_name: true
camera_view: auto
type: picture-entity
entity: camera.r2d2_kamera
camera_image: camera.r2d2_kamera
tap_action:
action: none
hold_action:
action: none
- type: picture
image_entity: image.r2d2_titelbild
grid_options:
columns: 6
rows: 4
theme: macOS Theme
card_mod:
style: |
ha-card {
align-content: center;
background: linear-gradient(#999999, #111111);
//background: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>');
}
img {
filter: drop-shadow(0px 5px 2px #00000055);
}
- type: custom:stack-in-card
horizontal: true
cards:
- type: markdown
content: >
<div><font size="5">{{
states.sensor.r2d2_name_der_aufgabe.state[:60] }}</font></div>
<table width=100%><tr><td align=left>Printed layers<td
align=right><font color=#77fc54 ; size="4">{{
states.sensor.r2d2_aktuelle_schicht.state}}</font>/{{states.sensor.r2d2_gesamtzahl_der_schichten.state}}</td></tr></table>
<table width=100%><tr> <td align=left><font
size="5";color=#77fc54>{{
states.sensor.r2d2_druckfortschritt.state}}%<td align=right> {%
if (states.sensor.r2d2_verbleibende_zeit.state | int) == 0 %}
Success
{% else %}
<font color=#959595>-{{(states.sensor.r2d2_verbleibende_zeit.state | int/60) | int }}h{{ states.sensor.r2d2_verbleibende_zeit.state| int % 60 }}m
{% endif %} </td> </tr></table>
card_mod:
style:
.: |
ha-card {
position: absolute;
top: 0px;
}
ha-markdown:
$: |
div {
height: 135px;
overflow: hidden;
word-break: break-words;
hyphens: auto!important;
hyphenate-character: " ";
}
grid_options:
columns: 6
rows: 3
- type: custom:entity-progress-card
entity: sensor.r2d2_druckfortschritt
unit: "%"
show_more_info: false
bar_size: small
bar_color: var(--green-color)
layout: horizontal
icon: none
hide:
- icon
- name
- secondary_info
grid_options:
columns: 6
rows: 1
card_mod:
style: |
ha-card {
height: 100%;
align-content: end;
}
grid_options:
columns: 6
rows: 4
- type: custom:ha-bambulab-print_control-card
printer: YOURPRINTERIDNUMBER
grid_options:
columns: full
rows: auto
card_mod:
style: |
div.control-container {
width: 100%;
overflow: hidden;
}
div.buttons-container {
gap: 0px
}
- type: custom:mushroom-fan-card
entity: fan.r2d2_druckraumlufter
name: Chamber
grid_options:
columns: 4
rows: 1
tap_action:
action: more-info
icon_animation: true
- type: custom:mushroom-fan-card
entity: fan.r2d2_bauteillufter
name: Aux
grid_options:
columns: 4
rows: 1
tap_action:
action: more-info
icon_animation: true
- type: custom:mushroom-fan-card
entity: fan.r2d2_druckkopflufter
name: Cooling
grid_options:
columns: 4
rows: 1
tap_action:
action: more-info
icon_animation: true
- type: grid
cards:
- type: heading
icon: mdi:camera-control
heading_style: subtitle
badges: []
heading: Status
- show_name: true
show_icon: true
show_state: true
type: glance
entities:
- entity: sensor.r2d2_temperatur_der_duse
icon: mdi:printer-3d-nozzle-heat
name: Nozzle
card_mod:
style: |
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
}
state-badge {
background-color: #D5AE43;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: sensor.r2d2_druckbetttemperatur
icon: mdi:train-car-flatbed
name: Print Bed
card_mod:
style: |
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
}
state-badge {
background-color: #4DAE51;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
- entity: select.r2d2_druckgeschwindigkeit
name: Speed
icon: mdi:window-close
card_mod:
style: |
{% set current_sensor = "select.r2d2_druckgeschwindigkeit" %}
:host {
--paper-item-icon-color: white;
--icon-primary-color: white;
{% if is_state(current_sensor, "silent") %}
--card-mod-icon: mdi:speedometer-slow;
{% elif is_state(current_sensor, "standard") %}
--card-mod-icon: mdi:speedometer-medium;
{% elif is_state(current_sensor, "sport") %}
--card-mod-icon: mdi:speedometer;
{% elif is_state(current_sensor, "ludicrous") %}
--card-mod-icon: mdi:rocket-launch;
{% else %}
--card-mod-icon: mdi:window-close
{% endif %}
}
state-badge {
background-color: orange;
border-radius: 50%;
}
div {
white-space: unset !important;
text-wrap: balance !important;
}
state_color: false
card_mod:
style: |
ha-card {
font-size: 12px;
height: 100%
}
ha-card.type-glance .entities {
align-items: flex-start !important;
}
- type: heading
heading: Ext. Spool
heading_style: subtitle
grid_options:
columns: 3
icon: mdi:alpha-e-box
- type: heading
heading: AMS
heading_style: subtitle
grid_options:
columns: 9
badges:
- type: entity
show_state: true
show_icon: true
entity: sensor.klimasensor_aqara_ams_temperature
tap_action:
action: more-info
- type: entity
show_state: true
show_icon: true
entity: sensor.klimasensor_aqara_ams_humidity
tap_action:
action: more-info
- type: entity
show_state: true
show_icon: true
entity: sensor.r2d2_ams_index_der_luftfeuchtigkeit
tap_action:
action: more-info
icon: mdi:alpha-a-box
tap_action:
action: perform-action
perform_action: input_boolean.toggle
target:
entity_id: input_boolean.enable_ha_bambulab_ams_spool_cards
- type: custom:ha-bambulab-spool-card
header: Header Text
subtitle: Subtitle Text
show_header: true
show_type: true
spool: ac30f56e77d5793f13fe04b7ac417b37
card_mod:
style:
.: |
ha-card {
background: var(--ha-card-background, var(--card-background-color, #fff));
-webkit-backdrop-filter: var(--ha-card-backdrop-filter, none);
backdrop-filter: var(--ha-card-backdrop-filter, none);
box-shadow: var(--ha-card-box-shadow, none);
box-sizing: border-box;
border-radius: var(--ha-card-border-radius, 12px);
border-width: var(--ha-card-border-width, 1px);
border-style: solid;
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0));
color: var(--primary-text-color);
display: block;
transition: all .3sease-out;
position: relative;
}
ha-bambulab-spool {
xbackground-color: red!important;
margin: 5px;
}
ha-bambulab-spool $ ams-popup: |
div.ha-bambulab-spool-card-container {
xbackground-color: cyan;
}
div.ha-bambulab-spool-card-holder {
border: 7px solid rgba(0,0,0,0) !important;
background: none !important;
}
div.ha-bambulab-spool-container {
border: 2px solid rgba(0,0,0,0);
}
div.ha-bambulab-spool-card-holder {
width: 62px;
margin-left: auto;
margin-right: auto;
}
div.ha-bambulab-spool-info {
background: none;
font-weight: 500;
font-size: 12px;
line-height: 16px;
color: var(--card-primary-color);
letter-spacing: 0.1px;
text-overflow: ellipsis;
overflow: hidden;
}
div.v-string-roll {
xbackground-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>') !important;
}
div.v-string-layer {
background-color: rgba(0, 0, 0, 0.1);
}
visibility:
- condition: state
entity: input_boolean.enable_ha_bambulab_ams_spool_cards
state: "on"
- type: horizontal-stack
cards:
- type: custom:ha-bambulab-ams-card
entity: ""
header: ""
subtitle: ""
style: vector
ams: 6ebf5d1044a2ee0636ad0399710b566e
show_type: true
show_info_bar: false
card_mod:
style:
.: |
ha-card {
background: var(--ha-card-background, var(--card-background-color, #fff));
-webkit-backdrop-filter: var(--ha-card-backdrop-filter, none);
backdrop-filter: var(--ha-card-backdrop-filter, none);
box-shadow: var(--ha-card-box-shadow, none);
box-sizing: border-box;
border-radius: var(--ha-card-border-radius, 12px);
border-width: var(--ha-card-border-width, 1px);
border-style: solid;
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0));
color: var(--primary-text-color);
display: block;
transition: all .3sease-out;
position: relative;
}
ha-bambulab-spool {
padding: 0px 0px !important;
}
ha-bambulab-spool $:
ams-popup: |
div.ha-bambulab-spool-card-container {
xbackground-color: cyan;
}
div.ha-bambulab-spool-card-holder {
border: 7px solid rgba(0,0,0,0) !important;
background: none !important;
}
div.ha-bambulab-spool-container {
border: 2px solid rgba(0,0,0,0);
}
div.ha-bambulab-spool-card-holder {
width: 62px;
margin-left: auto;
margin-right: auto;
}
div.ha-bambulab-spool-info {
background: none;
font-weight: 500;
font-size: 12px;
line-height: 16px;
color: var(--card-primary-color);
letter-spacing: 0.1px;
text-overflow: ellipsis;
overflow: hidden;
}
div.v-string-roll {
xbackground-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 4 4"><rect width="5" height="5" fill="%23ffffff50" /><path d="M0,0V5H1V0zM2,0V5H3V0zM4,0V5H5V0zM0,0H5V1H0zM0,2H5V3H0zM0,4H5V5H0z" fill="%23aaaaaa50" fill-rule="evenodd"/></svg>') !important;
}
div.v-string-layer {
background-color: rgba(0, 0, 0, 0.1);
}
grid_options:
columns: 9
rows: 3
visibility:
- condition: state
entity: input_boolean.enable_ha_bambulab_ams_spool_cards
state: "on"
- type: heading
icon: fas:temperature-half
heading: Temperatures
heading_style: subtitle
- type: custom:mini-graph-card
name: Nozzle Temp.
line_width: 7
font_size: 60
animate: true
decimals: 1
points_per_hour: 60
unit: " "
show:
labels: false
points: false
state: true
fill: false
tap_action:
action: none
state_map:
- value: "005"
label: "Off"
entities:
- entity: sensor.r2d2_zieltemperatur_der_duse
name: Target
state_adaptive_color: true
show_state: true
show_fill: true
show_line: true
font_size: 50
smooth: false
- entity: sensor.r2d2_temperatur_der_duse
name: Nozzle
state_adaptive_color: true
show_state: true
show_fill: false
hours_to_show: 6
grid_options:
columns: 6
- type: custom:mini-graph-card
name: Bed Temp.
line_width: 7
font_size: 60
animate: true
decimals: 1
points_per_hour: 60
unit: " "
show:
labels: false
points: false
state: true
fill: false
tap_action:
action: none
state_map:
- value: "005"
label: "Off"
entities:
- entity: sensor.r2d2_druckbetttemperatur
name: Target
state_adaptive_color: true
show_state: true
show_fill: true
show_line: true
font_size: 50
smooth: false
- entity: sensor.r2d2_druckbetttemperatur
name: Bed
state_adaptive_color: true
show_state: true
show_fill: false
hours_to_show: 6
grid_options:
columns: 6
- type: grid
cards:
- type: heading
icon: fas:temperature-half
heading: Temperature History
heading_style: subtitle
- chart_type: line
period: 5minute
type: statistics-graph
entities:
- entity: sensor.r2d2_temperatur_der_duse
name: Nozzle
- entity: sensor.r2d2_druckbetttemperatur
name: Bed
- entity: sensor.r2d2_chamber_multi_sensor_temperature
name: Chamber
- entity: sensor.r2d2_ams_1_multi_sensor_temperature
name: AMS
stat_types:
- mean
days_to_show: 0.2
- type: heading
icon: mdi:fan
heading: Fans
heading_style: subtitle
- chart_type: line
period: 5minute
type: statistics-graph
entities:
- entity: sensor.r2d2_bauteillufterdrehzahl
name: Aux
- entity: sensor.r2d2_druckkopflufterdrehzahl
name: Cooling
- entity: sensor.r2d2_druckraumlufterdrehzahl
name: Chamber
- entity: sensor.r2d2_hotendlufterdrehzahl
name: Heat Break
stat_types:
- mean
days_to_show: 0.2
logarithmic_scale: false
- type: heading
icon: fas:triangle-exclamation
heading: Errors History
heading_style: subtitle
- type: custom:multiple-logbook-card
entities:
- entity: binary_sensor.r2d2_druckfehler
attributes:
- value: code
- value: error
hidden_state:
- "off"
- unavailable
- entity: binary_sensor.r2d2_hms_fehler
attributes:
- value: 1-Code
label: Code
- value: 1-Error
label: Error
- value: 1-Wiki
label: Wiki
type: url
link_label: Click to visit
- value: count
hidden_state:
- "off"
- unavailable
show:
state: false
duration: true
start_date: true
end_date: false
icon: true
separator: true
entity_name: true
custom_logs: false
grid_options:
columns: 12
subview: false
cards: []
badges: []
top_margin: false
header:
layout: responsive
badges_position: bottom
visible:
- user: a487127ce40c4fe49b79fad0fb801186
icon: mdi:printer-3d
theme: Mushroom
max_columns: 4
Hey, is there a way to sort/reduce logbook failures, that are not really relevant?
In the docs i did not found some clever advice, at least, i have no working yaml yet.:
Multiple entities Logbook Card options
I think there is. check the hidden_state
in the following example. it will hide when the 1-Code
attribute has the value HMS_0C00_0300_0003_000B
in binary_sensor.p1s_hms_errors
Or you can use state maps to change the icon and display some codes as "informational" maybe?
type: custom:multiple-logbook-card
entities:
- entity: binary_sensor.p1s_print_error
attributes:
- value: code
label: "Code: "
- value: error
label: "Error: "
hidden_state:
- "off"
- unavailable
- entity: binary_sensor.p1s_hms_errors
attributes:
- value: 1-Code
label: "Code:"
- value: 1-Error
label: "Error:"
- value: 1-Wiki
label: "Wiki:"
type: url
link_label: Click to visit
- value: count
hidden_state:
- "off"
- unavailable
- attribute:
name: "1-Code"
value: "HMS_0C00_0300_0003_000B"
show:
state: false
duration: true
start_date: true
end_date: false
icon: true
separator: true
entity_name: true
custom_logs: false
Required integrations & cards
Special Thanks
Other than the great people behind the components above, I got my inspiration for the dashboard design from @bbbenji's dashboard that they shared on https://community.home-assistant.io/t/my-bambu-lab-x1c-dashboard-automations/665646
Installation
Install all the required cards above if not already installed. All the cards were the latest versions as of posting this gist. Please also note that:
Dashboard
Optional
Toggle
helper namedinput_boolean.enable_ha_bambulab_ams_spool_cards
. the ha-bambulab spool and AMS cards have the option to update the spool and AMS filament types, and the round card looks better.Progress Card
Screenshots