FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Tapo H200 Hub does not work with python-kasa · Issue #1149 · python-kasa/python-kasa · GitHub

Repository navigation

Tapo H200 Hub does not work with python-kasa #1149

Closed

Description

Just a note, not an issue. If someone wonders why the H200 Hub will not work with python-Kasa, I have discovered that the H200 Hub uses the same security protocol as the Tapo Cameras (and is not compatible with python-Kasa). Below is the port 20002 discovery data for the H200 (from one of my Hubitat users). This is the same as on the Tapo Kamera.

POLLRESP:[device_id:69D49ADCBDB15067CAC9F26BD6ZZZZZZ, device_model:H200, device_name:Living Room Tap Hub, device_type:SMART.TAPOHUB, encrypt_info:[data:JnQE4HPv/vlyx7qw4/IGT6sg6wgSgZ1kgK61zbcCQgxnUVpBK0aRMagGBupe3D0sokbtH+LEf+f4lLsWtYawAmmQ2hm6rTZrCrMUJzCZ3scV0LQL2TlhcyyubQbsn4uQnNyLFAwi4uRCvSE4yqP51tngQCPllJTl86RfTyOCq6gILLG3s6FL+bx4XeIKzGtBxoIXy6DsUmnRQqGb7v0/ZhwWZ6aY0M, key:dv+eQ62B3+/cO427K2T1SYWqs5KJo91C49V2tJHSpHav7KKU0e+GZm7UYUXv4oKLxUhxaR3bBU7UCBjBqrY0MwcmJpB01kTOIteIMa5SPt2u0z33m1O9PxuDDm8QoXeAo2XpWfIc5xZQCRTlKS9MGAnV2Yg4T19YInRmlHdrASmm1kZpPUjzT+HXQRNpBcp+TCJOI4UfefELZmEzZiBrDPAJI4BV4o7GBx1+b6ajV7UKrpWs3DZKy7I7vxaBrhxTYJfjSAsrBIZxbTEypItEp6YrJiYq8M+y4Ph2t8SCAdpjTe23pgMzfG/yiwGCv6w8tx7Ud0TD5C5FKANtVzoYrQ==, sym_schm:AES], factory_default:false, firmware_version:1.3.3 Build 20240604 rel.61598, hardware_version:1.0, ip:192.168.1.203, isResetWiFi:false, is_support_iot_cloud:true, mac:A8-42-A1-ZZ-XX-ZZ, mgt_encrypt_schm:[is_support_https:true]]]

Note: encrypt_info.data may be truncated since the Hubitat platform UDP protocol does not support messages longer thant 1024.

Activity

  1. sdb9696 commented on Oct 11, 2024

    Contributor

    Hi @DaveGut, do you know what the discovery query looks like to get this response?

  2. DaveGut commented on Oct 11, 2024

    Author

    It should be the same protocol within the this library, module discovery.py. (I use my own based on the groovy language.) See line 193, 194 then follow the code from there. It is parsed differently since the json details are different *(and VERY similar to the Tapo Camera discovery using same discovery).

    I think that without the limits of the Hubitat UDP limitations (1024), you may be able to decrypt the json data element using the sent key and the returned key. the Hubitat UDP implementation only takes one return packet; therefore, truncating the message at 1024 bytes.

    The handshake / encryption code is DIFFERENT from in this library (verified by a user not being able to control using the code). I believe that this is a version of the handshake/encryption for the TAPO camera. Some evidence for this - but I do not yet have an H200 to fully validate. That code is in the library "https://github.com/JurajNyiri/pytapo". That code supports devices with both legacy encryption as well as the new encryption scheme (called "secure" in the code block.

    H200 will then connect to the new "sub-g" cameras and existing "sub-g" sensors that Tapo is selling (no direct wifi for the camera). It provides a camera local hub and a low-power interface to the camera itself.

  3. sdb9696 commented on Oct 11, 2024

    Contributor

    That’s really helpful thanks. So I’ve been working on getting the “camera” protocol working, do you have an H200 you can test with when it’s ready?

  4. SirWaddles commented on Oct 14, 2024

    I just set up a Home Assistant instance and noticed that the H200 isn't supported, so if there's any way I can help I'd like to. I have a bunch of devices connected to it that I'd like to get data from.

  5. rytilahti commented on Oct 14, 2024

    Member

    @SirWaddles feel free to check out #1165, it implements the protocol spoken by (at least some) cameras and it is apparently the same as what that hub uses as told by DaveGut. You can try to force that transport by passing --device-family SMART.IPCAMERA to your command, so I'd try something like kasa --device-family SMART.IPCAMERA --host <addr> --username <email> --password <pw> and play with command command to see if you can figure out what command set is being used.

  6. sdb9696 commented on Oct 14, 2024

    Contributor

    Yes, as per @rytilahti, we’re trying to work on this. It would be great to hook up on discord and see if we can test this PR with your H200.

  7. SirWaddles commented on Oct 14, 2024

    I may very well be doing something wrong, but I had no such luck. I checked out the PR and ran:

    uv run kasa --host 192.168.50.198 --username 00 --password 00 --debug
    DEBUG    [DISCOVERY] 192.168.50.198 >> {'system': {'get_sysinfo': {}}}                                   discover.py:228
    DEBUG    Waiting a total of 5 seconds for responses...                                                   discover.py:474
    Raised error: Timed out getting discovery response for 192.168.50.198
    ....
    File "E:\GitHub\kasa\python-kasa\kasa\discover.py", line 490, in discover_single
        raise TimeoutError(f"Timed out getting discovery response for {host}")
    TimeoutError: Timed out getting discovery response for 192.168.50.198
    
  8. sdb9696 commented on Oct 14, 2024

    Contributor

    So I have found with the camera that it times out first time on discovery so I just run it again. I’m not completely sure about the options that’ll work out the box for a hub but you may need to add —encrypt-type AES —ssl -df SMART.IPCAMERA but I suspect we need to make some tweaks to make it work with the cli.

  9. rytilahti commented on Oct 14, 2024

    Member

    Does kasa discover (w/o defining --host) work? It would be great to see the response payload, if it's working. Note, that you can also use --debug to see more low-level details on what's being sent and received.

  10. SirWaddles commented on Oct 14, 2024

    discover just returns a lot of information on the other devices on the network even though I'm providing a host - none of it even mentions the IP address of the hub.

    With the parameters @sdb9696 gave, I get a different result though.

    kasa --host 192.168.50.198 --username 00 --password 00 --debug --device-family SMART.IPCAMERA --encrypt-type AES --ssl
    DEBUG    Created AES transport for 192.168.50.198                                                 sslaestransport.py:142
    DEBUG    Initializing 192.168.50.198 of type <class 'kasa.experimental.smartcamera.SmartCamera'>           device.py:198
    DEBUG    192.168.50.198 multi-request-batch-1-of-1 >>                                               smartprotocol.py:185
             '{"method":"multipleRequest","request_time_milis":1728941709858,"terminal_uuid":"9aQzup6WF
             +Kq4VqMrAdNkQ==","params":{"requests":[{"method":"getDeviceInfo","params":{"device_info":{
             "name":["basic_info"]}}}]}}'
    DEBUG    Will perform handshaking...                                                              sslaestransport.py:325
    DEBUG    Posting to https://192.168.50.198                                                              httpclient.py:87
    DEBUG    Device responded with: {'error_code': -40401, 'result': {'data': {'code': -60502}}}      sslaestransport.py:345
    WARNING  Device 192.168.50.198 received unknown error code: -40401                                sslaestransport.py:166
    DEBUG    Unable to query the device: 192.168.50.198, not retrying: Unable to complete handshake:    smartprotocol.py:145
             192.168.50.198: INTERNAL_UNKNOWN_ERROR(-100000) (error_code=INTERNAL_UNKNOWN_ERROR)
    Raised error: Unable to complete handshake: 192.168.50.198: INTERNAL_UNKNOWN_ERROR(-100000)
    (error_code=INTERNAL_UNKNOWN_ERROR)
    

    Happy to talk more on Discord.

  11. sdb9696 commented on Oct 14, 2024

    Contributor

    40401 is something to do with the handshake not completing and the device forcing you to wait for a period of time before it will start handshake again. I think you can reboot it to clear this. My discord username is sdb9696 although I am going to bed now and will check it in the am.

  12. willis1203 commented on Nov 22, 2024

    When will it be supported the H200 Hub by python-kasa?

  13. sdb9696 commented on Nov 22, 2024

    Contributor

    It’s supported in the master branch. 0.8 should be released in the coming days. The only problem is we don’t have any examples of the H200 with connected battery cameras. I don’t suppose you have any?

  14. bomba5 commented on Nov 27, 2024

    I have an H200 with a D230S1 Video Doorbell and I am available to test. I can't wait to integrate this to home assistant.

  15. sdb9696 commented on Nov 27, 2024

    Contributor

    So far we haven't been able to test the H200 with a connected camera device so this would actually be very helpful. Currently it won't show your camera in HA. Are you able to hmu on discord with the same username sdb9696?

  16. sdb9696 commented on Nov 29, 2024

    Contributor
  17. rytilahti commented on Dec 1, 2024

    Member

    @DaveGut the newest release (0.8.0) added support for H200. Could you confirm if it is now working for you, and close this issue, if so?

  18. added this to the 0.9.0 milestone on Dec 12, 2024
  19. sdb9696 commented on Dec 17, 2024

    Contributor

    H200 hub now supported

  20. added a commit that references this issue on Dec 21, 2024
  21. added a commit that references this issue on Aug 31, 2025
  22. added a commit that references this issue on Oct 26, 2025
  23. added a commit that references this issue on Nov 10, 2025
  24. added a commit that references this issue on Jul 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions


      Back | FazBrowse Home | New Git URL