mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 10:47:10 +00:00
Fix ONVIF YAML import (#35035)
This commit is contained in:
parent
b3201523aa
commit
e1ae455f1d
@ -5,15 +5,23 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS
|
from homeassistant.components.ffmpeg import CONF_EXTRA_ARGUMENTS
|
||||||
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
||||||
from homeassistant.const import CONF_HOST
|
from homeassistant.const import (
|
||||||
|
CONF_HOST,
|
||||||
|
CONF_NAME,
|
||||||
|
CONF_PASSWORD,
|
||||||
|
CONF_PORT,
|
||||||
|
CONF_USERNAME,
|
||||||
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_per_platform
|
from homeassistant.helpers import config_per_platform
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
CONF_PROFILE,
|
|
||||||
CONF_RTSP_TRANSPORT,
|
CONF_RTSP_TRANSPORT,
|
||||||
DEFAULT_ARGUMENTS,
|
DEFAULT_ARGUMENTS,
|
||||||
DEFAULT_PROFILE,
|
DEFAULT_NAME,
|
||||||
|
DEFAULT_PASSWORD,
|
||||||
|
DEFAULT_PORT,
|
||||||
|
DEFAULT_USERNAME,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
RTSP_TRANS_PROTOCOLS,
|
RTSP_TRANS_PROTOCOLS,
|
||||||
)
|
)
|
||||||
@ -32,12 +40,14 @@ async def async_setup(hass: HomeAssistant, config: dict):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
config = p_config.copy()
|
config = p_config.copy()
|
||||||
profile = config.get(CONF_PROFILE, DEFAULT_PROFILE)
|
|
||||||
if config[CONF_HOST] not in configs.keys():
|
if config[CONF_HOST] not in configs.keys():
|
||||||
configs[config[CONF_HOST]] = config
|
configs[config[CONF_HOST]] = {
|
||||||
configs[config[CONF_HOST]][CONF_PROFILE] = [profile]
|
CONF_HOST: config[CONF_HOST],
|
||||||
else:
|
CONF_NAME: config.get(CONF_NAME, DEFAULT_NAME),
|
||||||
configs[config[CONF_HOST]][CONF_PROFILE].append(profile)
|
CONF_PASSWORD: config.get(CONF_PASSWORD, DEFAULT_PASSWORD),
|
||||||
|
CONF_PORT: config.get(CONF_PORT, DEFAULT_PORT),
|
||||||
|
CONF_USERNAME: config.get(CONF_USERNAME, DEFAULT_USERNAME),
|
||||||
|
}
|
||||||
|
|
||||||
for conf in configs.values():
|
for conf in configs.values():
|
||||||
hass.async_create_task(
|
hass.async_create_task(
|
||||||
@ -64,7 +74,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
|||||||
|
|
||||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
|
||||||
"""Unload a config entry."""
|
"""Unload a config entry."""
|
||||||
unload_ok = all(
|
return all(
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
*[
|
*[
|
||||||
hass.config_entries.async_forward_entry_unload(entry, component)
|
hass.config_entries.async_forward_entry_unload(entry, component)
|
||||||
@ -73,8 +83,6 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return unload_ok
|
|
||||||
|
|
||||||
|
|
||||||
async def async_populate_options(hass, entry):
|
async def async_populate_options(hass, entry):
|
||||||
"""Populate default options for device."""
|
"""Populate default options for device."""
|
||||||
|
@ -125,21 +125,20 @@ class OnvifFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
|
|
||||||
discovery = await async_discovery(self.hass)
|
discovery = await async_discovery(self.hass)
|
||||||
for device in discovery:
|
for device in discovery:
|
||||||
configured = False
|
configured = any(
|
||||||
for entry in self._async_current_entries():
|
entry.unique_id == device[CONF_DEVICE_ID]
|
||||||
if entry.unique_id == device[CONF_DEVICE_ID]:
|
for entry in self._async_current_entries()
|
||||||
configured = True
|
)
|
||||||
break
|
|
||||||
if not configured:
|
if not configured:
|
||||||
self.devices.append(device)
|
self.devices.append(device)
|
||||||
|
|
||||||
LOGGER.debug("Discovered ONVIF devices %s", pformat(self.devices))
|
LOGGER.debug("Discovered ONVIF devices %s", pformat(self.devices))
|
||||||
|
|
||||||
if self.devices:
|
if self.devices:
|
||||||
names = []
|
names = [
|
||||||
|
f"{device[CONF_NAME]} ({device[CONF_HOST]})" for device in self.devices
|
||||||
for device in self.devices:
|
]
|
||||||
names.append(f"{device[CONF_NAME]} ({device[CONF_HOST]})")
|
|
||||||
|
|
||||||
names.append(CONF_MANUAL_INPUT)
|
names.append(CONF_MANUAL_INPUT)
|
||||||
|
|
||||||
@ -299,7 +298,7 @@ def get_device(hass, host, port, username, password) -> ONVIFCamera:
|
|||||||
"""Get ONVIFCamera instance."""
|
"""Get ONVIFCamera instance."""
|
||||||
session = async_get_clientsession(hass)
|
session = async_get_clientsession(hass)
|
||||||
transport = AsyncTransport(None, session=session)
|
transport = AsyncTransport(None, session=session)
|
||||||
device = ONVIFCamera(
|
return ONVIFCamera(
|
||||||
host,
|
host,
|
||||||
port,
|
port,
|
||||||
username,
|
username,
|
||||||
@ -307,5 +306,3 @@ def get_device(hass, host, port, username, password) -> ONVIFCamera:
|
|||||||
f"{os.path.dirname(onvif.__file__)}/wsdl/",
|
f"{os.path.dirname(onvif.__file__)}/wsdl/",
|
||||||
transport=transport,
|
transport=transport,
|
||||||
)
|
)
|
||||||
|
|
||||||
return device
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user