diff --git a/.ha_mcp/logs/mcp_usage.jsonl b/.ha_mcp/logs/mcp_usage.jsonl index 231f408f..afea0401 100644 --- a/.ha_mcp/logs/mcp_usage.jsonl +++ b/.ha_mcp/logs/mcp_usage.jsonl @@ -4058,3 +4058,6 @@ {"timestamp": "2026-10-08T18:46:05.957188+00:00", "tool_name": "ha_config_set_dashboard", "parameters": {"url_path": "sparkx-i7", "config": null, "python_transform": "tmpl0 = \"{% set color = states('sensor.sparkx_i7_cfs_box_1_slot_@N@_color') | replace('#', '') | lower %}{% set ns = namespace(id='') %}{% for e in integration_entities('spoolman') %}{% if e.endswith('_color_hex') and (states(e) | replace('#', '') | lower) == color %}{% set b = e[:-10] %}{% if (states(b) | float(0)) > 0 and ns.id == '' %}{% set ns.id = states(b ~ '_id') %}{% endif %}{% endif %}{% endfor %}{% if ns.id %}• Spool {{ ns.id }} · {{ states('sensor.spoolman_spool_' ~ ns.id ~ '_vendor') | default('?', true) }} · {{ states('sensor.spoolman_spool_' ~ ns.id ~ '_material') | default('?', true) }} · {{ (states('sensor.spoolman_spool_' ~ ns.id) | float(0)) | round(1) }} g left{% elif color in ['', 'unknown', 'unavailable'] %}• Slot color unavailable{% else %}• No spool with stock matches this color{% endif %}\\n• This print: {{ (states('input_number.sparkx_i7_slot_@N@_grams') | float(0)) | round(1) }} g\"; tmpl1 = \"{% set color = states('sensor.sparkx_i7_cfs_box_1_slot_@N@_color') | replace('#', '') | lower %}{% set ns = namespace(id='') %}{% for e in integration_entities('spoolman') %}{% if e.endswith('_color_hex') and (states(e) | replace('#', '') | lower) == color %}{% set b = e[:-10] %}{% if (states(b) | float(0)) > 0 and ns.id == '' %}{% set ns.id = states(b ~ '_id') %}{% endif %}{% endif %}{% endfor %}{% if ns.id %}• {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_vendor_name') | default('?', true) }} · {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_material') | default('?', true) }} · #{{ color | upper }}\\n• Remaining: {{ (states('sensor.spoolman_spool_' ~ ns.id) | float(0)) | round(1) }} g · used {{ (state_attr('sensor.spoolman_spool_' ~ ns.id, 'used_weight') | float(0)) | round(1) }} g ({{ (state_attr('sensor.spoolman_spool_' ~ ns.id, 'used_percentage') | float(0)) | round(1) }}%)\\n• Remaining length: {{ ((state_attr('sensor.spoolman_spool_' ~ ns.id, 'remaining_length') | float(0)) / 1000) | round(1) }} m · used {{ ((state_attr('sensor.spoolman_spool_' ~ ns.id, 'used_length') | float(0)) / 1000) | round(1) }} m\\n• Spool: Ø{{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_diameter') | default('?', true) }} mm · {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_density') | default('?', true) }} g/cm³ · {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_weight') | default('?', true) }} g · art. {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_article_number') | default('?', true) }}\\n• Temps: bed {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_settings_bed_temp') | default('?', true) }}°C · hotend {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_settings_extruder_temp') | default('?', true) }}°C\\n• Flow: {{ states('sensor.spoolman_spool_' ~ ns.id ~ '_flow_rate') }} · Runout est.: {{ states('sensor.spoolman_spool_' ~ ns.id ~ '_estimated_runout') }}\\n• Registered: {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'registered') | default('?', true) }} · Location: {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'location') | default('?', true) }} · Price: {{ state_attr('sensor.spoolman_spool_' ~ ns.id, 'filament_price') | default('?', true) }}{% elif color in ['', 'unknown', 'unavailable'] %}• Slot color unavailable{% else %}• No spool with stock matches this color{% endif %}\"; [c.update({'grid_options': {'columns': 'full'}, 'secondary': tmpl0.replace('@N@', c['entity'].split('_slot_')[1].split('_')[0])}) for c in config['views'][3]['sections'][0]['cards'][1:5]]; [c.update({'grid_options': {'columns': 'full'}}) for c in config['views'][3]['sections'][0]['cards'][5:8]]; [c.update({'grid_options': {'columns': 'full'}, 'secondary': tmpl1.replace('@N@', c['entity'].split('_slot_')[1].split('_')[0])}) for c in config['views'][3]['sections'][1]['cards'][1:5]]", "config_hash": "01d0d9dd971fec4f", "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": 102.57697105407715, "success": true, "error_message": null, "response_size_bytes": 4890, "user_context": null} {"timestamp": "2026-10-08T18:46:10.029038+00:00", "tool_name": "ha_config_get_dashboard", "parameters": {"url_path": "sparkx-i7", "list_only": false, "force_reload": false, "entity_id": null, "card_type": "custom:mushroom-template-card", "heading": "CFS Slots", "include_config": false, "include_screenshot": false, "view_path": "spoolman", "mode": null, "query": null}, "execution_time_ms": 61.455726623535156, "success": true, "error_message": null, "response_size_bytes": 623, "user_context": null} {"timestamp": "2026-10-08T18:46:13.523870+00:00", "tool_name": "ha_config_get_dashboard", "parameters": {"url_path": "sparkx-i7", "list_only": false, "force_reload": false, "entity_id": null, "card_type": null, "heading": null, "include_config": false, "include_screenshot": false, "view_path": "spoolman", "mode": null, "query": null}, "execution_time_ms": 39.377689361572266, "success": true, "error_message": null, "response_size_bytes": 30227, "user_context": null} +{"timestamp": "2026-10-08T18:47:31.579969+00:00", "tool_name": "ha_get_state", "parameters": {"entity_id": ["sensor.sparkx_i7_active_filament_slot", "sensor.sparkx_i7_used_material_length", "input_number.sparkx_i7_filament_g_cm", "input_number.sparkx_i7_slot_1_grams", "input_number.sparkx_i7_slot_2_grams", "input_number.sparkx_i7_slot_3_grams", "input_number.sparkx_i7_slot_4_grams", "input_text.sparkx_i7_print_spool_latch", "sensor.sparkx_i7_filament_weight_estimated"], "fields": ["state", "attributes"], "attribute_keys": ["friendly_name"]}, "execution_time_ms": 32.12451934814453, "success": true, "error_message": null, "response_size_bytes": 1490, "user_context": null} +{"timestamp": "2026-10-08T18:47:31.753699+00:00", "tool_name": "ha_config_get_automation", "parameters": {"identifier": "automation.sparkx_i7_latch_print_spool_for_spoolman"}, "execution_time_ms": 234.15517807006836, "success": true, "error_message": null, "response_size_bytes": 5423, "user_context": null} +{"timestamp": "2026-10-08T18:47:31.833001+00:00", "tool_name": "ha_config_get_automation", "parameters": {"identifier": "automation.sparkx_i7_deduct_filament_in_spoolman_on_print_complete"}, "execution_time_ms": 284.06524658203125, "success": true, "error_message": null, "response_size_bytes": 5731, "user_context": null} diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json index 8be118bd..5861a46d 100644 --- a/zigbee2mqtt/state.json +++ b/zigbee2mqtt/state.json @@ -4,7 +4,7 @@ "state": "ON", "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 118.8, + "voltage": 119.3, "countdown_to_turn_on": 0, "ac_frequency": 60, "power_factor": 0.15, @@ -22,15 +22,15 @@ }, "0xffffb40e0607af27": { "state": "ON", - "voltage": 118.8, + "voltage": 119, "ac_frequency": 60, "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "power": 2.2, + "power": 2, "current": 0.09, "energy": 54.02, - "power_factor": 0.17, + "power_factor": 0.18, "update": { "state": "idle", "installed_version": 268513381, @@ -45,10 +45,10 @@ "state": "ON", "led_brightness": 100, "countdown_to_turn_off": 0, - "voltage": 118.4, + "voltage": 119, "countdown_to_turn_on": 0, "energy": 103.7, - "power_factor": 0.2, + "power_factor": 0.31, "ac_frequency": 60, "update": { "state": "idle", @@ -58,7 +58,7 @@ "latest_release_notes": null }, "linkquality": 145, - "power": 0.2, + "power": 86, "current": 0.01, "power_on_behavior": "on" }, @@ -74,13 +74,13 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 117.4, + "voltage": 118, "state": "ON", "ac_frequency": 60, - "energy": 210.5, - "power": 95.8, - "current": 0.89, - "power_factor": 0.95, + "energy": 210.51, + "power": 0.8, + "current": 0.11, + "power_factor": -0.98, "update": { "state": "idle", "installed_version": 268513381, @@ -95,7 +95,7 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 118.6, + "voltage": 119.1, "energy": 100.7, "state": "ON", "power": 10.4, @@ -119,7 +119,7 @@ "energy": 14.2, "current": 0.01, "power": 0.2, - "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": 120.5, + "voltage": 119.3, "energy": 33.5, "countdown_to_turn_on": 0, "state": "ON",