What's Changed
Integration
- Garage doors (
HmIP-MOD-HO,HmIP-MOD-TM) gain a Door Mode select entity that exposes the door's three physical states — closed, open and ventilation position — as a first-class, tappable control. Home Assistant'scoverplatform has no native ventilation state (architecture#502), so ventilation was previously only reachable by setting a cover position inside an undiscoverable range. The data point itself comes with the aiohomematic bump below; the integration contributes the entity name and its state translations. Suggested in #1252 by @ANierbeck
Config Panel
- The climate schedule editor no longer discards unsaved edits when a second weekday is opened (frontend#95). Each weekday now keeps its own draft, including its undo history, so several days can be edited in one dialog session; changed tabs carry a dot and the footer button becomes "Save all". Closing the dialog with unsaved changes asks first, and the inline row button is labelled "Apply" / "Übernehmen" so that "Save" means only the action that writes to the CCU. This affects the config panel and the climate schedule card alike, since both render the same schedule editor
Development
- Beyond the entries above, the integration's own changes in this release are openccu-loom backend (Beta) work; the direct-CCU backend gains support for two new devices through the aiohomematic bump below. The user-facing details of the loom backend stay out of scope for this changelog until it leaves Beta
Dependencies
Bump aiohomematic to 2026.8.4
- Expose the garage door's discrete mode as a
SELECT-category combined data point.CustomDpGaragenow declares aCombinedDpGarageDoorModethat readsDOOR_STATEand writesDOOR_COMMANDunder its own parameter nameDOOR_MODE, so the integration's generic select dispatch picks it up without any platform-side wiring — and the entity is named after what it does rather than borrowing the identity of either source parameter. While the door is travelling the select keeps reporting the mode the door is heading for instead of dropping tounknown; aSTOPclears that held mode - Fix
GarageDoorState.POSITION_UNKNOWN, which carried a stray leading underscore and therefore never matched theDOOR_STATEvalue reported by the CCU - Add support for the flush-mount switch actuators
HmIP-FS6andHmIP-FSI6.HmIP-FS6has no input channel, so it shares the channel layout ofHmIP-FSMand is now registered as a switch profile on channel 2 — without that registration it only produced generic data points.OPERATING_VOLTAGEis ignored for it as well, consistent with the other mains-powered actuators - Expose
CHANNEL_OPERATION_MODEon channel 1 ofHmIP-FSI6. The custom switch data point of that device already worked, but the un-ignore rule was keyed onHmIP-FSI16only — model keys are matched withstr.startswith, and"hmip-fsi6".startswith("hmip-fsi16")isFalse, so the operation mode of the push-button input stayed hidden
Bump openccu-loom-client to 2026.8.20 (pins openccu-loom-types==0.5.2)
- Bump for the openccu-loom backend (Beta); it has no runtime effect on the direct-CCU backend, where the client is not loaded. Advances the bundled loom client from
2026.8.9to2026.8.20and its transitively pinnedopenccu-loom-typesfrom0.3.10to0.5.2 - This raises the minimum daemon to openccu-loom 0.64.1 or newer. The client is generated against the daemon's API 7.7.0 and checks that version at connect time, so it refuses a daemon reporting an older API rather than half-initializing against an incompatible one — an older daemon is rejected outright rather than merely missing newer surface. Installations that cannot update the daemon should stay on 2.9.1