⚠️ Breaking: dry_time narrows to what the running course allows
- Same behavior change
dry_levelgot in v0.26.0: an automation writing a duration the running course refuses now raises a visible error instead of silently doing nothing. Thanks to @vmonkey! (#468)
🚀 Highlights
- Discovery is asked, not guessed. Before any DTLS handshake, the appliance is asked for its secure port over one plaintext CoAP datagram, and port selection is now keyed on which port actually replied — fixing cases where the wrong port (e.g.
5684) was picked for a device really listening elsewhere. Also detects legacy 8888-only bridges and boards that refuse every DTLS handshake, and names them instead of a generic "cannot connect." Requiressmartthings-local>=0.1.18. (closes #486) - Self-signed certs by default. First-time setup now only asks for the appliance's IP. The AC14K_M CA cert is only requested if a device actually rejects the self-signed leaf. (#479)
- Appliances follow you across DHCP lease changes. LocalThings reads the appliance's own WiFi MAC and reconnects automatically when its IP changes, instead of requiring a delete-and-re-add. (#471, closes #469)
Upgrade note: moving the DTLS source port base also fixes a rare EADDRINUSE bind failure on host-networked installs, but every already-configured device keeps one harmless orphaned session association until it naturally expires after upgrading.
✨ Added
- VS9700 clean-station support: station light and Do Not Disturb switches. (closes #478)
AMF-WW-TP1-22-COMMONmicrofiber-filter appliance now routes to the washer registry instead of losing half its entities to the common fallback, and gains water-filter status plus a filter-blockage sensor. (closes #475)- New
delay_finish_at("Finish by") time entity for washers, dryers and air dressers — pick a clock time and the delay is computed for you. (#456, closes #427) - Slovak translation. Thanks to @OskarSidor! (#483)
write_resourceservice gained areadbackoption and now surfaces a write's raw response body, for investigating boards that revert or explain a rejected write. (#474)
🐛 Fixed
delayEndTimewas read from one field and written to another, so a device reporting both could look like a delay-time write did nothing. (#456)- README now names the
--fallbackflag needed to fetch the AC14K_M cert withsetup_cert.py, now that its default mints a self-signed leaf instead. Thanks to @QuiteYellow! (#480)