I'm trying to get some basic bulb automation running but I'm running into an issue trying to set brightness (even though I can do it via terminal command). Before I call update() the bulbs show as not supporting dimming (which seems to be the expected behavior.
Found 3 devices to manage
Device: 192.168.0.181
Alias: Garage Lamp
Host: 192.168.0.181
Type: DeviceType.Bulb
Model: L530
Class: TapoBulb
Info: {'device_id': '8023BE7226ADF677390B874C59029B981F94C9D6', 'fw_ver': '1.1.0 Build 230721 Rel.224802', 'hw_ver': '2.0', 'type': 'SMART.TAPOBULB', 'model': 'L530', 'mac': '14-EB-B6-D3-25-35', 'hw_id': 'FDE1C68674D1535B12A042682B192E4E', 'fw_id': '00000000000000000000000000000000', 'oem_id': '90171A8CAC7DBD1A9BE64C1449D24A6A', 'color_temp_range': [2500, 6500], 'overheated': False, 'ip': '192.168.0.181', 'time_diff': -480, 'ssid': 'QmlnR3VscA==', 'rssi': -57, 'signal_level': 2, 'latitude': 455073, 'longitude': -1226173, 'lang': 'en_US', 'avatar': 'hang_lamp_1', 'region': 'America/Los_Angeles', 'specs': '', 'nickname': 'R2FyYWdlIExhbXA=', 'has_set_location_info': True, 'device_on': True, 'brightness': 29, 'hue': 120, 'saturation': 100, 'color_temp': 0, 'dynamic_light_effect_enable': False, 'default_states': {'re_power_type': 'always_on', 'type': 'last_states', 'state': {'brightness': 29, 'hue': 120, 'saturation': 100, 'color_temp': 0}}}
Is a bulb!
Traceback (most recent call last):
File "/home/shkkmo/projects/tapo/test_tapo.py", line 37, in <module>
asyncio.run(main())
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/shkkmo/projects/tapo/test_tapo.py", line 27, in main
await devices[key].set_brightness(0)
File "/home/shkkmo/projects/tapo/lib/python3.11/site-packages/kasa/tapo/tapobulb.py", line 202, in set_brightness
return await self.protocol.query(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/shkkmo/projects/tapo/lib/python3.11/site-packages/kasa/smartprotocol.py", line 63, in query
return await self._query(request, retry_count)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/shkkmo/projects/tapo/lib/python3.11/site-packages/kasa/smartprotocol.py", line 100, in _query
raise ex
File "/home/shkkmo/projects/tapo/lib/python3.11/site-packages/kasa/smartprotocol.py", line 68, in _query
return await self._execute_query(request, retry)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/shkkmo/projects/tapo/lib/python3.11/site-packages/kasa/smartprotocol.py", line 175, in _execute_query
self._handle_response_error_code(response_data)
File "/home/shkkmo/projects/tapo/lib/python3.11/site-packages/kasa/smartprotocol.py", line 197, in _handle_response_error_code
raise SmartDeviceException(msg, error_code=error_code)
kasa.exceptions.SmartDeviceException: Error querying device: 192.168.0.181: PARAMS_ERROR(-1008)
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0xffffba01f6d0>
Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0xffffb9fee0b0>, 44381.088592999)]']
connector: <aiohttp.connector.TCPConnector object at 0xffffba34ae50>
I was able to get the transport error to disappear by adding some error handling to make sure the transport gets closed after an error in my execution path.
The root cause of my -1008 error is because Tapo bulbs do not support setting brightness to 0 but we don't excluded 0 as a viable value in _raise_for_invalid_brightness
I'm trying to get some basic bulb automation running but I'm running into an issue trying to set brightness (even though I can do it via terminal command). Before I call
update()the bulbs show as not supporting dimming (which seems to be the expected behavior.However, after calling
update()on the bulb, callingset_brightness()results in aUnclosed client sessionerrorCode:
Output:
I was able to get the transport error to disappear by adding some error handling to make sure the transport gets closed after an error in my execution path.
Something like this probably needs to be used to wrap every invocation of
_handle_response_error_code, but there seem to be broader issues with making sure the transport gets closed as I ran into that error a lot in my testing.The root cause of my -1008 error is because Tapo bulbs do not support setting brightness to 0 but we don't excluded 0 as a viable value in
_raise_for_invalid_brightness