Skip to content

KE100 (via KH100 hub): expose thermostat schedule/preset control (auto/manual) #1601

@MTTPoll

Description

@MTTPoll

What would you like to happen?

Please expose a public setter to toggle the KE100 thermostat "schedule/preset" mode
(e.g. auto/schedule ↔ manual) via the KH100 hub. This would allow Home Assistant
integrations to synchronize preset changes with the official Kasa/Tapo app.

Desired public API on the thermostat module (any of):

  • set_schedule_enabled(bool)
  • set_schedule_mode("auto" | "manual")
  • set_preset_mode("auto" | "manual")
  • set_mode("auto" | "manual")

Current behavior

  • Reading KE100 data (current temperature, target temperature, heating state) works.
  • There is no public setter exposed for schedule/preset/mode on KE100 via KH100.
  • Capability probing shows all relevant setters missing (False) on both the thermostat
    and device modules.

Why this matters

Without a real setter, users cannot keep Home Assistant and the Kasa/Tapo app in sync.
If the app’s schedule is active, it will override HA behavior. A public setter would
enable proper device-level control and allow HA to switch between "auto/schedule" and
"manual" modes.

Environment

  • Library: python-kasa (version: latest)
  • Hub: KH100
  • Thermostats: KE100
  • Platform: Home Assistant custom component using python-kasa

Capability logs (from live devices)

KE100 803595FC3CEE5BA3B65BDAC9B119AXXXXXXXXX capabilities:
{'thermo.set_schedule_enabled': False, 'device.set_schedule_enabled': False,
'thermo.set_schedule_mode': False, 'device.set_schedule_mode': False,
'thermo.set_preset_mode': False, 'device.set_preset_mode': False,
'thermo.set_mode': False, 'device.set_mode': False,
'thermo.set_on': False, 'device.set_on': False}

Minimal reproducible example

  1. Discover KH100, iterate hub.children, obtain thermostat module.
  2. Try to detect setters on the thermostat/device module:
    any(getattr(thermo, name, None) for name in [
        "set_schedule_enabled", "set_schedule_mode",
        "set_preset_mode", "set_mode"
    ])

Expected result

A public setter to toggle KE100 schedule/preset (auto/manual) exists and works,
so HA can call it and the Kasa/Tapo app reflects the change.

Actual result

No such setter exists; all capabilities are missing.

Additional context / proposal

If the KE100 supports this only via cloud endpoints, consider adding a
cloud-backed path with proper auth/ratelimiting (even if behind a feature flag).

If the KE100 supports it locally through KH100, please expose the method(s)
on the thermostat module.

Thanks a lot!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions