v0.4.0 #94
3dg1luk43
announced in
Announcements
v0.4.0
#94
Replies: 1 comment 1 reply
-
|
Hi, I have no Delete All option at manage cycles, I can only delete the previous cycles one by one. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
[0.4.0] - 2026-01-12
Major Architectural Rewrite ("vNext")
This release marks a complete re-engineering of the HA WashData core, transitioning from simple heuristics to a rigorous signal processing pipeline and robust state machine. While the version number is minor, this is effectively a new engine under the hood.
🎉 Milestones Reached!
Thank you to everyone who has been patient during development and to all contributors who provided invaluable feedback, bug reports, and feature suggestions. This release wouldn't be possible without you!
Important
Fresh Start Recommended
This release includes significant changes to how cycles are detected and profiles are matched. The new engine depends on clean, accurate data to work properly.
If you're unsure whether your previously recorded cycles were captured correctly (e.g., cycles that ended prematurely, incorrectly merged fragments, or noisy data from before tuning your thresholds), we recommend:
This ensures the best possible matching accuracy with the new architecture.
Core Architecture: Signal Processing & State Machine
New Signal Processing Engine (
signal_processing.py):integrate_wh) that respects variable sampling intervals.robust_smooth, a hybrid algorithm combining a Median Filter (spike rejection) with a Time-Aware Exponential Moving Average (EMA) for clean trend detection.resample_adaptive,resample_uniform) handle irregular sensor updates and enforce strict gap handling (no interpolation across large gaps).Finite State Machine (FSM):
OFF→STARTING→RUNNING↔PAUSED→ENDING→OFF._p95_dt).Storage v2 & Migration
profile_store.py):WashDataStoreengine that automatically upgrades v1 data to v2 without data loss, preserving user labels and corrections.✨ functionality & Features
start_energy_threshold(Wh) anddrop_ratio.sensor.washdata_..._profile_cotton_count) showing the total cycle count properly.🛠️ Technical Improvements
termination_reasonlogging (e.g.,smart,timeout,force_stopped) tocycle_detectorandprofile_store.dt_util.now()) exclusively, permanently fixing "offset-naive/offset-aware" comparison errors.TypeAliasanddataclassfor internal structures.last_match_detailssensor attribute to exclude large raw data arrays, preventing Home Assistant state update bloat.MatchResultJSON serialization issues that were blocking sensor updates.🐛 Bug Fixes
last_cycle_end), preventing end-spikes from triggering ghosts after reboots.completion_min_secondslogic to ignore brief spikes.UnboundLocalErrorand specific edge-case crashes inprofile_store.pyduring migration.time_gridin old profile envelopes to prevent errors.dtw_bandwidthkey instrings.jsoncausing config flow validation errors.📚 Documentation
SETTINGS_VISUALIZED.mdwith comprehensive documentation for 20+ parameters, organized into logical sections (Signal Conditioning, Detection, Matching, Integrity, Interruption, Learning, Notifications).sampling_interval,watchdog_interval,profile_match_threshold,duration_tolerance,learning_confidence,auto_label_confidence, andabrupt_drop_ratio.🧹 Cleanup & Removals
auto_merge_gap_seconds: This setting was never used in the actual merge logic; removed from code, config flow, and translations.auto_merge_lookback_hours: Similar unused legacy setting removed from codebase and UI.DEFAULT_PROFILE_MATCH_MAX_DURATION_RATIOand duplicate import warnings.This discussion was created from the release v0.4.0.
Beta Was this translation helpful? Give feedback.
All reactions