Leggin / dirigera

This repository provides an unofficial Python client for controlling the IKEA Dirigera Smart Home Hub.
MIT License
116 stars 21 forks source link

Error on get_outlets() #47

Closed alexkno79 closed 7 months ago

alexkno79 commented 7 months ago

On latest version: get_lights work fine. But for outlets I seem to run into a validation error for a third party outlet:

Traceback (most recent call last): File "//./ikea_103.py", line 26, in lights = dirigera_hub.get_outlets() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/dirigera/hub/hub.py", line 155, in get_outlets return [dict_to_outlet(outlet, self) for outlet in outlets] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/dirigera/devices/outlet.py", line 59, in dict_to_outlet return Outlet(dirigeraClient=dirigera_client, **data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pydantic/main.py", line 171, in init self.__pydantic_validator__.validate_python(data, self_instance=self) pydantic_core._pydantic_core.ValidationError: 1 validation error for Outlet attributes.startupOnOff Field required [type=missing, input_value={'customName': 'PiHWR', '...taScheduleEnd': '00:00'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.6/v/missing

I see startup_on_off: Optional[StartupEnum] in outlet.py but maybe it should be startup_on_off: Optional[StartupEnum] = None ?

Leggin commented 7 months ago

Yes you are right, this is a difference between pydantic 1 vs pydantic 2. Having something as Optional does not default to None with pydantic 2. https://docs.pydantic.dev/2.0/migration/#required-optional-and-nullable-fields

I will set all optional fields default to None on the next version. Thank you.