Skip to content

Remove thermostat entities moved to zha-quirks - #996

Draft
zigpy-review-bot wants to merge 3 commits into
devfrom
zigpy-bot/remove-moes-zonnsmart-thermostats
Draft

zigpy-review-bot wants to merge 3 commits into
devfrom
zigpy-bot/remove-moes-zonnsmart-thermostats

Conversation

@zigpy-review-bot

@zigpy-review-bot zigpy-review-bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Removes the manufacturer-specific thermostat entity classes that moved into zha-quirks with its new entity API, plus two that were identical to the base Thermostat.

Draft until a zha-quirks release has those PRs: the quirks replace exactly ZHA's base Thermostat, so they only take effect once these classes are gone, and ZHA's tests import the v1 classes the first PR removes. This should go in with the zha-quirks bump.

Changes

  • Remove MoesThermostat, ZONNSMARTThermostat and their manufacturer lists, and the tests ported to zha-quirks (test_set_moes_preset, test_set_moes_operation_mode, test_set_zonnsmart_preset, test_set_zonnsmart_operation_mode).
  • Remove StelproFanHeater and ZehnderThermostat, and test_set_hvac_mode_zehnder (ported). test_climate_hvac_action_running_state_zehnder stays; it now gets the quirk's entity.
  • Remove ZenWithinThermostat and CentralitePearl: same cluster match as Thermostat, only at a higher priority, so those devices get the identical base entity.
  • Regenerate the affected snapshots.

Testing

With the three zha-quirks branches installed:

  • tze200-mudxchsu-ts0601-0x00000045.json: ZONNSMARTThermostat → ZonnsmartTV01Climate and the new quirk_class; same presets and unique ID.
  • tze200-sur6q7ko-ts0601-0x00000045.json: gains the ZONNSMART presets (this model wasn't in ZHA's list).
  • tze200-cpmgn2cf-ts0601.json: the importer reconstructed its signature with a ZCL thermostat (see its row in Audit diagnostics-importer "legacy attribute" allowlist (zha#799): missing quirks for lumi.curtain.acn003 & Legrand Contactor zha-device-handlers#5120), so neither the v1 nor the v2 quirk applies; it loses the Moes presets, which wrote an attribute that cluster doesn't have, and gets the off mode back.
  • zehnder-group-vaux-andigny-alcantara2-d1-00p1-02z1-00.json: now quirked; the entity is unchanged.
  • zen-within-zen-01-0x0000021f.json: class name only.
  • tests/test_climate.py passes; full suite: 1774 passed.

Additional information

The climate presets of the Moes HY368 and ZONNSMART TV01-ZG TRVs moved into
their quirks (zigpy/zha-device-handlers), which now create the climate entity.
The Stelpro SORB and Zehnder thermostat entities moved into quirks
(zigpy/zha-device-handlers).
They are identical to the base Thermostat entity, which ZHA picks for these
devices without them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

code quality Improvement to code quality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant