⚠️ Breaking: config entries move to v4
Two Samsung air purifiers of the same model were confirmed reporting the identical, well-formed serial number BS7SP9AW400114A — since every entity, the device, and the entry itself were keyed from that string, the second unit was refused as already configured. Identity now resolves /oic/d's di → /oic/p's pi → the serial → the host, in that order, since di is what the protocol already uses to address the device and can't be shared across units the way a serial can.
The re-key can't happen at migration time — the UUID is only readable from a live device, and an entry can load entirely from its offline snapshot. So the v3 → v4 migration itself is a no-op beyond recording your current key; the coordinator adopts the new UUID on the first successful poll after upgrading, rewriting your entity registry, device registry, and the entry's identity together so entity IDs, names, areas, statistics, and automations all survive intact. A board that doesn't answer either OCF resource is unaffected and keeps working exactly as before.
Once an entry has migrated to v4, it can't be loaded by an older release — a downgrade guard fails the entry rather than risk silently orphaning its entities. Back up your config if you might need to roll back. (#383, closes #381)
✨ Added
- Dishwashers get the Drum Clean+
drum_clean_cycles_remainingsensor that washers and dryers already report. (#386, #399, closes #398) - Air purifiers report a
co2sensor when the device lists one. Thanks to @JayChickenK! (#390, closes #387) - Dishwasher
progressgained a translated "Sanitizing" stage. (#399, closes #397) - Dryer
Table_00cycle catalog gained 14 more course codes (Cotton, Air Wash, Super Speed, Mixed Load, Iron Dry, Wool, Outdoor Care, Cool Air, Warm Air, Time Dry, Quick Dry 35, Delicates, Synthetics), confirmed on a DV6800N. (#403, closes #394)
🐛 Fixed
- A switched-off washer or dryer no longer triggers a redundant reconnect after its DTLS handshake times out, cutting repeating ERROR-level log spam down to one error per outage. (#402, closes #269)
- Readings that never arrive over OBSERVE's live push updates (power, setpoint, and similar) no longer sit stale for up to 30 seconds. Thanks to @JayChickenK! (#391, closes #92)