This commit is contained in:
Home Assistant Version Control
2026-10-08 17:58:54 +00:00
parent fbbb4e5e1d
commit 2cfd769372
4 changed files with 1816 additions and 125 deletions
@@ -0,0 +1,924 @@
# ha_mcp_backup
schema_version: 1
domain: dashboard
entity_id: sparkx-i7
captured: '2026-10-08T17:58:47.063357+00:00'
tool: ha_config_set_dashboard
config:
views:
- max_columns: 4
path: print
sections:
- cards:
- bed: sensor.sparkx_i7_bed_temperature
camera: camera.sparkx_i7_printer_camera
grid_options:
columns: full
layer: sensor.sparkx_i7_working_layer
light: light.sparkx_i7_light
name: SparkX i7
nozzle: sensor.sparkx_i7_nozzle_temperature
pause_btn: button.sparkx_i7_pause_print
progress: sensor.sparkx_i7_print_progress
resume_btn: button.sparkx_i7_resume_print
status: sensor.sparkx_i7_print_status
stop_btn: button.sparkx_i7_stop_print
time_left: sensor.sparkx_i7_print_time_left
total_layers: sensor.sparkx_i7_total_layers
type: custom:k-printer-card
- grid_options:
columns: full
type: custom:webrtc-camera
ui: true
url: octoprint
- grid_options:
columns: full
type: custom:webrtc-camera
ui: true
url: octoprint2
- camera_image: camera.sparkx_i7_printer_camera
camera_view: live
entity: camera.sparkx_i7_printer_camera
fit_mode: cover
grid_options:
columns: full
show_name: true
show_state: true
type: picture-entity
- cards:
- grid_options:
columns: 6
image_entity: image.sparkx_i7_current_print_preview
show_name: false
type: picture
- entity: sensor.sparkx_i7_active_filament_slot
icon: mdi:palette
icon_color: '{% set color = state_attr(''sensor.sparkx_i7_active_filament_slot'',
''color'') | default('''') | string %}{% set core = color | replace(''#'',
'''') %}{% if core | length >= 6 %}#{{ core[-6:] }}{% else %}var(--primary-text-color){%
endif %}'
multiline_secondary: true
name: Active Color
primary: '{% set slot = states(''sensor.sparkx_i7_active_filament_slot'')
%}{% if ''Slot 1'' in slot %}{{ states(''sensor.sparkx_i7_slot_1_color_name'')
}}{% elif ''Slot 2'' in slot %}{{ states(''sensor.sparkx_i7_slot_2_color_name'')
}}{% elif ''Slot 3'' in slot %}{{ states(''sensor.sparkx_i7_slot_3_color_name'')
}}{% elif ''Slot 4'' in slot %}{{ states(''sensor.sparkx_i7_slot_4_color_name'')
}}{% elif slot == ''External'' %}{{ states(''sensor.sparkx_i7_external_color_name'')
}}{% else %}Unknown{% endif %}'
secondary: "{% set slot = states('sensor.sparkx_i7_active_filament_slot')\
\ %}{{ slot }}{% if state_attr('sensor.sparkx_i7_active_filament_slot',\
\ 'filament') %} \xB7 {{ state_attr('sensor.sparkx_i7_active_filament_slot',\
\ 'filament') }}{% endif %}"
type: custom:mushroom-template-card
grid_options:
columns: full
type: horizontal-stack
- entity: sensor.sparkx_i7_print_status
grid_options:
columns: 12
icon: mdi:state-machine
name: Status
type: tile
- entity: sensor.sparkx_i7_position_z_2_decimals
grid_options:
columns: 4
icon: mdi:axis-z-arrow
name: Current Z
type: tile
- entity: sensor.sparkx_i7_position_x
grid_options:
columns: 4
icon: mdi:axis-x-arrow
name: X
type: tile
- entity: sensor.sparkx_i7_position_y
grid_options:
columns: 4
icon: mdi:axis-y-arrow
name: Y
type: tile
- entity: sensor.sparkx_i7_print_status
grid_options:
columns: 6
icon: mdi:message-alert-outline
multiline_secondary: true
name: Printer Message
primary: '{{ states("sensor.sparkx_i7_print_status") | replace("_", " ") |
title }}'
secondary: '{% set err = state_attr("sensor.sparkx_i7_print_status", "err")
or {} %}{% set code = err.get("errcode", 0) | int(0) %}{% set msg = err.get("value",
"") %}{% if state_attr("sensor.sparkx_i7_print_status", "paused_flag") |
default(false) %}Print paused{% elif msg %}ERROR {{ code }}: {{ msg }}{%
elif code %}Printer error {{ code }}{% else %}No printer error{% endif %}'
type: custom:mushroom-template-card
- entity: sensor.sparkx_i7_print_status
grid_options:
columns: 6
icon: mdi:file-document-outline
multiline_secondary: true
name: Current File
primary: Current File
secondary: '{% set file = state_attr("sensor.sparkx_i7_print_status", "file")
or "" %}{% if file %}{{ file.split("/")[-1] | replace(".gcode", "") }}{%
else %}No active file{% endif %}'
type: custom:mushroom-template-card
type: grid
- cards:
- heading: Print Progress
icon: mdi:progress-clock
type: heading
- entity: sensor.sparkx_i7_print_progress
grid_options:
columns: 6
rows: 3
max: 100
min: 0
name: Progress
severity:
green: 0
red: 90
yellow: 40
type: gauge
unit: '%'
- grid_options:
columns: 6
icon: mdi:clock-start
multiline_secondary: true
name: Elapsed
primary: Elapsed
secondary: '{% set s = states(''sensor.sparkx_i7_print_job_time'') | float(0)
%}{% set h = (s / 3600) | int %}{% set m = ((s % 3600) / 60) | int %}{%
if h %}{{ h }} hr {{ m }} min{% else %}{{ m }} min{% endif %}'
type: custom:mushroom-template-card
- grid_options:
columns: 6
icon: mdi:clock-end
multiline_secondary: true
name: Remaining
primary: Remaining
secondary: '{% set s = states(''sensor.sparkx_i7_print_time_left'') | float(-1)
%}{% if s <= 0 %}No estimate{% else %}{% set h = (s / 3600) | int %}{% set
m = ((s % 3600) / 60) | int %}{% if h %}{{ h }} hr {{ m }} min{% else %}{{
m }} min{% endif %}{% endif %}'
type: custom:mushroom-template-card
- grid_options:
columns: 6
icon: mdi:clock-outline
multiline_secondary: true
primary: Est. Finish
secondary: "{% set left = states('sensor.sparkx_i7_print_time_left') | int(0)\
\ %}{% if left > 0 %}{{ (now() + timedelta(seconds=left)).strftime('%I:%M\
\ %p').lstrip('0') }}{% else %}\u2014{% endif %}"
type: custom:mushroom-template-card
- grid_options:
columns: 6
icon: mdi:layers
multiline_secondary: true
name: Layer
primary: Layer
secondary: '{% set c = states(''sensor.sparkx_i7_working_layer'') | int(0)
%}{% set t = states(''sensor.sparkx_i7_total_layers'') | int(0) %}{{ c }}
of {{ t }}'
type: custom:mushroom-template-card
- entity: light.sparkx_i7_light
grid_options:
columns: 6
icon: mdi:lightbulb
name: Printer Light
type: tile
- detail: 1
entity: sensor.sparkx_i7_print_progress
graph: line
grid_options:
columns: full
hours_to_show: 24
name: Progress History
type: sensor
- entity: number.sparkx_i7_print_tuning
grid_options:
columns: 6
icon: mdi:speedometer
name: Print Tuning
type: tile
- entity: sensor.sparkx_i7_print_speed
grid_options:
columns: 6
icon: mdi:speedometer
name: Speed
type: tile
- entity: sensor.sparkx_i7_real_time_flow
grid_options:
columns: 6
icon: mdi:cube-send
name: Real-Time Flow
type: tile
- entity: sensor.sparkx_i7_flow_rate
grid_options:
columns: 6
icon: mdi:chart-gantt
name: Flow Rate
type: tile
- entity: sensor.sparkx_i7_current_object
grid_options:
columns: 6
icon: mdi:cube-outline
name: Object
type: tile
- entity: sensor.sparkx_i7_object_count
grid_options:
columns: 6
icon: mdi:counter
name: Object Count
type: tile
type: grid
- cards:
- heading: Temperatures
icon: mdi:thermometer
type: heading
- entity: sensor.sparkx_i7_nozzle_temperature
grid_options:
columns: 4
max: 300
min: 0
name: Nozzle
severity:
green: 0
red: 240
yellow: 180
type: gauge
unit: "\xB0C"
- entity: sensor.sparkx_i7_bed_temperature
grid_options:
columns: 4
max: 100
min: 0
name: Bed
severity:
green: 0
red: 100
yellow: 60
type: gauge
unit: "\xB0C"
- entity: number.sparkx_i7_nozzle_target
grid_options:
columns: 6
icon: mdi:printer-3d-nozzle
name: Nozzle Target
type: tile
- entity: number.sparkx_i7_bed_target
grid_options:
columns: 6
icon: mdi:radiator
name: Bed Target
type: tile
- entities:
- color: '#ef5350'
entity: sensor.sparkx_i7_nozzle_temperature
name: Actual
- color: '#4caf50'
entity: number.sparkx_i7_nozzle_target
name: Target
expand_legend: true
grid_options:
columns: full
hours_to_show: 24
show_names: true
title: Nozzle Temperature
type: history-graph
- entities:
- color: '#42a5f5'
entity: sensor.sparkx_i7_bed_temperature
name: Actual
- color: '#4caf50'
entity: number.sparkx_i7_bed_target
name: Target
expand_legend: true
grid_options:
columns: full
hours_to_show: 24
show_names: true
title: Bed Temperature
type: history-graph
type: grid
- cards:
- heading: Controls
icon: mdi:gesture-tap-button
type: heading
- entity: button.sparkx_i7_pause_print
grid_options:
columns: 4
icon: mdi:pause
name: Pause
tap_action:
action: perform-action
perform_action: button.press
target:
entity_id: button.sparkx_i7_pause_print
type: tile
- entity: button.sparkx_i7_resume_print
grid_options:
columns: 4
icon: mdi:play
name: Resume
tap_action:
action: perform-action
perform_action: button.press
target:
entity_id: button.sparkx_i7_resume_print
type: tile
- entity: button.sparkx_i7_reconnect
grid_options:
columns: 4
icon: mdi:lan-connect
name: Connect
tap_action:
action: perform-action
perform_action: button.press
target:
entity_id: button.sparkx_i7_reconnect
type: tile
- entity: button.sparkx_i7_stop_print
grid_options:
columns: 4
icon: mdi:cancel
name: Cancel Print
tap_action:
action: perform-action
perform_action: button.press
target:
entity_id: button.sparkx_i7_stop_print
type: tile
- entity: button.sparkx_i7_home_xy_then_z
grid_options:
columns: 4
icon: mdi:home-circle
name: Home
tap_action:
action: perform-action
perform_action: button.press
target:
entity_id: button.sparkx_i7_home_xy_then_z
type: tile
type: grid
- cards:
- heading: Filament
icon: mdi:printer-3d-nozzle-outline
type: heading
- entity: sensor.sparkx_i7_filament_weight_estimated
grid_options:
columns: 6
icon: '{% set st = states(''sensor.sparkx_i7_print_status'') %}{% if st in
[''printing'', ''paused''] %}mdi:printer-3d-nozzle{% else %}mdi:calendar-today{%
endif %}'
multiline_secondary: true
name: Filament Used
primary: '{% set st = states(''sensor.sparkx_i7_print_status'') %}{% if st
in [''printing'', ''paused''] %}{{ states(''sensor.sparkx_i7_filament_weight_estimated'')
| round(1) }} g{% else %}No active job{% endif %}'
secondary: "{% set st = states('sensor.sparkx_i7_print_status') %}{% if st\
\ in ['printing', 'paused'] %}{{ states('sensor.sparkx_i7_used_material_length')\
\ | round(0) }} cm this job{% else %}{{ states('sensor.sparkx_i7_filament_weight_daily')\
\ | round(1) }} g \xB7 {{ states('sensor.sparkx_i7_filament_cost_daily')\
\ | round(2) }} $ today{% endif %}"
type: custom:mushroom-template-card
- entity: input_number.sparkx_i7_filament_g_cm
grid_options:
columns: 6
icon: mdi:weight-kilogram
name: g/cm
type: tile
- entity: sensor.sparkx_i7_used_material_length
grid_options:
columns: 6
icon: mdi:counter
multiline_secondary: true
name: Used Length
primary: '{% set st = states(''sensor.sparkx_i7_print_status'') %}{% if st
in [''printing'', ''paused''] %}{{ states(''sensor.sparkx_i7_used_material_length'')
| round(0) }} cm{% else %}{{ (states(''sensor.sparkx_i7_filament_weight_daily'')
| float(0) / states(''input_number.sparkx_i7_filament_g_cm'') | float(0.0298))
| round(0) }} cm{% endif %}'
secondary: '{% set st = states(''sensor.sparkx_i7_print_status'') %}{% if
st in [''printing'', ''paused''] %}this job (printer-reported){% else %}today,
from today''s weight{% endif %}'
type: custom:mushroom-template-card
- entity: sensor.sparkx_i7_filament_cost
grid_options:
columns: 3
icon: mdi:cash
name: Job Cost (total)
type: tile
- entity: sensor.sparkx_i7_filament_cost_daily
grid_options:
columns: 3
icon: mdi:cash-multiple
name: Today
type: tile
- entity: sensor.sparkx_i7_filament_cost_weekly
grid_options:
columns: 3
icon: mdi:cash-multiple
name: This Week
type: tile
- entity: sensor.sparkx_i7_filament_cost_monthly
grid_options:
columns: 3
icon: mdi:cash-multiple
name: This Month
type: tile
type: grid
title: Print
type: sections
- max_columns: 2
path: history
sections:
- cards:
- heading: Temperature History
icon: mdi:chart-line-variant
type: heading
- entities:
- color: '#ef5350'
entity: sensor.sparkx_i7_nozzle_temperature
name: Nozzle
- color: '#ffab91'
entity: number.sparkx_i7_nozzle_target
name: Nozzle Target
- color: '#42a5f5'
entity: sensor.sparkx_i7_bed_temperature
name: Bed
- color: '#90caf9'
entity: number.sparkx_i7_bed_target
name: Bed Target
expand_legend: true
grid_options:
columns: full
hours_to_show: 24
show_names: true
title: Temperatures (24h)
type: history-graph
- entities:
- color: '#ef5350'
entity: sensor.sparkx_i7_nozzle_temperature
name: Nozzle
- color: '#42a5f5'
entity: sensor.sparkx_i7_bed_temperature
name: Bed
expand_legend: true
grid_options:
columns: full
hours_to_show: 168
show_names: true
title: Temperatures (7 days)
type: history-graph
type: grid
- cards:
- heading: Print Activity
icon: mdi:chart-box-outline
type: heading
- apex_config:
chart:
height: 300
stroke:
width: 1
graph_span: 24h
grid_options:
columns: full
header:
colorize_states: true
show: true
show_states: true
title: Z Position (24h)
series:
- color: '#ab47bc'
curve: straight
entity: sensor.sparkx_i7_position_z
fill_raw: last
name: Current Z
type: line
type: custom:apexcharts-card
- entities:
- color: '#66bb6a'
entity: sensor.sparkx_i7_print_progress
name: Progress
grid_options:
columns: full
hours_to_show: 24
show_names: true
title: Print Progress (24h)
type: history-graph
- entities:
- color: '#26c6da'
entity: sensor.sparkx_i7_print_job_time
name: Elapsed
- color: '#ffa726'
entity: sensor.sparkx_i7_print_time_left
name: Remaining
grid_options:
columns: full
hours_to_show: 24
show_names: true
title: Print Duration (24h)
type: history-graph
type: grid
title: History
type: sections
- icon: mdi:printer-3d-nozzle-outline
max_columns: 4
path: cfs-fans
sections:
- cards:
- heading: CFS Box 1
icon: mdi:file-cabinet
type: heading
- entity: sensor.sparkx_i7_cfs_box_1_temperature
grid_options:
columns: 6
icon: mdi:thermometer
name: Temperature
type: tile
- entity: sensor.sparkx_i7_cfs_box_1_humidity
grid_options:
columns: 6
icon: mdi:water-percent
name: Humidity
type: tile
- grid_options:
columns: 6
icon: mdi:printer-3d-nozzle
icon_color: '{% set c = states(''sensor.sparkx_i7_cfs_box_1_slot_1_color'')|default('''')|string
%}{% set core = c|replace(''#'','''') %}{% if core|length >= 6 %}#{{ core[-6:]
}}{% endif %}'
multiline_secondary: true
name: Slot 1
primary: '{{ states(''sensor.sparkx_i7_cfs_box_1_slot_1_filament'') }}'
secondary: "{% set col = states('sensor.sparkx_i7_slot_1_color_name') %}{%\
\ if col %}{{ col }} \xB7 {% endif %}{{ states('sensor.sparkx_i7_cfs_box_1_slot_1_remaining')\
\ }}% left"
type: custom:mushroom-template-card
- grid_options:
columns: 6
icon: mdi:printer-3d-nozzle
icon_color: '{% set c = states(''sensor.sparkx_i7_cfs_box_1_slot_2_color'')|default('''')|string
%}{% set core = c|replace(''#'','''') %}{% if core|length >= 6 %}#{{ core[-6:]
}}{% endif %}'
multiline_secondary: true
name: Slot 2
primary: '{{ states(''sensor.sparkx_i7_cfs_box_1_slot_2_filament'') }}'
secondary: "{% set col = states('sensor.sparkx_i7_slot_2_color_name') %}{%\
\ if col %}{{ col }} \xB7 {% endif %}{{ states('sensor.sparkx_i7_cfs_box_1_slot_2_remaining')\
\ }}% left"
type: custom:mushroom-template-card
- grid_options:
columns: 6
icon: mdi:printer-3d-nozzle
icon_color: '{% set c = states(''sensor.sparkx_i7_cfs_box_1_slot_3_color'')|default('''')|string
%}{% set core = c|replace(''#'','''') %}{% if core|length >= 6 %}#{{ core[-6:]
}}{% endif %}'
multiline_secondary: true
name: Slot 3
primary: '{{ states(''sensor.sparkx_i7_cfs_box_1_slot_3_filament'') }}'
secondary: "{% set col = states('sensor.sparkx_i7_slot_3_color_name') %}{%\
\ if col %}{{ col }} \xB7 {% endif %}{{ states('sensor.sparkx_i7_cfs_box_1_slot_3_remaining')\
\ }}% left"
type: custom:mushroom-template-card
- grid_options:
columns: 6
icon: mdi:printer-3d-nozzle
icon_color: '{% set c = states(''sensor.sparkx_i7_cfs_box_1_slot_4_color'')|default('''')|string
%}{% set core = c|replace(''#'','''') %}{% if core|length >= 6 %}#{{ core[-6:]
}}{% endif %}'
multiline_secondary: true
name: Slot 4
primary: '{{ states(''sensor.sparkx_i7_cfs_box_1_slot_4_filament'') }}'
secondary: "{% set col = states('sensor.sparkx_i7_slot_4_color_name') %}{%\
\ if col %}{{ col }} \xB7 {% endif %}{{ states('sensor.sparkx_i7_cfs_box_1_slot_4_remaining')\
\ }}% left"
type: custom:mushroom-template-card
type: grid
- cards:
- heading: External / Active
icon: mdi:printer-3d
type: heading
- cards:
- entity: sensor.sparkx_i7_active_filament_slot
grid_options:
columns: 6
icon: mdi:swap-horizontal
name: Active Slot
type: tile
- entity: sensor.sparkx_i7_active_filament_slot
icon: mdi:palette
icon_color: '{% set color = state_attr(''sensor.sparkx_i7_active_filament_slot'',
''color'') | default('''') | string %}{% set core = color | replace(''#'',
'''') %}{% if core | length >= 6 %}#{{ core[-6:] }}{% else %}var(--primary-text-color){%
endif %}'
multiline_secondary: true
name: Active Color
primary: '{% set slot = states(''sensor.sparkx_i7_active_filament_slot'')
%}{% if ''Slot 1'' in slot %}{{ states(''sensor.sparkx_i7_slot_1_color_name'')
}}{% elif ''Slot 2'' in slot %}{{ states(''sensor.sparkx_i7_slot_2_color_name'')
}}{% elif ''Slot 3'' in slot %}{{ states(''sensor.sparkx_i7_slot_3_color_name'')
}}{% elif ''Slot 4'' in slot %}{{ states(''sensor.sparkx_i7_slot_4_color_name'')
}}{% elif slot == ''External'' %}{{ states(''sensor.sparkx_i7_external_color_name'')
}}{% else %}Unknown{% endif %}'
secondary: "{% set slot = states('sensor.sparkx_i7_active_filament_slot')\
\ %}{{ slot }}{% if state_attr('sensor.sparkx_i7_active_filament_slot',\
\ 'filament') %} \xB7 {{ state_attr('sensor.sparkx_i7_active_filament_slot',\
\ 'filament') }}{% endif %}"
type: custom:mushroom-template-card
grid_options:
columns: full
type: horizontal-stack
- grid_options:
columns: 6
icon: mdi:lan-outline
icon_color: '{% set c = states(''sensor.sparkx_i7_cfs_external_color'')|default('''')|string
%}{% set core = c|replace(''#'','''') %}{% if core|length >= 6 %}#{{ core[-6:]
}}{% endif %}'
multiline_secondary: true
name: External Filament
primary: '{{ states(''sensor.sparkx_i7_cfs_external_filament'') }}'
secondary: "{% set col = states('sensor.sparkx_i7_external_color_name') %}{%\
\ if col %}{{ col }} \xB7 {% endif %}{{ states('sensor.sparkx_i7_cfs_external_remaining')\
\ }}% left"
type: custom:mushroom-template-card
- entity: sensor.sparkx_i7_filament_status
grid_options:
columns: 6
icon: mdi:printer-3d-nozzle-alert
name: Filament Status
type: tile
type: grid
- cards:
- heading: Fans
icon: mdi:fan
type: heading
- entity: fan.sparkx_i7_model_fan
features:
- type: fan-speed
grid_options:
columns: 4
icon: mdi:fan
name: Model Fan
type: tile
- entity: fan.sparkx_i7_case_fan
features:
- type: fan-speed
grid_options:
columns: 4
icon: mdi:fan
name: Case Fan
type: tile
- entity: fan.sparkx_i7_side_fan
features:
- type: fan-speed
grid_options:
columns: 4
icon: mdi:fan
name: Side Fan
type: tile
type: grid
title: CFS / Fans
type: sections
- title: Spoolman
path: spoolman
icon: mdi:package-variant-closed
type: sections
max_columns: 4
sections:
- type: grid
cards:
- type: heading
heading: Overture Black ABS (Spool 1)
icon: mdi:spool
- type: gauge
entity: sensor.spoolman_spool_1
name: Remaining
unit: g
min: 0
max: 1000
severity:
red: 0
yellow: 300
green: 600
grid_options:
columns: 6
rows: 3
- type: custom:mushroom-template-card
entity: sensor.spoolman_spool_1_color_hex
name: Color
icon: mdi:palette
icon_color: '{% set c = states(''sensor.spoolman_spool_1_color_hex'')|replace(''#'','''')|lower
%}{% if c|length == 6 %}#{{ c }}{% else %}var(--primary-text-color){% endif
%}'
primary: '{{ states(''sensor.spoolman_spool_1_color_hex'') }}'
secondary: "{{ states('sensor.spoolman_spool_1_filament_name') }} \xB7 {{\
\ states('sensor.spoolman_spool_1_material') }}"
multiline_secondary: true
grid_options:
columns: 6
- type: tile
entity: sensor.spoolman_spool_1_used_weight
name: Used Weight
icon: mdi:scale-balance
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_used_percentage
name: Used %
icon: mdi:chart-donut
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_remaining_length
name: Remaining Length
icon: mdi:ruler
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_used_length
name: Used Length
icon: mdi:ruler-square
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_spool_weight
name: Empty Spool Weight
icon: mdi:scale
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_filament_weight
name: Full Spool Weight
icon: mdi:weight-kilogram
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_vendor
name: Vendor
icon: mdi:factory
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_material
name: Material
icon: mdi:layers-triple
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_diameter
name: Diameter
icon: mdi:circle-outline
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_density
name: Density
icon: mdi:weight-gram
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_filament_name
name: Filament Name
icon: mdi:tag-outline
grid_options:
columns: 4
- type: tile
entity: select.spoolman_spool_1_location
name: Location
icon: mdi:map-marker-outline
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_estimated_runout
name: Est. Runout
icon: mdi:calendar-alert
grid_options:
columns: 6
- type: tile
entity: sensor.spoolman_spool_1_registered
name: Registered
icon: mdi:calendar-check-outline
grid_options:
columns: 6
- type: tile
entity: binary_sensor.spoolman_spool_1_low_filament
name: Low Filament
icon: mdi:alert-circle-outline
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_flow_rate
name: Flow Rate
icon: mdi:progress-clock
grid_options:
columns: 4
- type: tile
entity: sensor.spoolman_spool_1_id
name: Spool ID
icon: mdi:identifier
grid_options:
columns: 4
- type: markdown
content: "**Spoolman UI:** [http://2c829f0e-spoolman.local.hass.io:7912](http://2c829f0e-spoolman.local.hass.io:7912)\n\
\n**Changing filaments:** 1. Set the slot color in the CFS app. 2. Create\
\ the spool in Spoolman with a matching color hex. No Home Assistant changes\
\ needed \u2014 new spools appear here automatically."
grid_options:
columns: full
- type: grid
cards:
- type: heading
heading: Adjust Remaining
icon: mdi:pencil-outline
- type: entities
title: Set value (g)
show_header_toggle: false
entities:
- input_number.spoolman_set_remaining
grid_options:
columns: 6
- type: tile
entity: sensor.spoolman_spool_1
name: Apply to Spool 1
icon: mdi:content-save-outline
grid_options:
columns: 6
tap_action:
action: perform-action
perform_action: script.spoolman_set_spool_remaining
data:
spool_id: 1
confirmation:
text: Overwrite Spool 1 remaining weight in Spoolman?
- type: markdown
content: "1. Type the new remaining grams above. 2. Tap **Apply to Spool 1**.\
\ The value is **absolute** \u2014 it replaces Spoolman's remaining weight,\
\ and print deductions continue from there. Wait for a running print to\
\ finish before adjusting."
grid_options:
columns: full
- type: grid
cards:
- type: heading
heading: Print Linkage
icon: mdi:printer-3d-nozzle
- type: tile
entity: input_text.sparkx_i7_print_spool_latch
name: Latched Spool ID
icon: mdi:link-variant
grid_options:
columns: 6
- type: tile
entity: sensor.sparkx_i7_filament_weight_estimated
name: Current Job Weight
icon: mdi:weight-gram
grid_options:
columns: 6
- type: tile
entity: automation.sparkx_i7_latch_print_spool_for_spoolman
name: Latch Automation
icon: mdi:link
grid_options:
columns: 6
- type: tile
entity: automation.sparkx_i7_deduct_filament_in_spoolman_on_print_complete
name: Deduct Automation
icon: mdi:minus-circle-outline
grid_options:
columns: 6
- type: custom:mushroom-template-card
name: Next Deduction Match
icon: mdi:magnet
icon_color: mdi:link
primary: '{{ states(''sensor.sparkx_i7_active_filament_slot'') }}'
secondary: "{% set slot = states('sensor.sparkx_i7_active_filament_slot')\
\ %}{% set ce = 'sensor.sparkx_i7_cfs_' ~ (slot|lower|replace(' ','_'))\
\ ~ '_color' %}{% set color = states(ce)|replace('#','')|lower %}{% set\
\ ns = namespace(id='') %}{% for e in integration_entities('spoolman') %}{%\
\ if e.endswith('_color_hex') and (states(e)|lower) == color %}{% set ns.id\
\ = states(e[:-10] ~ '_id') %}{% endif %}{% endfor %}{% if ns.id %}Color\
\ #{{ color }} \u2192 deducts from spool {{ ns.id }} ({% set fn = 'sensor.spoolman_spool_'\
\ ~ ns.id ~ '_filament_name' %}{{ states(fn) }}){% elif color in ['', 'unknown',\
\ 'unavailable'] %}Slot color unavailable{% else %}Color #{{ color }} \u2014\
\ no matching spool{% endif %}"
multiline_secondary: true
grid_options:
columns: full
- type: grid
cards:
- type: heading
heading: Spool History
icon: mdi:history
- type: history-graph
title: Remaining & Used (7 days)
hours_to_show: 168
show_names: true
entities:
- entity: sensor.spoolman_spool_1
name: Remaining
- entity: sensor.spoolman_spool_1_used_weight
name: Used
grid_options:
columns: full
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -45,7 +45,7 @@
"state": "ON", "state": "ON",
"led_brightness": 100, "led_brightness": 100,
"countdown_to_turn_off": 0, "countdown_to_turn_off": 0,
"voltage": 118.1, "voltage": 118.6,
"countdown_to_turn_on": 0, "countdown_to_turn_on": 0,
"energy": 103.68, "energy": 103.68,
"power_factor": 0.2, "power_factor": 0.2,
@@ -77,8 +77,8 @@
"voltage": 116.9, "voltage": 116.9,
"state": "ON", "state": "ON",
"ac_frequency": 60, "ac_frequency": 60,
"energy": 210.42, "energy": 210.43,
"power": 104.2, "power": 102.9,
"current": 0.94, "current": 0.94,
"power_factor": 0.95, "power_factor": 0.95,
"update": { "update": {
@@ -96,7 +96,7 @@
"countdown_to_turn_off": 0, "countdown_to_turn_off": 0,
"countdown_to_turn_on": 0, "countdown_to_turn_on": 0,
"voltage": 118.6, "voltage": 118.6,
"energy": 100.68, "energy": 100.69,
"state": "ON", "state": "ON",
"power": 10.7, "power": 10.7,
"current": 0.32, "current": 0.32,
@@ -114,7 +114,7 @@
}, },
"0xffffb40e060895b3": { "0xffffb40e060895b3": {
"state": "ON", "state": "ON",
"voltage": 118.8, "voltage": 118.6,
"ac_frequency": 60, "ac_frequency": 60,
"energy": 14.2, "energy": 14.2,
"current": 0.01, "current": 0.01,
@@ -143,7 +143,7 @@
"current": 0.02, "current": 0.02,
"ac_frequency": 60, "ac_frequency": 60,
"power": 0.3, "power": 0.3,
"power_factor": 0.15, "power_factor": 0.14,
"update": { "update": {
"state": "idle", "state": "idle",
"installed_version": 268513381, "installed_version": 268513381,