From 4cf7a5f254331ee1261de2ffe286a1bad49cdeab Mon Sep 17 00:00:00 2001 From: Home Assistant Version Control Date: Sat, 10 Oct 2026 07:02:58 +0000 Subject: [PATCH] 4 files --- ...shboard.printer-stats.20261010_070252.yaml | 969 ++++++++++++++++++ .ha_mcp/logs/mcp_usage.jsonl | 1 + .storage/lovelace.printer_stats | 552 ++++++++++ zigbee2mqtt/state.json | 24 +- 4 files changed, 1534 insertions(+), 12 deletions(-) create mode 100644 .ha_mcp/backups/dashboard.printer-stats.20261010_070252.yaml diff --git a/.ha_mcp/backups/dashboard.printer-stats.20261010_070252.yaml b/.ha_mcp/backups/dashboard.printer-stats.20261010_070252.yaml new file mode 100644 index 00000000..a7ddb7e4 --- /dev/null +++ b/.ha_mcp/backups/dashboard.printer-stats.20261010_070252.yaml @@ -0,0 +1,969 @@ +# ha_mcp_backup +schema_version: 1 +domain: dashboard +entity_id: printer-stats +captured: '2026-10-10T07:02:52.536646+00:00' +tool: ha_config_set_dashboard +config: + views: + - title: Print + path: print + type: sections + max_columns: 4 + sections: + - type: grid + cards: + - type: heading + heading: Printer Status + icon: mdi:printer-3d-nozzle + - type: custom:webrtc-camera + url: octoprint + ui: true + - type: custom:webrtc-camera + url: octoprint2 + ui: true + - type: tile + entity: binary_sensor.octoprint_printing + name: Printing + icon: mdi:printer-3d + grid_options: + columns: 6 + - type: tile + entity: binary_sensor.octoprint_connected + name: Connected + icon: mdi:lan-connect + grid_options: + columns: 6 + - type: tile + entity: sensor.octoprint_print_status + name: Status + icon: mdi:state-machine + grid_options: + columns: 6 + - type: tile + entity: sensor.octoprint_last_event + name: Last Event + icon: mdi:history + grid_options: + columns: 6 + - type: tile + entity: binary_sensor.octoprint_paused + name: Paused + icon: mdi:pause + grid_options: + columns: 6 + - type: tile + entity: sensor.octoprint_current_z + name: Current Z + icon: mdi:axis-z-arrow + grid_options: + columns: 6 + - type: markdown + content: '**File:** {{ states(''sensor.octoprint_print_file'') }} + + **Size:** {{ (states(''sensor.octoprint_print_file_size'') | int(0) / 1048576) + | round(2) }} MB + + **User:** {{ states(''sensor.octoprint_print_user'') }}' + grid_options: + columns: full + - type: tile + entity: sensor.octoprint_print_file + name: File + icon: mdi:file-code + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Print Progress + icon: mdi:progress-clock + - type: gauge + entity: sensor.octoprint_print_progress_live + name: Progress + min: 0 + max: 100 + unit: '%' + severity: + green: 0 + yellow: 40 + red: 90 + grid_options: + columns: 6 + rows: 3 + - type: custom:mushroom-template-card + primary: Elapsed + name: Elapsed + icon: mdi:clock-start + grid_options: + columns: 6 + multiline_secondary: true + secondary: '{% set s = states(''sensor.octoprint_elapsed'') | 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 + primary: Remaining + name: Remaining + icon: mdi:clock-end + grid_options: + columns: 6 + multiline_secondary: true + secondary: '{% set s = states(''sensor.octoprint_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 + primary: Est. Finish + secondary: "{% set finish = states('sensor.octoprint_approximate_completion_time')\ + \ | as_datetime %}{% if finish %}{{ (as_local(finish)).strftime('%I:%M %p').lstrip('0')\ + \ }}{% else %}\u2014{% endif %}" + multiline_secondary: true + icon: mdi:clock-outline + grid_options: + columns: 6 + - type: custom:mushroom-template-card + primary: Layer + name: Layer + icon: mdi:layers + grid_options: + columns: 6 + multiline_secondary: true + secondary: '{% set c = states(''sensor.octoprint_layer_progress'') | int(0) + %}{% set t = state_attr(''sensor.octoprint_layer_progress'', ''total'') + | int(0) %}{{ c }} of {{ t }}' + - type: custom:mushroom-template-card + primary: Height + name: Height + icon: mdi:axis-z-arrow + grid_options: + columns: 6 + secondary: '{% set c = states(''sensor.octoprint_height_progress_clean'') + | float(0) %}{% set t = state_attr(''sensor.octoprint_height_progress_clean'', + ''total'') | float(0) %}{{ c }} of {{ t }} mm' + multiline_secondary: true + - type: tile + entity: light.3d_printer_lights_local + name: Printer Light + icon: mdi:lightbulb + grid_options: + columns: 6 + - type: sensor + entity: sensor.octoprint_print_progress_live + name: Progress History + graph: line + hours_to_show: 24 + detail: 1 + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Temperatures + icon: mdi:thermometer + - type: gauge + entity: sensor.octoprint_tool_0_temperature + name: Nozzle + min: 0 + max: 260 + unit: "\xB0C" + severity: + green: 0 + yellow: 180 + red: 240 + grid_options: + columns: 4 + - type: gauge + entity: sensor.octoprint_bed_temperature + name: Bed + min: 0 + max: 120 + unit: "\xB0C" + severity: + green: 0 + yellow: 60 + red: 100 + grid_options: + columns: 4 + - type: gauge + entity: sensor.octoprint_soc_temperature + name: SoC + min: 0 + max: 100 + unit: "\xB0C" + severity: + green: 0 + yellow: 70 + red: 90 + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_tool_0_target + name: Nozzle Target + icon: mdi:printer-3d-nozzle + grid_options: + columns: 6 + - type: tile + entity: sensor.octoprint_bed_target + name: Bed Target + icon: mdi:radiator + grid_options: + columns: 6 + - title: Nozzle Temperature + type: history-graph + entities: + - entity: sensor.octoprint_tool_0_temperature + name: Actual + color: '#ef5350' + - entity: sensor.octoprint_tool_0_target + name: Target + color: '#4caf50' + hours_to_show: 24 + show_names: true + expand_legend: true + grid_options: + columns: full + - title: Bed Temperature + type: history-graph + entities: + - entity: sensor.octoprint_bed_temperature + name: Actual + color: '#42a5f5' + - entity: sensor.octoprint_bed_target + name: Target + color: '#4caf50' + hours_to_show: 24 + show_names: true + expand_legend: true + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Controls + icon: mdi:gesture-tap-button + - type: tile + entity: switch.octoprint_pause_print + name: Pause + icon: mdi:pause + grid_options: + columns: 4 + - type: tile + entity: switch.octoprint_connect_to_printer + name: Connect + icon: mdi:lan-connect + grid_options: + columns: 4 + - type: tile + entity: switch.octoprint_camera_snapshot + name: Snapshot + icon: mdi:camera + grid_options: + columns: 4 + - type: tile + entity: button.octoprint_cancel_print + name: Cancel Print + icon: mdi:cancel + tap_action: + action: perform-action + perform_action: button.press + target: + entity_id: button.octoprint_cancel_print + grid_options: + columns: 6 + - type: tile + entity: button.octoprint_emergency_stop + name: Emergency Stop + icon: mdi:stop-circle + tap_action: + action: perform-action + perform_action: button.press + target: + entity_id: button.octoprint_emergency_stop + grid_options: + columns: 6 + - type: button + name: GCode Viewer + icon: mdi:cube-outline + tap_action: + action: url + url_path: https://ender5pro.duckdns.org/#gcode + grid_options: + columns: 6 + - type: button + name: Pretty GCode Viewer + icon: mdi:cube-outline + tap_action: + action: url + url_path: https://ender5pro.duckdns.org/#tab_plugin_prettygcode + grid_options: + columns: 6 + - type: grid + cards: + - type: heading + heading: Totals + icon: mdi:chart-box-outline + - type: tile + entity: sensor.octoprint_printer_print_time_today + name: Print Time Today + icon: mdi:clock-start + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_printer_print_time_this_week + name: Print Time This Week + icon: mdi:calendar-week + grid_options: + columns: 4 + - type: tile + grid_options: + columns: 4 + entity: sensor.octoprint_printer_print_time_last_7_days + name: Print Time Last 7 Days + icon: mdi:history + vertical: false + features_position: bottom + - type: tile + entity: sensor.octoprint_printer_prints_today + name: Prints Today + icon: mdi:counter + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_printer_prints_this_week + name: Prints This Week + icon: mdi:counter + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_printer_prints_last_7_days + name: Prints Last 7 Days + icon: mdi:counter + grid_options: + columns: 4 + - type: grid + cards: + - type: heading + heading: Filament Usage + icon: mdi:chart-donut + - type: tile + entity: sensor.octoprint_last_print_filament + name: Last Job + icon: mdi:history + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_daily + name: Filament Today + icon: mdi:chart-donut + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_weekly + name: Filament This Week + icon: mdi:calendar-week + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_monthly + name: Filament This Month + icon: mdi:calendar-month + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_used_total + name: Grand Total + icon: mdi:chart-pie + grid_options: + columns: 4 + - type: heading + heading: Grams Usage + icon: mdi:weight + - type: tile + entity: sensor.octoprint_last_print_filament_weight + name: Last Job + icon: mdi:history + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_weight_daily + name: Filament Today + icon: mdi:chart-donut + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_weight_weekly + name: Filament This Week + icon: mdi:calendar-week + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_weight_monthly + name: Filament This Month + icon: mdi:calendar-month + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_used_weight_total + name: Grand Total + icon: mdi:chart-pie + grid_options: + columns: 4 + - type: heading + heading: Cost Usage + icon: mdi:cash-multiple + - type: tile + entity: sensor.octoprint_filament_cost_last_job + name: Last Job + icon: mdi:history + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_cost_daily + name: Cost Today + icon: mdi:chart-donut + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_cost_weekly + name: Cost This Week + icon: mdi:calendar-week + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_cost_monthly + name: Cost This Month + icon: mdi:calendar-month + grid_options: + columns: 4 + - type: tile + entity: sensor.octoprint_filament_cost_total + name: Grand Total + icon: mdi:chart-pie + grid_options: + columns: 4 + - title: History + path: history + type: sections + max_columns: 2 + sections: + - type: grid + cards: + - type: heading + heading: Temperature History + icon: mdi:chart-line-variant + - type: history-graph + title: Temperatures (24h) + hours_to_show: 24 + show_names: true + expand_legend: true + entities: + - entity: sensor.octoprint_tool_0_temperature + name: Nozzle + color: '#ef5350' + - entity: sensor.octoprint_tool_0_target + name: Nozzle Target + color: '#ffab91' + - entity: sensor.octoprint_bed_temperature + name: Bed + color: '#42a5f5' + - entity: sensor.octoprint_bed_target + name: Bed Target + color: '#90caf9' + grid_options: + columns: full + - type: history-graph + title: Temperatures (7 days) + hours_to_show: 168 + show_names: true + expand_legend: true + entities: + - entity: sensor.octoprint_tool_0_temperature + name: Nozzle + color: '#ef5350' + - entity: sensor.octoprint_bed_temperature + name: Bed + color: '#42a5f5' + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Print Activity + icon: mdi:chart-box-outline + - type: custom:apexcharts-card + header: + show: true + title: Z Position (24h) + show_states: true + colorize_states: true + graph_span: 24h + series: + - entity: sensor.octoprint_current_z + name: Current Z + color: '#ab47bc' + type: line + curve: straight + fill_raw: last + grid_options: + columns: full + apex_config: + chart: + height: 300 + stroke: + width: 1 + - type: history-graph + title: Print Progress (24h) + hours_to_show: 24 + show_names: true + entities: + - entity: sensor.octoprint_print_progress_live + name: Progress + color: '#66bb6a' + grid_options: + columns: full + - type: history-graph + title: Print Duration (24h) + hours_to_show: 24 + show_names: true + entities: + - entity: sensor.octoprint_elapsed + name: Elapsed + color: '#26c6da' + - entity: sensor.octoprint_time_left + name: Remaining + color: '#ffa726' + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Print History + icon: mdi:history + - type: markdown + content: '**Successful:** {{ states(''sensor.octoprint_successful_prints_count'') + }} | **Failed:** {{ states(''sensor.octoprint_failed_prints_count'') }}' + - type: history-graph + title: Printing State (7 days) + hours_to_show: 168 + show_names: true + entities: + - entity: binary_sensor.octoprint_printing + name: Printing + color: '#66bb6a' + grid_options: + columns: full + - type: custom:apexcharts-card + header: + show: true + title: Print Outcomes (30 days) + show_states: true + colorize_states: true + graph_span: 30d + apex_config: + chart: + type: bar + stacked: true + height: 300 + plotOptions: + bar: + columnWidth: 50% + dataLabels: + enabled: true + yaxis: + tickAmount: 4 + labels: + minWidth: 40 + legend: + show: true + series: + - entity: sensor.octoprint_successful_prints_count + name: Successful + color: '#66bb6a' + type: column + group_by: + func: diff + duration: 1d + start_with_last: true + - entity: sensor.octoprint_failed_prints_count + name: Failed + color: '#ef5350' + type: column + group_by: + func: diff + duration: 1d + start_with_last: true + grid_options: + columns: full + span: + end: day + - type: markdown + title: Recent Prints + content: "{% for j in (state_attr('sensor.octoprint_recent_prints', 'allPrintJobs')\ + \ | default([]))[:5] %}\n{% set d = j.get('duration', 0) | int %}\n- **{{\ + \ j.fileName }}** \u2014 {{ j.printStatusResult | title }}, {{ (d / 3600)\ + \ | int }}h {{ ((d % 3600) / 60) | int }}m, {{ j.get('filamentModels', {}).get('total',\ + \ {}).get('usedLength', 0) | round(0) }}mm\n{% endfor %}" + - type: grid + cards: + - type: heading + heading: Filament Usage + icon: mdi:spool + - type: custom:apexcharts-card + header: + show: true + title: Filament Usage (30 days) + show_states: true + colorize_states: true + graph_span: 30d + apex_config: + chart: + type: bar + height: 300 + plotOptions: + bar: + columnWidth: 50% + dataLabels: + enabled: false + yaxis: + tickAmount: 4 + labels: + minWidth: 40 + series: + - entity: sensor.octoprint_filament_daily + name: Used (mm) + color: '#26c6da' + type: column + group_by: + func: last + duration: 1d + start_with_last: true + - entity: sensor.octoprint_filament_used_total + name: Total (mm) + color: '#ab47bc' + type: line + curve: straight + group_by: + func: last + duration: 1d + start_with_last: true + - entity: sensor.octoprint_filament_weekly + name: Weekly (mm) + color: '#ffca28' + type: column + group_by: + func: last + duration: 1d + start_with_last: true + grid_options: + columns: full + span: + end: day + - type: custom:apexcharts-card + header: + show: true + title: Filament Usage - Grams (30 days) + show_states: true + colorize_states: true + graph_span: 30d + apex_config: + chart: + type: bar + height: 300 + plotOptions: + bar: + columnWidth: 50% + dataLabels: + enabled: false + yaxis: + tickAmount: 4 + labels: + minWidth: 40 + series: + - entity: sensor.octoprint_filament_weight_daily + name: Used (g) + color: '#26c6da' + type: column + group_by: + func: last + duration: 1d + start_with_last: true + - entity: sensor.octoprint_filament_used_weight_total + name: Total (g) + color: '#ab47bc' + type: line + curve: straight + group_by: + func: last + duration: 1d + start_with_last: true + - entity: sensor.octoprint_filament_weight_weekly + name: Weekly (g) + color: '#ffca28' + type: column + group_by: + func: last + duration: 1d + start_with_last: true + grid_options: + columns: full + span: + end: day + - type: custom:apexcharts-card + header: + show: true + title: Filament Usage - Cost (30 days) + show_states: true + colorize_states: true + graph_span: 30d + apex_config: + chart: + type: bar + height: 300 + plotOptions: + bar: + columnWidth: 50% + dataLabels: + enabled: false + yaxis: + tickAmount: 4 + labels: + minWidth: 40 + series: + - entity: sensor.octoprint_filament_cost_daily + name: Used ($) + color: '#26c6da' + type: column + group_by: + func: last + duration: 1d + start_with_last: true + - entity: sensor.octoprint_filament_cost_weekly + name: Weekly ($) + color: '#ffca28' + type: column + group_by: + func: last + duration: 1d + start_with_last: true + - entity: sensor.octoprint_filament_cost_total + name: Total ($) + color: '#ab47bc' + type: line + curve: straight + group_by: + func: last + duration: 1d + start_with_last: true + grid_options: + columns: full + span: + end: day + - type: grid + cards: + - type: heading + heading: OctoPrint Host + icon: mdi:server + - type: tile + entity: sensor.octoprint_disk_usage + icon: mdi:harddisk + - type: tile + entity: sensor.octoprint_cpu_usage + icon: mdi:cpu-64-bit + - type: tile + entity: sensor.octoprint_memory_usage + icon: mdi:memory + - type: tile + entity: sensor.octoprint_core_0_temperature + icon: mdi:thermometer + - type: tile + entity: sensor.octoprint_uptime + icon: mdi:clock-outline + - type: sections + max_columns: 4 + title: Test + path: test + sections: + - type: grid + cards: + - type: custom:mushroom-title-card + title: "Moonraker \u2013 {{ states('sensor.sparkx_moonraker_current_display_message')\ + \ }}" + subtitle: '{{ states(''sensor.sparkx_moonraker_filename'') }}' + alignment: center + title_tap_action: + action: url + url_path: http://moonraker.local/ + - type: tile + entity: sensor.sparkx_moonraker_current_print_state + name: Status + grid_options: + columns: 4 + - type: tile + entity: sensor.sparkx_moonraker_print_duration + name: Elapsed + grid_options: + columns: 4 + - type: tile + entity: sensor.sparkx_moonraker_print_eta + name: Completion + grid_options: + columns: 4 + - type: tile + entity: sensor.sparkx_moonraker_progress + name: Print Progress + icon: mdi:clock-end + features: + - type: bar-gauge + min: 0 + max: 100 + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Controls + icon: mdi:gesture-tap-button + - type: grid + columns: 4 + square: false + cards: + - type: custom:button-card + entity: button.sparkx_moonraker_pause_print + color_type: icon + tap_action: + action: toggle + name: Pause + - type: custom:button-card + entity: button.sparkx_moonraker_resume_print + color_type: icon + tap_action: + action: toggle + name: Resume + - type: custom:button-card + entity: button.sparkx_moonraker_cancel_print + color_type: icon + tap_action: + action: toggle + name: Cancel + lock: + enabled: false + confirmation: + text: This will CANCEL the print. Are you sure? + - type: custom:button-card + entity: button.sparkx_moonraker_emergency_stop + color_type: icon + color: red + tap_action: + action: toggle + name: Emergency + lock: + enabled: false + confirmation: + text: This will REBOOT the printer. Are you sure? + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Printer Temperatures + icon: mdi:thermometer + - type: custom:apexcharts-card + graph_span: 1h + header: + show: true + title: Printer Temperatures + show_states: true + colorize_states: true + apex_config: + chart: + height: 200 + legend: + show: false + grid: + xaxis: + lines: + show: true + borderColor: '#555' + yaxis: + - opposite: true + decimals: 0 + tickAmount: 2 + all_series_config: + stroke_width: 2 + float_precision: 0 + show: + name_in_header: true + series: + - entity: sensor.sparkx_moonraker_extruder_temperature + name: Hotend + - entity: sensor.sparkx_moonraker_bed_temperature + name: Bed + - entity: sensor.sparkx_moonraker_mcu_temp + name: MCU + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Fan Speeds + icon: mdi:fan + - type: custom:apexcharts-card + graph_span: 1h + header: + show: true + title: Fan Speeds + show_states: true + colorize_states: true + apex_config: + chart: + height: 200 + legend: + show: false + grid: + xaxis: + lines: + show: true + borderColor: '#555' + yaxis: + - opposite: true + decimals: 0 + tickAmount: 2 + all_series_config: + stroke_width: 2 + show: + name_in_header: true + series: + - entity: sensor.sparkx_moonraker_hotend_fan + name: Hotend + grid_options: + columns: full + - type: grid + cards: + - type: heading + heading: Camera + icon: mdi:camera + - type: conditional + conditions: + - entity: sensor.sparkx_moonraker_current_print_state + state_not: unavailable + card: + type: picture-entity + entity: camera.sparkx_moonraker_back + camera_view: live + show_name: false + show_state: false + aspect_ratio: 4x3 + grid_options: + columns: 6 + - type: conditional + conditions: + - entity: sensor.sparkx_moonraker_current_print_state + state_not: unavailable + card: + type: picture-entity + entity: camera.sparkx_moonraker_thumbnail + camera_view: auto + show_name: false + show_state: false + grid_options: + columns: 6 diff --git a/.ha_mcp/logs/mcp_usage.jsonl b/.ha_mcp/logs/mcp_usage.jsonl index 48eba0e2..b6b52f11 100644 --- a/.ha_mcp/logs/mcp_usage.jsonl +++ b/.ha_mcp/logs/mcp_usage.jsonl @@ -4337,3 +4337,4 @@ {"timestamp": "2026-10-10T06:55:50.316414+00:00", "tool_name": "ha_config_set_helper", "parameters": {"helper_type": "template", "name": null, "helper_id": "01M4J95V58XWWCRA3X26S6ZDN6", "entry_id": null, "subentry_type": null, "subentry_id": null, "show_advanced_options": false, "icon": null, "area_id": null, "labels": null, "min_value": null, "max_value": null, "step": null, "unit_of_measurement": null, "options": null, "initial": null, "mode": null, "has_date": null, "has_time": null, "restore": null, "duration": null, "monday": null, "tuesday": null, "wednesday": null, "thursday": null, "friday": null, "saturday": null, "sunday": null, "latitude": null, "longitude": null, "radius": null, "passive": null, "user_id": null, "device_trackers": null, "picture": null, "tag_id": null, "description": null, "category": null, "config": {"attributes": {"color": "{% set sid = states('sensor.sparkx_moonraker_spool_id') | int(0) %}{% set eid = 'sensor.spoolman_spool_' ~ sid %}{% set h = state_attr(eid, 'filament_color_hex') %}{{ ('#' ~ h) if h else none }}"}}, "wait": true, "action": "update", "MandatoryBPS": false, "BestPracticeKey": null}, "execution_time_ms": 23.850202560424805, "success": false, "error_message": "{\n \"success\": false,\n \"error\": {\n \"code\": \"VALIDATION_INVALID_PARAMETER\",\n \"message\": \"Flow completed without consuming any of the supplied config keys \\u2014 every form step was submitted empty, so the flow saved its defaults, not your values\",\n \"suggestion\": \"Check the field names against the flow's data_schema \\u2014 ha_get_integration(entry_id=..., include_schema=True) shows the accepted fields \\u2014 then retry with corrected keys.\",\n \"suggestions\": [\n \"Check the field names against the flow's data_schema \\u2014 ha_get_integration(entry_id=..., include_schema=True) shows the accepted fields \\u2014 then retry with corrected keys.\",\n \"For Home Assistant best-practice guidance, call ha_get_skill_guide() to read SKILL.md, then the reference file its table points to, before retrying.\"\n ]\n },\n \"flow_id\": \"319b1462ea9effa2d304659ac483cd93\",\n \"supplied_keys\": [\n \"attributes\"\n ],\n \"details\": {\n \"type\": \"create_entry\",\n \"flow_id\": \"319b1462ea9effa2d304659ac483cd93\",\n \"handler\": \"01M4J95V58XWWCRA3X26S6ZDN6\",\n \"description\": null,\n \"description_placeholders\": null\n }\n}", "response_size_bytes": null, "user_context": null} {"timestamp": "2026-10-10T06:56:15.511167+00:00", "tool_name": "ha_get_integration", "parameters": {"entry_id": "01M4J95V58XWWCRA3X26S6ZDN6", "query": null, "domain": null, "include_options": true, "include_schema": true, "include_subentries": false, "include_subentry_schema": false, "subentry_type": null, "subentry_id": null, "show_advanced_options": false, "exact_match": true, "limit": 50, "offset": 0, "include_diagnostics": false, "include_knx_project": false, "device_id": null, "diagnostics_fields": null, "diagnostics_truncate_at_bytes": null, "diagnostics_data_path": null, "diagnostics_data_offset": 0, "diagnostics_data_limit": null}, "execution_time_ms": 33.11514854431152, "success": true, "error_message": null, "response_size_bytes": 3505, "user_context": null} {"timestamp": "2026-10-10T06:58:22.795466+00:00", "tool_name": "ha_config_get_dashboard", "parameters": {"url_path": "printer-stats", "list_only": false, "force_reload": false, "entity_id": null, "card_type": null, "heading": null, "include_config": false, "include_screenshot": false, "view_path": null, "mode": null, "query": null}, "execution_time_ms": 15.183687210083008, "success": true, "error_message": null, "response_size_bytes": 23642, "user_context": null} +{"timestamp": "2026-10-10T07:02:52.632073+00:00", "tool_name": "ha_config_set_dashboard", "parameters": {"url_path": "printer-stats", "config": null, "python_transform": "config['views'][2]['sections'].extend([\n {\n \"type\": \"grid\",\n \"cards\": [\n {\n \"type\": \"custom:mushroom-title-card\",\n \"title\": \"BeHappy2021 Dashboard\",\n \"subtitle\": \"{{ states('sensor.sparkx_moonraker_current_print_state') }}\",\n \"alignment\": \"center\",\n \"title_tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"}\n }\n ]\n },\n {\n \"type\": \"grid\",\n \"title\": \"3D Printer\",\n \"cards\": [\n {\n \"type\": \"custom:state-switch\",\n \"entity\": \"sensor.sparkx_moonraker_current_print_state\",\n \"transition\": \"flip-x\",\n \"states\": {\n \"unavailable\": {\n \"type\": \"vertical-stack\",\n \"cards\": [\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"input_text.job_filament\", \"name\": \"Filament used in last job\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}},\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"input_text.total_filament\", \"name\": \"Total Filament Used\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}},\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"input_text.total_jobs\", \"name\": \"Total Jobs\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}},\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"input_text.total_time\", \"name\": \"Total Time\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}}\n ]\n },\n \"standby\": {\n \"type\": \"custom:mushroom-template-card\",\n \"primary\": \"Printer is standing by\",\n \"layout\": \"vertical\",\n \"tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"},\n \"hold_action\": {\"action\": \"none\"},\n \"double_tap_action\": {\"action\": \"none\"},\n \"icon_color\": \"yellow\",\n \"icon\": \"mdi:printer-3d\"\n },\n \"printing\": {\n \"type\": \"vertical-stack\",\n \"cards\": [\n {\n \"type\": \"custom:mushroom-template-card\",\n \"secondary\": \"Current filename - {{ states('sensor.sparkx_moonraker_filename') }}\",\n \"fill_container\": True,\n \"multiline_secondary\": True,\n \"layout\": \"vertical\",\n \"tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"},\n \"hold_action\": {\"action\": \"none\"},\n \"double_tap_action\": {\"action\": \"none\"},\n \"icon_color\": \"green\",\n \"icon\": \"mdi:printer-3d\"\n },\n {\n \"type\": \"horizontal-stack\",\n \"cards\": [\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"sensor.sparkx_moonraker_current_print_state\", \"name\": \"Status\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}},\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"sensor.sparkx_moonraker_print_duration\", \"name\": \"Elapsed\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}},\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"sensor.sparkx_moonraker_print_eta\", \"name\": \"Completion\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}},\n {\"type\": \"custom:mushroom-entity-card\", \"entity\": \"binary_sensor.sparkx_moonraker_filament_sensor\", \"name\": \"Filament\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"none\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}}\n ]\n }\n ]\n },\n \"complete\": {\n \"type\": \"custom:mushroom-template-card\",\n \"primary\": \"Printing has finished\",\n \"layout\": \"vertical\",\n \"fill_container\": True,\n \"tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"},\n \"hold_action\": {\"action\": \"none\"},\n \"double_tap_action\": {\"action\": \"none\"},\n \"icon_color\": \"green\",\n \"icon\": \"mdi:printer-3d\"\n }\n }\n },\n {\n \"type\": \"custom:state-switch\",\n \"entity\": \"sensor.sparkx_moonraker_current_print_state\",\n \"transition\": \"flip-x\",\n \"states\": {\n \"printing\": {\n \"type\": \"vertical-stack\",\n \"cards\": [\n {\"type\": \"tile\", \"name\": \"Print progress..\", \"icon\": \"mdi:clock-end\", \"entity\": \"sensor.sparkx_moonraker_progress\", \"features\": [{\"type\": \"bar-gauge\", \"min\": 0, \"max\": 100}]},\n {\"type\": \"tile\", \"name\": \"Fan speed\", \"icon\": \"mdi:fan\", \"entity\": \"sensor.sparkx_moonraker_hotend_fan\", \"features\": [{\"type\": \"bar-gauge\", \"min\": 0, \"max\": 100}]},\n {\"type\": \"tile\", \"name\": \"Filament used\", \"tap_action\": {\"action\": \"none\"}, \"icon_tap_action\": {\"action\": \"none\"}, \"entity\": \"sensor.sparkx_moonraker_filament_used\"},\n {\"type\": \"picture-entity\", \"show_state\": False, \"show_name\": False, \"camera_view\": \"auto\", \"name\": \"Thumbnail\", \"tap_action\": {\"action\": \"none\"}, \"icon_tap_action\": {\"action\": \"none\"}, \"entity\": \"camera.sparkx_moonraker_thumbnail\"}\n ]\n },\n \"complete\": {\n \"type\": \"vertical-stack\",\n \"cards\": [\n {\"type\": \"tile\", \"name\": \"Print progress..\", \"icon\": \"mdi:clock-end\", \"entity\": \"sensor.sparkx_moonraker_progress\", \"features\": [{\"type\": \"bar-gauge\", \"min\": 0, \"max\": 100}]},\n {\"type\": \"tile\", \"name\": \"Filament used\", \"tap_action\": {\"action\": \"none\"}, \"icon_tap_action\": {\"action\": \"none\"}, \"entity\": \"input_text.job_filament\"}\n ]\n },\n \"standby\": {\n \"type\": \"vertical-stack\",\n \"cards\": [\n {\"type\": \"custom:mushroom-template-card\", \"primary\": \"Job progress will appear here\", \"layout\": \"vertical\", \"tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"}, \"hold_action\": {\"action\": \"none\"}, \"double_tap_action\": {\"action\": \"none\"}, \"icon_color\": \"yellow\", \"icon\": \"mdi:printer-3d\"},\n {\"type\": \"tile\", \"name\": \"Filament used in last job\", \"vertical\": True, \"tap_action\": {\"action\": \"none\"}, \"icon_tap_action\": {\"action\": \"none\"}, \"entity\": \"input_text.job_filament\"}\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"grid\",\n \"title\": \" \",\n \"cards\": [\n {\n \"type\": \"custom:state-switch\",\n \"entity\": \"sensor.sparkx_moonraker_current_print_state\",\n \"transition\": \"flip-x\",\n \"states\": {\n \"unavailable\": {\n \"type\": \"custom:mushroom-template-card\",\n \"primary\": \"Printer turned off\",\n \"layout\": \"vertical\",\n \"tap_action\": {\"action\": \"none\"},\n \"hold_action\": {\"action\": \"none\"},\n \"double_tap_action\": {\"action\": \"none\"},\n \"icon_color\": \"red\",\n \"icon\": \"mdi:printer-3d\"\n },\n \"printing\": {\n \"type\": \"horizontal-stack\",\n \"cards\": [\n {\"type\": \"custom:button-card\", \"name\": \"Pause\", \"tap_action\": {\"action\": \"toggle\"}, \"entity\": \"button.sparkx_moonraker_pause_print\"},\n {\"type\": \"custom:button-card\", \"name\": \"Resume\", \"tap_action\": {\"action\": \"toggle\"}, \"entity\": \"button.sparkx_moonraker_resume_print\"},\n {\"type\": \"custom:button-card\", \"name\": \"Cancel\", \"tap_action\": {\"action\": \"toggle\"}, \"entity\": \"button.sparkx_moonraker_cancel_print\"},\n {\"type\": \"custom:button-card\", \"name\": \"Emergency\", \"tap_action\": {\"action\": \"toggle\"}, \"color\": \"red\", \"confirmation\": {\"text\": \"This will REBOOT the printer. Are you sure?\"}, \"entity\": \"button.sparkx_moonraker_emergency_stop\"}\n ]\n },\n \"standby\": {\n \"type\": \"custom:mushroom-template-card\",\n \"primary\": \"Controls will appear here\",\n \"layout\": \"vertical\",\n \"tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"},\n \"hold_action\": {\"action\": \"none\"},\n \"double_tap_action\": {\"action\": \"none\"},\n \"icon_color\": \"yellow\",\n \"icon\": \"mdi:printer-3d\"\n }\n }\n },\n {\n \"square\": True,\n \"type\": \"grid\",\n \"columns\": 1,\n \"cards\": [\n {\n \"type\": \"conditional\",\n \"conditions\": [{\"condition\": \"state\", \"entity\": \"sensor.sparkx_moonraker_current_print_state\", \"state\": \"printing\"}],\n \"card\": {\n \"type\": \"custom:apexcharts-card\",\n \"graph_span\": \"1h\",\n \"span\": {\"start\": \"hour\", \"offset\": \"-10min\"},\n \"header\": {\"show\": True, \"title\": \"Temperatures\", \"show_states\": True, \"colorize_states\": True},\n \"now\": {\"show\": True, \"label\": \"Now\", \"color\": \"#00ff00\"},\n \"all_series_config\": {\"show\": {\"legend_value\": False}, \"float_precision\": 0},\n \"apex_config\": {\"legend\": {\"show\": False}},\n \"series\": [\n {\"entity\": \"sensor.sparkx_moonraker_extruder_temperature\", \"name\": \"Nozzle\", \"opacity\": 0.4},\n {\"entity\": \"number.sparkx_moonraker_extruder_target\", \"name\": \"Nozzle target\", \"opacity\": 0.4},\n {\"entity\": \"sensor.sparkx_moonraker_bed_temperature\", \"name\": \"Bed\", \"opacity\": 0.4},\n {\"entity\": \"number.sparkx_moonraker_bed_target\", \"name\": \"Bed target\", \"opacity\": 0.4},\n {\"entity\": \"sensor.sparkx_moonraker_mcu_temp\", \"name\": \"MCU\", \"opacity\": 0.4}\n ]\n }\n },\n {\n \"type\": \"conditional\",\n \"conditions\": [{\"condition\": \"state\", \"entity\": \"sensor.sparkx_moonraker_current_print_state\", \"state\": \"standby\"}],\n \"card\": {\n \"type\": \"custom:mushroom-template-card\",\n \"primary\": \"Temperatures will appear here\",\n \"layout\": \"vertical\",\n \"tap_action\": {\"action\": \"url\", \"url_path\": \"http://moonraker.local/\"},\n \"hold_action\": {\"action\": \"none\"},\n \"double_tap_action\": {\"action\": \"none\"},\n \"icon_color\": \"yellow\",\n \"icon\": \"mdi:printer-3d\"\n }\n }\n ]\n }\n ]\n },\n {\n \"type\": \"grid\",\n \"cards\": [\n {\"type\": \"heading\", \"heading\": \"Spoolman\", \"icon\": \"mdi:spool\"},\n {\n \"type\": \"custom:mushroom-template-card\",\n \"entity\": \"sensor.active_spool\",\n \"primary\": \"{{ states('sensor.active_spool') }}\",\n \"secondary\": \"Active spool\",\n \"icon\": \"mdi:circle\",\n \"icon_color\": \"{% set sid = states('sensor.sparkx_moonraker_spool_id') | int(0) %}{% set eid = 'sensor.spoolman_spool_' ~ sid %}{% set h = state_attr(eid, 'filament_color_hex') %}{{ ('#' ~ h) if h else '#999999' }}\",\n \"tap_action\": {\"action\": \"more-info\"}\n }\n ]\n }\n])", "config_hash": "3178a4b1bd30e47b", "title": null, "icon": null, "require_admin": null, "show_in_sidebar": null, "MandatoryBPS": false, "BestPracticeKey": null, "return_screenshot": false, "view_path": null, "patch": null}, "execution_time_ms": 32.300710678100586, "success": true, "error_message": null, "response_size_bytes": 12185, "user_context": null} diff --git a/.storage/lovelace.printer_stats b/.storage/lovelace.printer_stats index 202c7d09..045c80cb 100644 --- a/.storage/lovelace.printer_stats +++ b/.storage/lovelace.printer_stats @@ -1451,6 +1451,558 @@ } } ] + }, + { + "type": "grid", + "cards": [ + { + "type": "custom:mushroom-title-card", + "title": "BeHappy2021 Dashboard", + "subtitle": "{{ states('sensor.sparkx_moonraker_current_print_state') }}", + "alignment": "center", + "title_tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + } + } + ] + }, + { + "type": "grid", + "title": "3D Printer", + "cards": [ + { + "type": "custom:state-switch", + "entity": "sensor.sparkx_moonraker_current_print_state", + "transition": "flip-x", + "states": { + "unavailable": { + "type": "vertical-stack", + "cards": [ + { + "type": "custom:mushroom-entity-card", + "entity": "input_text.job_filament", + "name": "Filament used in last job", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + }, + { + "type": "custom:mushroom-entity-card", + "entity": "input_text.total_filament", + "name": "Total Filament Used", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + }, + { + "type": "custom:mushroom-entity-card", + "entity": "input_text.total_jobs", + "name": "Total Jobs", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + }, + { + "type": "custom:mushroom-entity-card", + "entity": "input_text.total_time", + "name": "Total Time", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + } + ] + }, + "standby": { + "type": "custom:mushroom-template-card", + "primary": "Printer is standing by", + "layout": "vertical", + "tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "yellow", + "icon": "mdi:printer-3d" + }, + "printing": { + "type": "vertical-stack", + "cards": [ + { + "type": "custom:mushroom-template-card", + "secondary": "Current filename - {{ states('sensor.sparkx_moonraker_filename') }}", + "fill_container": true, + "multiline_secondary": true, + "layout": "vertical", + "tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "green", + "icon": "mdi:printer-3d" + }, + { + "type": "horizontal-stack", + "cards": [ + { + "type": "custom:mushroom-entity-card", + "entity": "sensor.sparkx_moonraker_current_print_state", + "name": "Status", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + }, + { + "type": "custom:mushroom-entity-card", + "entity": "sensor.sparkx_moonraker_print_duration", + "name": "Elapsed", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + }, + { + "type": "custom:mushroom-entity-card", + "entity": "sensor.sparkx_moonraker_print_eta", + "name": "Completion", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + }, + { + "type": "custom:mushroom-entity-card", + "entity": "binary_sensor.sparkx_moonraker_filament_sensor", + "name": "Filament", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + } + } + ] + } + ] + }, + "complete": { + "type": "custom:mushroom-template-card", + "primary": "Printing has finished", + "layout": "vertical", + "fill_container": true, + "tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "green", + "icon": "mdi:printer-3d" + } + } + }, + { + "type": "custom:state-switch", + "entity": "sensor.sparkx_moonraker_current_print_state", + "transition": "flip-x", + "states": { + "printing": { + "type": "vertical-stack", + "cards": [ + { + "type": "tile", + "name": "Print progress..", + "icon": "mdi:clock-end", + "entity": "sensor.sparkx_moonraker_progress", + "features": [ + { + "type": "bar-gauge", + "min": 0, + "max": 100 + } + ] + }, + { + "type": "tile", + "name": "Fan speed", + "icon": "mdi:fan", + "entity": "sensor.sparkx_moonraker_hotend_fan", + "features": [ + { + "type": "bar-gauge", + "min": 0, + "max": 100 + } + ] + }, + { + "type": "tile", + "name": "Filament used", + "tap_action": { + "action": "none" + }, + "icon_tap_action": { + "action": "none" + }, + "entity": "sensor.sparkx_moonraker_filament_used" + }, + { + "type": "picture-entity", + "show_state": false, + "show_name": false, + "camera_view": "auto", + "name": "Thumbnail", + "tap_action": { + "action": "none" + }, + "icon_tap_action": { + "action": "none" + }, + "entity": "camera.sparkx_moonraker_thumbnail" + } + ] + }, + "complete": { + "type": "vertical-stack", + "cards": [ + { + "type": "tile", + "name": "Print progress..", + "icon": "mdi:clock-end", + "entity": "sensor.sparkx_moonraker_progress", + "features": [ + { + "type": "bar-gauge", + "min": 0, + "max": 100 + } + ] + }, + { + "type": "tile", + "name": "Filament used", + "tap_action": { + "action": "none" + }, + "icon_tap_action": { + "action": "none" + }, + "entity": "input_text.job_filament" + } + ] + }, + "standby": { + "type": "vertical-stack", + "cards": [ + { + "type": "custom:mushroom-template-card", + "primary": "Job progress will appear here", + "layout": "vertical", + "tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "yellow", + "icon": "mdi:printer-3d" + }, + { + "type": "tile", + "name": "Filament used in last job", + "vertical": true, + "tap_action": { + "action": "none" + }, + "icon_tap_action": { + "action": "none" + }, + "entity": "input_text.job_filament" + } + ] + } + } + } + ] + }, + { + "type": "grid", + "title": " ", + "cards": [ + { + "type": "custom:state-switch", + "entity": "sensor.sparkx_moonraker_current_print_state", + "transition": "flip-x", + "states": { + "unavailable": { + "type": "custom:mushroom-template-card", + "primary": "Printer turned off", + "layout": "vertical", + "tap_action": { + "action": "none" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "red", + "icon": "mdi:printer-3d" + }, + "printing": { + "type": "horizontal-stack", + "cards": [ + { + "type": "custom:button-card", + "name": "Pause", + "tap_action": { + "action": "toggle" + }, + "entity": "button.sparkx_moonraker_pause_print" + }, + { + "type": "custom:button-card", + "name": "Resume", + "tap_action": { + "action": "toggle" + }, + "entity": "button.sparkx_moonraker_resume_print" + }, + { + "type": "custom:button-card", + "name": "Cancel", + "tap_action": { + "action": "toggle" + }, + "entity": "button.sparkx_moonraker_cancel_print" + }, + { + "type": "custom:button-card", + "name": "Emergency", + "tap_action": { + "action": "toggle" + }, + "color": "red", + "confirmation": { + "text": "This will REBOOT the printer. Are you sure?" + }, + "entity": "button.sparkx_moonraker_emergency_stop" + } + ] + }, + "standby": { + "type": "custom:mushroom-template-card", + "primary": "Controls will appear here", + "layout": "vertical", + "tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "yellow", + "icon": "mdi:printer-3d" + } + } + }, + { + "square": true, + "type": "grid", + "columns": 1, + "cards": [ + { + "type": "conditional", + "conditions": [ + { + "condition": "state", + "entity": "sensor.sparkx_moonraker_current_print_state", + "state": "printing" + } + ], + "card": { + "type": "custom:apexcharts-card", + "graph_span": "1h", + "span": { + "start": "hour", + "offset": "-10min" + }, + "header": { + "show": true, + "title": "Temperatures", + "show_states": true, + "colorize_states": true + }, + "now": { + "show": true, + "label": "Now", + "color": "#00ff00" + }, + "all_series_config": { + "show": { + "legend_value": false + }, + "float_precision": 0 + }, + "apex_config": { + "legend": { + "show": false + } + }, + "series": [ + { + "entity": "sensor.sparkx_moonraker_extruder_temperature", + "name": "Nozzle", + "opacity": 0.4 + }, + { + "entity": "number.sparkx_moonraker_extruder_target", + "name": "Nozzle target", + "opacity": 0.4 + }, + { + "entity": "sensor.sparkx_moonraker_bed_temperature", + "name": "Bed", + "opacity": 0.4 + }, + { + "entity": "number.sparkx_moonraker_bed_target", + "name": "Bed target", + "opacity": 0.4 + }, + { + "entity": "sensor.sparkx_moonraker_mcu_temp", + "name": "MCU", + "opacity": 0.4 + } + ] + } + }, + { + "type": "conditional", + "conditions": [ + { + "condition": "state", + "entity": "sensor.sparkx_moonraker_current_print_state", + "state": "standby" + } + ], + "card": { + "type": "custom:mushroom-template-card", + "primary": "Temperatures will appear here", + "layout": "vertical", + "tap_action": { + "action": "url", + "url_path": "http://moonraker.local/" + }, + "hold_action": { + "action": "none" + }, + "double_tap_action": { + "action": "none" + }, + "icon_color": "yellow", + "icon": "mdi:printer-3d" + } + } + ] + } + ] + }, + { + "type": "grid", + "cards": [ + { + "type": "heading", + "heading": "Spoolman", + "icon": "mdi:spool" + }, + { + "type": "custom:mushroom-template-card", + "entity": "sensor.active_spool", + "primary": "{{ states('sensor.active_spool') }}", + "secondary": "Active spool", + "icon": "mdi:circle", + "icon_color": "{% set sid = states('sensor.sparkx_moonraker_spool_id') | int(0) %}{% set eid = 'sensor.spoolman_spool_' ~ sid %}{% set h = state_attr(eid, 'filament_color_hex') %}{{ ('#' ~ h) if h else '#999999' }}", + "tap_action": { + "action": "more-info" + } + } + ] } ] } diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json index e8a33823..f2d961d4 100644 --- a/zigbee2mqtt/state.json +++ b/zigbee2mqtt/state.json @@ -28,7 +28,7 @@ "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, "power": 2, - "current": 0.09, + "current": 0.1, "energy": 54.37, "power_factor": 0.16, "update": { @@ -45,7 +45,7 @@ "state": "ON", "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 121.3, + "voltage": 120.8, "countdown_to_turn_on": 0, "energy": 105.06, "power_factor": 0.2, @@ -74,11 +74,11 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 120.2, + "voltage": 119.7, "state": "ON", "ac_frequency": 60, - "energy": 213.24, - "power": 103.2, + "energy": 213.25, + "power": 100, "current": 0.92, "power_factor": 0.94, "update": { @@ -95,11 +95,11 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 121.2, + "voltage": 121, "energy": 101.23, "state": "ON", - "power": 12.6, - "current": 0.18, + "power": 15, + "current": 0.24, "ac_frequency": 60, "power_factor": 0.51, "update": { @@ -114,12 +114,12 @@ }, "0xffffb40e060895b3": { "state": "ON", - "voltage": 121.7, + "voltage": 121.2, "ac_frequency": 60, "energy": 14.61, "current": 0.02, "power": 0.1, - "power_factor": 0.22, + "power_factor": 0.11, "linkquality": 116, "update": { "state": "idle", @@ -136,7 +136,7 @@ "0xffffb40e0608864e": { "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 121.7, + "voltage": 121.2, "energy": 35.75, "countdown_to_turn_on": 0, "state": "ON", @@ -239,7 +239,7 @@ }, "0xb40e060fffe7180a": { "battery": 100, - "occupancy": true, + "occupancy": false, "tamper": false, "battery_low": false, "linkquality": 83,