Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

H200: S200B button events not retrievable via local API — trigger_log component declared but get_trigger_logs returns sum=0; get_event_logs unsupported #1699

Copy link
Copy link
@SrivastavaSrijan

Description

@SrivastavaSrijan
Issue body actions

H200 hub paired with an S200B button. Button presses are recorded in the Tapo app's activity history (so the hub is receiving them), but I cannot find any local API method that exposes them. T100 motion and T110 contact on the same hub work fine because they expose stateful fields in get_device_info — S200B has no such field, only its identity/signal/battery.

Same setup on the H100 works via get_trigger_logs per the workaround in #1117. On H200 that method returns an empty log.

Setup

  • Hub: H200, firmware 1.6.1 Build 20251230 rel.64168
  • Child: S200B, fw 1.13.0 Build 250226 Rel.134253
  • python-kasa current main
  • Library detects hub as SmartCamDevice over SmartCamProtocol, child as SmartChildDevice over _ChildCameraProtocolWrapper
  • hub.update() succeeds, 3 children enumerated, all show TriggerLogs in child.modules

What I tried

All queries via child.protocol.query(...):

get_trigger_logs   -> {"start_id": 0, "logs": [], "sum": 0}   (sum=0 across many button presses)
get_event_logs     -> Error: UNSPECIFIC_ERROR(-1001) for method: get_event_logs
get_double_click   -> UNSPECIFIC_ERROR(-1001)
get_double_click_status, get_double_click_info -> same
get_trigger_log_config / get_trigger_log_status -> same
get_recent_event(s), get_latest_event, get_button_pressed, get_press_status -> same

For completeness, the H100-era control_child wrapper against the hub returns UNSUPPORTED_METHOD(-40106) on H200, as expected (smartcam protocol).

Components reported by S200B (component_nego)

['device', 'quick_setup', 'trigger_log', 'time', 'device_local_time',
 'account', 'synchronize', 'cloud_connect', 'iot_cloud', 'firmware',
 'localSmart', 'battery_detect', 'double_click', 'child_migrate']

Both trigger_log AND double_click are declared but neither appears populated by any locally queryable method. Contrast with T100/T110 on the same hub — those expose detected: bool / open: bool directly in get_device_info and surface correctly in HA's tplink integration.

get_device_info on S200B (no event-related fields)

parent_device_id, master_key, hw_ver, fw_ver, device_id, mac, type, model,
hw_id, oem_id, specs, category, bind_count, status_follow_edge, status,
lastOnboardingTimestamp, rssi, signal_level, jamming_rssi, jamming_signal_level,
at_low_battery, migrate_status, migrate_support, nickname, avatar

Repro snippet

import asyncio
from kasa import Discover, Credentials

async def main():
    hub = await Discover.discover_single(
        "<HUB_IP>",
        credentials=Credentials("<email>", "<password>"),
    )
    await hub.update()
    s200b = next(c for c in hub.children if c.model == "S200B")
    # Press the button several times before this query.
    print(await s200b.protocol.query({"get_trigger_logs": {"start_id": 0}}))
    # -> {'get_trigger_logs': {'start_id': 0, 'logs': [], 'sum': 0}}
    print(await s200b.protocol.query({"get_event_logs": {"start_id": 0}}))
    # -> raises UNSPECIFIC_ERROR(-1001)

asyncio.run(main())

Question

Does the H200 firmware actually expose child trigger/event history through any local request? The components declare trigger_log and double_click exist, but no get_* invocation I tried surfaces the data — only the Tapo app does, presumably via cloud. Happy to capture additional traces or test specific request shapes if there's a known smartcam wrapper I'm missing.

Related: #1117 (S200B on H100 — the workaround there doesn't apply because the underlying method returns empty on H200).

Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.