diff --git a/opencode/decisions.yaml b/opencode/decisions.yaml index b2cd895d..6fb14333 100644 --- a/opencode/decisions.yaml +++ b/opencode/decisions.yaml @@ -1053,10 +1053,10 @@ notes: segment. rationale: sensor.sparkx_i7_used_material_length is a per-job counter (resets to 0 at completion), so derived templates read 0 when idle; the helpers keep the last job - across restarts. The latch automation (1791477238762) accumulates each colour segment - into input_number.sparkx_i7_slot_N_grams; the completion adds the final segment and - sums them. A split(' ') bug left helper_idx empty, so total and last-job equalled only - the last segment (12.02 g, not 59.4 g). Do not revert. + across restarts. The latch automation (1791477238762) accumulates each colour + segment into input_number.sparkx_i7_slot_N_grams; the completion adds the final + segment and sums them. A split(' ') bug left helper_idx empty, so total and last-job + equalled only the last segment (12.02 g, not 59.4 g). Do not revert. entities: - input_number.sparkx_i7_last_job_filament_weight - input_number.sparkx_i7_last_job_cost @@ -1072,3 +1072,41 @@ notes: - spoolman pin: true status: active + - id: 2026-10-15-sparkx-i7-low-spool-alerts-use-a-4 + date: 2026-10-15 + title: SparkX i7 low-spool alerts use a 4-digit band dedupe + decision: The SparkX i7 low-spool alert (automation 1792076023718, every 15 min) stores a + 4-digit band in input_text.sparkx_i7_low_spool_notified, slot 1->4, 0=ok / 1=<100 g + / 2=<25 g, and notifies only when band > stored band and band > 0. The dashboard + tube cue mirrors the same bands. CFS Lite slots only. + rationale: Gives one notification per threshold crossing per slot; recovery updates the + stored band silently so no repeat. The tube cards compute the alert-identical band + from the same spool entity, so the card and the notification cannot disagree about a + slot's state. A spool sensor briefly going unavailable can reset its band to 0 and + re-notify once on recovery; that is known and accepted. + entities: + - input_text.sparkx_i7_low_spool_notified + - automation.sparkx_i7_low_spool_alert + files: + - automations.yaml + status: active + - id: 2026-10-15-cfs-lite-slot-matching-is-by-spoolman + date: 2026-10-15 + title: CFS Lite slot matching is by Spoolman spool location, not colour + decision: SparkX i7 per-slot filament tracking matches purely on the Spoolman spool's + location field == 'CFS Lite ' (slots 1-4); the colour check and any fallback were + removed. When swapping a roll into a slot, set that spool's Location to 'CFS Lite + ' — a stale label is the only thing that can misroute a deduction. + rationale: Identical-colour rolls in different slots auto-rotate, so colour alone cannot + attribute usage. Only individual spool records (their location field) were changed; + no Spoolman setting or config was touched. Applies to automation 1791477238729 + (completion), 1791477238762 (latch), 1791477238799 (sufficiency) and script + spoolman_set_spool_remaining. + entities: + - sensor.sparkx_i7_active_filament_slot + files: + - automations.yaml + - scripts.yaml + integrations: + - spoolman + status: active diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json index bf567aa2..3e328fd9 100644 --- a/zigbee2mqtt/state.json +++ b/zigbee2mqtt/state.json @@ -47,7 +47,7 @@ "countdown_to_turn_off": 0, "voltage": 119.3, "countdown_to_turn_on": 0, - "energy": 109.73, + "energy": 109.74, "power_factor": 0.94, "ac_frequency": 60, "update": { @@ -58,7 +58,7 @@ "latest_release_notes": null }, "linkquality": 145, - "power": 94.4, + "power": 92.4, "current": 0.89, "power_on_behavior": "on" }, @@ -74,13 +74,13 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 118.8, + "voltage": 118.3, "state": "ON", "ac_frequency": 60, - "energy": 222.83, - "power": 0.8, - "current": 0.06, - "power_factor": 0.39, + "energy": 222.84, + "power": 101.3, + "current": 0.9, + "power_factor": 0.94, "update": { "state": "idle", "installed_version": 268513381, @@ -95,13 +95,13 @@ "led_brightness": 100, "countdown_to_turn_off": 0, "countdown_to_turn_on": 0, - "voltage": 119.3, - "energy": 104.35, + "voltage": 119.8, + "energy": 104.36, "state": "ON", - "power": 42.6, + "power": 39.5, "current": 0.47, "ac_frequency": 60, - "power_factor": 0.76, + "power_factor": 0.75, "update": { "state": "idle", "installed_version": 268513381, @@ -119,7 +119,7 @@ "energy": 15.31, "current": 0.01, "power": 0.1, - "power_factor": 0.11, + "power_factor": 0.2, "linkquality": 116, "update": { "state": "idle", @@ -143,7 +143,7 @@ "current": 0.02, "ac_frequency": 60, "power": 0.4, - "power_factor": 0.14, + "power_factor": 0.2, "update": { "state": "idle", "installed_version": 268513381, @@ -171,7 +171,7 @@ }, "0xa4c1380d0679ffff": { "battery": 100, - "temperature": 11.6, + "temperature": 11.3, "temperature_units": "celsius", "temperature_calibration": 0, "update": { @@ -224,7 +224,7 @@ }, "0xb40e060fffe717c5": { "battery": 100, - "occupancy": false, + "occupancy": true, "tamper": false, "battery_low": false, "linkquality": 145,