Last active
July 25, 2025 13:20
-
-
Save eodabas/880612a39c4ff04e573dc921ff3aabdf to your computer and use it in GitHub Desktop.
My Home Assistant Dashboard for my Bambulab P1S Printer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
I got the card working, but am still looking for mere info on the sensor states.
Thank you!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Sorry for the weird formatting.
chris