From 30e7d355bae20f1172914f3f18ca1209d4ae053a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 Oct 2017 10:13:05 +0200 Subject: [PATCH 1/2] Fix remaining isses from #9711 --- .../components/alarm_control_panel/arlo.py | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/arlo.py b/homeassistant/components/alarm_control_panel/arlo.py index d10aeeaa425c82..6c3eba4ef0bb76 100644 --- a/homeassistant/components/alarm_control_panel/arlo.py +++ b/homeassistant/components/alarm_control_panel/arlo.py @@ -1,28 +1,33 @@ """ -This component provides HA alarm_control_panel support for Arlo. +Support for Arlo Alarm Control Panels. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/alarm_control_panel.arlo/ """ import asyncio import logging + import voluptuous as vol +import homeassistant.helpers.config_validation as cv +from homeassistant.components.alarm_control_panel import ( + AlarmControlPanel, PLATFORM_SCHEMA) from homeassistant.components.arlo import (DATA_ARLO, CONF_ATTRIBUTION) -from homeassistant.components.alarm_control_panel import (AlarmControlPanel, - PLATFORM_SCHEMA) -from homeassistant.const import (ATTR_ATTRIBUTION, STATE_ALARM_ARMED_AWAY, - STATE_ALARM_ARMED_HOME, STATE_ALARM_DISARMED) -from homeassistant.helpers import config_validation as cv - -DEPENDENCIES = ['arlo'] +from homeassistant.const import ( + ATTR_ATTRIBUTION, STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, + STATE_ALARM_DISARMED) _LOGGER = logging.getLogger(__name__) +ARMED = 'armed' + CONF_HOME_MODE_NAME = 'home_mode_name' + +DEPENDENCIES = ['arlo'] + +DISARMED = 'disarmed' + ICON = 'mdi:security' -ARMED = "armed" -DISARMED = "disarmed" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOME_MODE_NAME, default=ARMED): cv.string, @@ -31,7 +36,7 @@ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up Arlo Base Stations.""" + """Set up the Arlo Alarm Control Panels.""" data = hass.data[DATA_ARLO] if not data.base_stations: @@ -45,7 +50,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class ArloBaseStation(AlarmControlPanel): - """An AlarmControlPanel implementation for Arlo.""" + """Representation of an Arlo Alarm Control Panel.""" def __init__(self, data, home_mode_name): """Initialize the alarm control panel.""" @@ -107,7 +112,7 @@ def device_state_attributes(self): } def _get_state_from_mode(self, mode): - """Convert Arlo mode to HA state.""" + """Convert Arlo mode to Home Assistant state.""" if mode == ARMED: return STATE_ALARM_ARMED_AWAY elif mode == DISARMED: From 2763418008ba42082eb92ccce4a46e4add2b29b5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 Oct 2017 10:22:12 +0200 Subject: [PATCH 2/2] More clean-up --- homeassistant/components/arlo.py | 4 +-- homeassistant/components/camera/arlo.py | 43 +++++++++++-------------- homeassistant/components/sensor/arlo.py | 26 +++++++-------- 3 files changed, 31 insertions(+), 42 deletions(-) diff --git a/homeassistant/components/arlo.py b/homeassistant/components/arlo.py index 0ab629cfbd44b6..a443124ae5af22 100644 --- a/homeassistant/components/arlo.py +++ b/homeassistant/components/arlo.py @@ -1,5 +1,5 @@ """ -This component provides basic support for Netgear Arlo IP cameras. +This component provides support for Netgear Arlo IP cameras. For more details about this component, please refer to the documentation at https://home-assistant.io/components/arlo/ @@ -23,7 +23,7 @@ DOMAIN = 'arlo' NOTIFICATION_ID = 'arlo_notification' -NOTIFICATION_TITLE = 'Arlo Camera Setup' +NOTIFICATION_TITLE = 'Arlo Component Setup' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ diff --git a/homeassistant/components/camera/arlo.py b/homeassistant/components/camera/arlo.py index d473fa42d9dc83..06314f5dbab435 100644 --- a/homeassistant/components/camera/arlo.py +++ b/homeassistant/components/camera/arlo.py @@ -1,5 +1,5 @@ """ -This component provides basic support for Netgear Arlo IP cameras. +Support for Netgear Arlo IP cameras. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/camera.arlo/ @@ -9,17 +9,17 @@ import voluptuous as vol -from homeassistant.helpers import config_validation as cv -from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream +import homeassistant.helpers.config_validation as cv from homeassistant.components.arlo import DEFAULT_BRAND, DATA_ARLO from homeassistant.components.camera import Camera, PLATFORM_SCHEMA from homeassistant.components.ffmpeg import DATA_FFMPEG from homeassistant.const import ATTR_BATTERY_LEVEL - -DEPENDENCIES = ['arlo', 'ffmpeg'] +from homeassistant.helpers.aiohttp_client import async_aiohttp_proxy_stream _LOGGER = logging.getLogger(__name__) +ARLO_MODE_ARMED = 'armed' +ARLO_MODE_DISARMED = 'disarmed' ATTR_BRIGHTNESS = 'brightness' ATTR_FLIPPED = 'flipped' ATTR_MIRRORED = 'mirrored' @@ -30,8 +30,7 @@ CONF_FFMPEG_ARGUMENTS = 'ffmpeg_arguments' -ARLO_MODE_ARMED = 'armed' -ARLO_MODE_DISARMED = 'disarmed' +DEPENDENCIES = ['arlo', 'ffmpeg'] POWERSAVE_MODE_MAPPING = { 1: 'best_battery_life', @@ -100,32 +99,26 @@ def name(self): def device_state_attributes(self): """Return the state attributes.""" return { - ATTR_BATTERY_LEVEL: - self._camera.get_battery_level, - ATTR_BRIGHTNESS: - self._camera.get_brightness, - ATTR_FLIPPED: - self._camera.get_flip_state, - ATTR_MIRRORED: - self._camera.get_mirror_state, + ATTR_BATTERY_LEVEL: self._camera.get_battery_level, + ATTR_BRIGHTNESS: self._camera.get_brightness, + ATTR_FLIPPED: self._camera.get_flip_state, + ATTR_MIRRORED: self._camera.get_mirror_state, ATTR_MOTION_SENSITIVITY: - self._camera.get_motion_detection_sensitivity, + self._camera.get_motion_detection_sensitivity, ATTR_POWER_SAVE_MODE: - POWERSAVE_MODE_MAPPING[self._camera.get_powersave_mode], - ATTR_SIGNAL_STRENGTH: - self._camera.get_signal_strength, - ATTR_UNSEEN_VIDEOS: - self._camera.unseen_videos + POWERSAVE_MODE_MAPPING[self._camera.get_powersave_mode], + ATTR_SIGNAL_STRENGTH: self._camera.get_signal_strength, + ATTR_UNSEEN_VIDEOS: self._camera.unseen_videos } @property def model(self): - """Camera model.""" + """Return the camera model.""" return self._camera.model_id @property def brand(self): - """Camera brand.""" + """Return the camera brand.""" return DEFAULT_BRAND @property @@ -135,7 +128,7 @@ def should_poll(self): @property def motion_detection_enabled(self): - """Camera Motion Detection Status.""" + """Return the camera motion detection status.""" return self._motion_status def set_base_station_mode(self, mode): @@ -143,7 +136,7 @@ def set_base_station_mode(self, mode): # Get the list of base stations identified by library base_stations = self.hass.data[DATA_ARLO].base_stations - # Some Arlo cameras does not have basestation + # Some Arlo cameras does not have base station # So check if there is base station detected first # if yes, then choose the primary base station # Set the mode on the chosen base station diff --git a/homeassistant/components/sensor/arlo.py b/homeassistant/components/sensor/arlo.py index 5e1f1274160be6..231a0ae69f8e84 100644 --- a/homeassistant/components/sensor/arlo.py +++ b/homeassistant/components/sensor/arlo.py @@ -7,20 +7,21 @@ import asyncio import logging from datetime import timedelta + import voluptuous as vol -from homeassistant.helpers import config_validation as cv +import homeassistant.helpers.config_validation as cv from homeassistant.components.arlo import ( CONF_ATTRIBUTION, DEFAULT_BRAND, DATA_ARLO) - -from homeassistant.const import ( - ATTR_ATTRIBUTION, CONF_MONITORED_CONDITIONS) from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import (ATTR_ATTRIBUTION, CONF_MONITORED_CONDITIONS) from homeassistant.helpers.entity import Entity +_LOGGER = logging.getLogger(__name__) + DEPENDENCIES = ['arlo'] -_LOGGER = logging.getLogger(__name__) +SCAN_INTERVAL = timedelta(seconds=90) # sensor_type [ description, unit, icon ] SENSOR_TYPES = { @@ -35,8 +36,6 @@ vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]), }) -SCAN_INTERVAL = timedelta(seconds=90) - @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): @@ -48,18 +47,15 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): sensors = [] for sensor_type in config.get(CONF_MONITORED_CONDITIONS): if sensor_type == 'total_cameras': - sensors.append(ArloSensor(hass, - SENSOR_TYPES[sensor_type][0], - arlo, - sensor_type)) + sensors.append(ArloSensor( + hass, SENSOR_TYPES[sensor_type][0], arlo, sensor_type)) else: for camera in arlo.cameras: - name = '{0} {1}'.format(SENSOR_TYPES[sensor_type][0], - camera.name) + name = '{0} {1}'.format( + SENSOR_TYPES[sensor_type][0], camera.name) sensors.append(ArloSensor(hass, name, camera, sensor_type)) async_add_devices(sensors, True) - return True class ArloSensor(Entity): @@ -120,7 +116,7 @@ def update(self): @property def device_state_attributes(self): - """Return the state attributes.""" + """Return the device state attributes.""" attrs = {} attrs[ATTR_ATTRIBUTION] = CONF_ATTRIBUTION