Add vera config entries support (#29880)
* Adding vera config entries support. * Fixing lint error. * Applying minimal changes necessary to get config entries working. * Addressing PR feedback by further reducing the scope of the change. * Addressing PR feedback. * Fixing pyvera import to make it easier to patch. Addressing PR feedback regarding creation of controller and scheduling of async config flow actions. * Updating code owners file. * Small fixes. * Adding a user config flow step. * Adding optional configs for user config flow. * Updating strings to be more clear to the user. * Adding options flow. Fixing some PR feedback. * Better handling of options. PR feedback changes. * Using config registry to update config options. * Better managing config from file or config from UI Disabling config through UI if config is provided from a file. More tests to account for these adjustments. * Address PR feedback. * Fixing test, merging with master. * Disabling all Vera UI for configs managed by configuration.yml. Adding more tests. * Updating config based on unique_id. Addressing additional PR feedback. * Rebasing off dev. Addressing feedback. * Addressing PR feedback.
This commit is contained in:
parent
aef06a3544
commit
ae22b5187a
28 changed files with 876 additions and 294 deletions
29
homeassistant/components/vera/common.py
Normal file
29
homeassistant/components/vera/common.py
Normal file
|
@ -0,0 +1,29 @@
|
|||
"""Common vera code."""
|
||||
import logging
|
||||
from typing import DefaultDict, List, NamedTuple, Set
|
||||
|
||||
import pyvera as pv
|
||||
|
||||
from homeassistant.components.scene import DOMAIN as SCENE_DOMAIN
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ControllerData(NamedTuple):
|
||||
"""Controller data."""
|
||||
|
||||
controller: pv.VeraController
|
||||
devices: DefaultDict[str, List[pv.VeraDevice]]
|
||||
scenes: List[pv.VeraScene]
|
||||
|
||||
|
||||
def get_configured_platforms(controller_data: ControllerData) -> Set[str]:
|
||||
"""Get configured platforms for a controller."""
|
||||
platforms = []
|
||||
for platform in controller_data.devices:
|
||||
platforms.append(platform)
|
||||
|
||||
if controller_data.scenes:
|
||||
platforms.append(SCENE_DOMAIN)
|
||||
|
||||
return set(platforms)
|
Loading…
Add table
Add a link
Reference in a new issue