Fixes #12758. Try other cameras even if one fails to initialize (#13276)

This commit is contained in:
PhracturedBlue 2018-03-30 15:48:31 -07:00 committed by Paulus Schoutsen
parent 0cfc7256ac
commit bf58945680

View File

@ -10,6 +10,7 @@ from datetime import timedelta
import aiohttp import aiohttp
import voluptuous as vol import voluptuous as vol
from requests.exceptions import HTTPError, ConnectTimeout from requests.exceptions import HTTPError, ConnectTimeout
from requests.exceptions import ConnectionError as ConnectError
from homeassistant.const import ( from homeassistant.const import (
CONF_NAME, CONF_HOST, CONF_PORT, CONF_USERNAME, CONF_PASSWORD, CONF_NAME, CONF_HOST, CONF_PORT, CONF_USERNAME, CONF_PASSWORD,
@ -93,14 +94,15 @@ def setup(hass, config):
amcrest_cams = config[DOMAIN] amcrest_cams = config[DOMAIN]
for device in amcrest_cams: for device in amcrest_cams:
try:
camera = AmcrestCamera(device.get(CONF_HOST), camera = AmcrestCamera(device.get(CONF_HOST),
device.get(CONF_PORT), device.get(CONF_PORT),
device.get(CONF_USERNAME), device.get(CONF_USERNAME),
device.get(CONF_PASSWORD)).camera device.get(CONF_PASSWORD)).camera
try: # pylint: disable=pointless-statement
camera.current_time camera.current_time
except (ConnectTimeout, HTTPError) as ex: except (ConnectError, ConnectTimeout, HTTPError) as ex:
_LOGGER.error("Unable to connect to Amcrest camera: %s", str(ex)) _LOGGER.error("Unable to connect to Amcrest camera: %s", str(ex))
hass.components.persistent_notification.create( hass.components.persistent_notification.create(
'Error: {}<br />' 'Error: {}<br />'
@ -108,7 +110,7 @@ def setup(hass, config):
''.format(ex), ''.format(ex),
title=NOTIFICATION_TITLE, title=NOTIFICATION_TITLE,
notification_id=NOTIFICATION_ID) notification_id=NOTIFICATION_ID)
return False continue
ffmpeg_arguments = device.get(CONF_FFMPEG_ARGUMENTS) ffmpeg_arguments = device.get(CONF_FFMPEG_ARGUMENTS)
name = device.get(CONF_NAME) name = device.get(CONF_NAME)