Skip to content

Unifi Protect Integration - Recording Mode Adaptive #146411

Description

@philmitch77

The problem

The Protect integration does not recognize adaptive recording

File "/usr/local/lib/python3.13/site-packages/uiprotect/data/types.py", line 78, in from_string
return cls(value) # type: ignore[call-arg]
File "/usr/local/lib/python3.13/enum.py", line 726, in call
return cls.new(cls, value)
~~~~~~~~~~~^^^^^^^^^^^^
File "/usr/local/lib/python3.13/enum.py", line 1201, in new
raise ve_exc
ValueError: 'adaptive' is not a valid RecordingMode

Core
2025.5.3
Supervisor
2025.05.3
Operating System
15.2
Frontend
20250516.0

Protect 6.0.37

What version of Home Assistant Core has the issue?

2025.5.3

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Unifi Protect

Link to integration documentation on our website

https://www.home-assistant.io/integrations/unifiprotect

Diagnostics information

No response

Example YAML snippet

Anything in the logs that might be useful for us?

Logger: homeassistant.config_entries
Source: config_entries.py:749
First occurred: 7 June 2025 at 21:13:55 (2 occurrences)
Last logged: 20:19:03

Error setting up entry protect for unifiprotect
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 749, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/unifiprotect/__init__.py", line 80, in async_setup_entry
    await protect.update()
  File "/usr/local/lib/python3.13/site-packages/uiprotect/api.py", line 830, in update
    bootstrap = await self.get_bootstrap()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/api.py", line 1198, in get_bootstrap
    return Bootstrap.from_unifi_dict(**data, api=self)
           ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 133, in from_unifi_dict
    data = cls.unifi_dict_to_dict(data)
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/bootstrap.py", line 244, in unifi_dict_to_dict
    return super().unifi_dict_to_dict(data)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 357, in unifi_dict_to_dict
    data[key] = cls._clean_protect_obj_dict(value, unifi_dicts[key], api)
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 277, in _clean_protect_obj_dict
    return {k: cls._clean_protect_obj(v, klass, api) for k, v in items.items()}
               ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 258, in _clean_protect_obj
    return klass.unifi_dict_to_dict(data=data)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/devices.py", line 1073, in unifi_dict_to_dict
    return super().unifi_dict_to_dict(data)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 353, in unifi_dict_to_dict
    data[key] = cls._clean_protect_obj(value, unifi_objs[key], api)
                ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 258, in _clean_protect_obj
    return klass.unifi_dict_to_dict(data=data)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/devices.py", line 427, in unifi_dict_to_dict
    return super().unifi_dict_to_dict(data)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/base.py", line 337, in unifi_dict_to_dict
    data[key] = convert_unifi_data(data[key], _fields[key])
                ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/utils.py", line 249, in convert_unifi_data
    return type_.from_string(value)
           ~~~~~~~~~~~~~~~~~^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/uiprotect/data/types.py", line 78, in from_string
    return cls(value)  # type: ignore[call-arg]
  File "/usr/local/lib/python3.13/enum.py", line 726, in __call__
    return cls.__new__(cls, value)
           ~~~~~~~~~~~^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/enum.py", line 1201, in __new__
    raise ve_exc
ValueError: 'adaptive' is not a valid RecordingMode

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions