Repository navigation
vNext: Climate: skip devices without modes, offer only what the unit has - #549
Merged
RobHofmann merged 1 commit intoOct 9, 2026
Merged
Conversation
- A device without HVAC modes made the climate setup return, so no climate entity was created for any device after it. It now skips that device. - The target temperature was offered whenever Heat, Cool or Auto was in the mode list, also on a unit that has no SetTem (seen: the ducted unit of a Gree zone controller). It showed 0 and did nothing. It is now offered only when the unit has a target temperature. - The options form leaves the swing lists out for a unit without swing, and the climate entity then used the default lists and offered swing anyway. Swing is now offered only when the unit has it. Units that have these features are not affected.
Contributor
|
I'll hijack this PR for commenting on all About the full plan:
|
RobHofmann
added a commit
that referenced
this pull request
Oct 9, 2026
Lint installed ruff>=0.16.3, so CI picked up Ruff 0.17.0 the day it came out. 0.17 sorts an import with a trailing pragma comment differently, and const.py failed I001 on every push and PR since #547. None of #547, #548 or #549 touched const.py. 0.16.10 and 0.17.0 want opposite forms of that import, so no code passes both. Pin Ruff to an exact version in lint.yml and requirements_dev.txt so a new release cannot break CI again, and apply the 0.17 fix.
Twintop
added a commit
to Twintop/HomeAssistant-GreeClimateComponent
that referenced
this pull request
Oct 10, 2026
ZoneRole only knew the sub-units of a zone controller. It is now DeviceType and every device gets one after the info fetch: ac_unit (a standalone unit), vrf_unit (an indoor unit behind a VRF gateway), zone_controller (the ducted unit, sub-unit 00 of a zone controller) and zone. Only the two zone controller types change behaviour, so standalone and VRF units work as before. The type is in the device diagnostics. Suggested by @p-monteiro in RobHofmann#549. The controller device of a zone controller was labelled "VRF gateway". It is now "Zone controller", taken from the type of a bound sub-unit. With no bound sub-unit the registry keeps what it has. The lookup moved into a small helper, so reconcile_vrf_controllers stays simple.
Twintop
added a commit
to Twintop/HomeAssistant-GreeClimateComponent
that referenced
this pull request
Oct 10, 2026
The zones of a zone controller remember their target temperature per mode, as the wall panel does. Standalone and VRF units can now do the same, as an opt-in device option, "Remember Target Temperature per Mode" (setpoint_memory, off by default). Suggested by @p-monteiro in RobHofmann#549. - GreeDevice.target_temperature_props also gives SetTem and TemRec for a standalone or VRF unit. Raw columns are stored, so a unit set to Fahrenheit needs no conversion. - The unit learns from its own polls: mode and target come in one reply. - On a mode change from Home Assistant, SetpointMemory.apply() sets the stored target of the new mode without sending it, so it goes out in the same command as the mode. Nothing is recalled into Auto, where the unit ignores the target temperature. - The option is in the device options form for units with a target temperature, and in the YAML schema. Tested against fakes. This project has no standalone or VRF unit to try it on.
Twintop
added a commit
to Twintop/HomeAssistant-GreeClimateComponent
that referenced
this pull request
Oct 10, 2026
The zones of a zone controller remember their target temperature per mode, as the wall panel does. Standalone and VRF units can now do the same, as an opt-in device option, "Remember Target Temperature per Mode" (setpoint_memory, off by default). Suggested by @p-monteiro in RobHofmann#549. - GreeDevice.target_temperature_props also gives SetTem and TemRec for a standalone or VRF unit. Raw columns are stored, so a unit set to Fahrenheit needs no conversion. - The unit learns from its own polls: mode and target come in one reply. - On a mode change from Home Assistant, SetpointMemory.apply() sets the stored target of the new mode without sending it, so it goes out in the same command as the mode. Nothing is recalled into Auto, where the unit ignores the target temperature. - The option is in the device options form for units with a target temperature, and in the YAML schema. Tested against fakes. This project has no standalone or VRF unit to try it on.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
This is a bug fix and a small behavior change in preparation for Gree zone controller support. I found it while porting the changes I made for my own zone controller (Gree LE60-13/GH) to this project. The ducted unit behind a zone controller has no target temperature and no swing, and the climate entity offered both. The zone controller support itself will come in a later PR. Background and the full plan: https://github.com/Twintop/ha-gree-zone-controller/blob/main/upstream/README.md
Symptoms
SetTem) still gets one in its climate entity when Heat, Cool or Auto is in the mode list. It shows 0, and a change only logsProperty SetTem is unsupported on this device. Seen on the ducted unit of a LE60-13/GH zone controller.DEFAULT_SWING_MODESandDEFAULT_SWING_HORIZONTAL_MODES. Seen on the same unit, which listed vertical and horizontal swing modes.Change
continueinstead ofreturninasync_setup_entry()of the climate platform.ClimateEntityFeature.TARGET_TEMPERATUREis only added when the unit supportsSetTem.SWING_MODEandSWING_HORIZONTAL_MODEare only added when the unit supportsSwUpDnandSwingLfRig.docs/entities.mdsays when the target temperature and the swing modes are shown.Units that have these features behave as before. Units without them no longer show controls that do nothing. The state restore already checks for a missing swing list, so it needs no change.
Testing
pytest: 254 passed, as before.5.0-dev. I ran them without Home Assistant installed, so I compared the findings with the base branch.