ha_washdata GitHub Details, Stars and Alternatives | OpenRepoFinder
3dg1luk43 / repository
ha_washdata
Home Assistant integration for smart-plug appliance monitoring: detects cycles, matches programs, estimates time remaining. Supports washing machines, dryers, dishwashers and more.
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
100
Community adoption25% weight
55
Maintenance state20% weight
85
License clarity10% weight
100
Project information10% weight
75
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
WashData Integration
A Home Assistant custom component to monitor washing machines via smart sockets, learn power profiles, and estimate completion time using shape-correlation matching.
[!CAUTION] ELECTRICAL SAFETY WARNING: Using smart plugs such as Shelly or Sonoff with high-amperage appliances (washing machines, dryers, dishwashers) carries significant risk.
Fire Hazard: Cheap or low-rated smart plugs may overheat, melt, or catch fire under sustained high loads (heating/drying phases).
Rating Check: Ensure your smart plug is rated for the maximum peak power of your appliance (often >2500W). Standard 10A plugs may fail; 16A+ or hardwired modules are recommended.
Use at Your Own Risk: The authors of this integration are not responsible for any electrical damage or fires caused by improper hardware usage. inspect your hardware regularly.
✨ Features
Automatic detection & program matching - Detects cycle start/stop from the power trace and identifies which program ran by curve shape, duration, and energy. You teach it your programs once (it never auto-creates profiles); it recognises them thereafter and gives phase-aware time-remaining estimates.
Full-screen management panel - A WashData sidebar entry for live status, cycle and profile management, settings, diagnostics, and logs. Replaces the old multi-screen options flow.
Many appliance types - Washing machines, dryers, washer-dryer combos, dishwashers, air fryers, bread makers, and pumps/sump pumps, each with tuned defaults; plus two catch-all buckets you tune yourself: Other (Advanced) (full profile matching and learning with neutral defaults) and Threshold Device (threshold-only detection, no profile matching).
Per-cycle energy & cost - Energy and cost tracked for every cycle; cost is frozen at the price in effect when the cycle finished, so later price changes don't rewrite history. Per-profile average cost and a lifetime Energy dashboard sensor (sensor.<name>_energy_total) come built in.
Automation-first notifications - Ready-made per-event push alerts, or your own Home Assistant automations driven by WashData's cycle events - found and created from the panel. Quiet hours, cycle milestones, and richer finish-message variables included. See NOTIFICATIONS.md.
Ask your assistant - "Is my washer done?" / "How long until the dryer finishes?" answered through Home Assistant's voice/text Assist. See Ask Home Assistant.
Pause/Resume, Door & Clean state - Pause/resume active cycles (optionally cutting power), add-clothes support via a door sensor, and a "laundry still waiting" reminder after a cycle ends.
Robust & self-correcting - Energy-gated start/end detection, ghost-cycle suppression that persists across restarts, dishwasher end-spike handling, and learning feedback that refines estimates over time.
Experimental on-device ML (opt-in, off by default) - A gated, NumPy-only ML subsystem with a dedicated ML Training tab, running alongside the proven detection code and never replacing it.
Local-first - Core cycle detection, matching, and estimation run entirely inside Home Assistant with no cloud dependency; the only network feature is the opt-in, off-by-default Community Store (below). An optional Lovelace Tile Card is included.
Community Store (opt-in) - Browse and adopt programs from other users with the same appliance at the WashData Community Store. Share your own recorded programs back. All online features are opt-in and disabled by default.
📘 Basic User Guide
Designed for new users to get up and running quickly.
1. Installation
Option A: HACS (Recommended)
This integration is a default repository in HACS.
Click the button below to open the repository in HACS:
Click Download.
Restart Home Assistant.
Alternatively, open HACS > Integrations > Explore & Download Repositories > Search for "WashData".
Option B: Manual Installation
Download the custom_components/ha_washdata folder from the latest release.
Copy it to your Home Assistant custom_components directory.
Restart Home Assistant.
⚡ Getting Started (The "Happy Path")
Follow these steps to get accurate results quickly.
1. Initial Setup
Go to Settings > Devices & Services > Add Integration > WashData - or use this one-click link: . (You can later manage the entry and its devices from Settings → Devices & Services → WashData.)
Name: Name your appliance (e.g., "Washing Machine").
Device Type: Select the type (Washer, Dryer, etc.) - this sets smart defaults for the internal logic.
Power Sensor: Select your smart plug's power entity (Watts). Note: The system is now optimized for polling intervals of 30-60 seconds (defaults adjusted automatically).
Minimum Power (Optional): The standby threshold in Watts below which the appliance counts as off (default 2 W). Leave it unless your plug reports a high phantom load.
Initial Profile (Optional): A second step lets you pre-create one profile - give it a name (e.g. "Cotton") and an approximate duration in minutes. Skip it and add profiles later from the panel.
Then open the WashData panel. After setup, a WashData entry appears in the Home Assistant sidebar - that panel is where you do everything: Overview (live status + manual recording), Cycles, Profiles, Settings, ML Training, and Advanced. The integration's Configure dialog now keeps only three essentials (device type, power sensor, minimum power); every other setting and action moved into the panel.
💡 Tips for Zigbee2MQTT (Z2M) users
If you are using Zigbee2MQTT with smart plugs, ensure your device reporting is responsive enough for accurate matching:
Reporting Intervals: Decrease the reporting intervals in Z2M (e.g., Min: 1s-10s, Max: 1200s).
Power Threshold: Decrease the minimum updating threshold (e.g., from 5W to 1W or 2W) to ensure small power changes are captured promptly.
Note: These changes may slightly increase Zigbee network traffic.
2. The Golden Rule: "Teach" the Integration
WashData does not come with pre-built profiles because every machine model is different. You teach it your cycles from the WashData panel (the sidebar entry).
Option A: Manual "Record Mode" (Recommended)
This gives you the cleanest data.
On the panel's Overview screen, use the Manual Recording widget → Start Recording, then run your machine.
When the cycle finishes, press Stop.
Go to the Profiles tab and create a profile from that recording.
Option B: The Natural Way
If you prefer to just use it and label later:
Run a Cycle: Use your machine as normal. WashData tracks it as an "Unknown" cycle.
Label It: In the panel's Cycles tab, open the finished "Unknown" cycle and assign it to a new profile (e.g., "Cotton 40").
Repeat: Do this for your 2-3 most common programs.
3. Profile Granularity - How Detailed Should Profiles Be?
WashData matches cycles using power-consumption shape, cycle duration, and total energy - not temperature or spin-speed settings directly. This affects how granular your profile library should be.
What will be reliably auto-detected
Programs with clearly different durations or power patterns are always distinguished well:
Example pair
Why it works
Quick Wash (~20 min) vs Cotton (~3 h)
Huge duration gap - no ambiguity
Wash-only vs Wash+Dry
Drying adds 100–200 min and significant extra energy
Cotton vs Delicates
Different agitation/heating patterns and often different durations
Temperature and spin-speed variants
Programs that differ only in temperature or spin speed (e.g. Cotton 40°C vs Cotton 60°C) often produce similar power shapes and durations. The matcher will attempt to distinguish them using correlation and energy differences, but:
On first run the system may assign the wrong variant - correct it from the feedback attention card on the panel's Overview.
With a few confirmed corrections the system learns; 3–5 corrections per variant pair is usually enough.
If your machine's power draw barely changes between temperatures, the variants may remain hard to distinguish automatically. In that case, selecting the program manually via the Program Selector dropdown remains reliable.
Practical advice for washer-dryer combos
Create separate profiles for every wash+dry combination you use regularly (e.g. "Cotton 40°C Wash", "Cotton 40°C + Cupboard Dry"). The drying phase adds so much duration and energy that wash-only vs wash+dry is one of the easiest distinctions for the matcher to make.
Start with a small set of your most-used and most-different programs, then add temperature/spin variants gradually as you accumulate history.
4. Verification & Learning
Once profiles are created, WashData starts matching new cycles automatically.
Feedback: If a match is found but confidence is moderate, the finished cycle is flagged for review - the panel's Overview tab surfaces it as an attention card and it appears in the Cycles review queue (WashData does not raise a persistent notification for this).
Refinement: Confirm or correct the detection from that attention card on Overview.
Self-Improving: Confirming a cycle helps the system refine its duration models.
🔧 Troubleshooting & Tuning
If "Auto-Detect" isn't working perfectly, use the panel's Settings tab to tune the logic for your specific machine (each field has a hover tooltip, and observed-cycle suggestions appear inline).