Move dyson imports at top-level (#29047)

This commit is contained in:
Quentame 2019-11-25 14:06:39 +01:00 committed by Pascal Vizeli
parent 193769c791
commit 752a4d7221
6 changed files with 28 additions and 64 deletions

View File

@ -1,11 +1,12 @@
"""Support for Dyson Pure Cool Link devices.""" """Support for Dyson Pure Cool Link devices."""
import logging import logging
from libpurecool.dyson import DysonAccount
import voluptuous as vol import voluptuous as vol
import homeassistant.helpers.config_validation as cv
from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_TIMEOUT, CONF_USERNAME from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_TIMEOUT, CONF_USERNAME
from homeassistant.helpers import discovery from homeassistant.helpers import discovery
import homeassistant.helpers.config_validation as cv
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -43,8 +44,6 @@ def setup(hass, config):
if DYSON_DEVICES not in hass.data: if DYSON_DEVICES not in hass.data:
hass.data[DYSON_DEVICES] = [] hass.data[DYSON_DEVICES] = []
from libpurecool.dyson import DysonAccount
dyson_account = DysonAccount( dyson_account = DysonAccount(
config[DOMAIN].get(CONF_USERNAME), config[DOMAIN].get(CONF_USERNAME),
config[DOMAIN].get(CONF_PASSWORD), config[DOMAIN].get(CONF_PASSWORD),

View File

@ -1,7 +1,11 @@
"""Support for Dyson Pure Cool Air Quality Sensors.""" """Support for Dyson Pure Cool Air Quality Sensors."""
import logging import logging
from homeassistant.components.air_quality import AirQualityEntity, DOMAIN from libpurecool.dyson_pure_cool import DysonPureCool
from libpurecool.dyson_pure_state_v2 import DysonEnvironmentalSensorV2State
from homeassistant.components.air_quality import DOMAIN, AirQualityEntity
from . import DYSON_DEVICES from . import DYSON_DEVICES
ATTRIBUTION = "Dyson purifier air quality sensor" ATTRIBUTION = "Dyson purifier air quality sensor"
@ -15,7 +19,6 @@ ATTR_VOC = "volatile_organic_compounds"
def setup_platform(hass, config, add_entities, discovery_info=None): def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Dyson Sensors.""" """Set up the Dyson Sensors."""
from libpurecool.dyson_pure_cool import DysonPureCool
if discovery_info is None: if discovery_info is None:
return return
@ -47,8 +50,6 @@ class DysonAirSensor(AirQualityEntity):
def on_message(self, message): def on_message(self, message):
"""Handle new messages which are received from the fan.""" """Handle new messages which are received from the fan."""
from libpurecool.dyson_pure_state_v2 import DysonEnvironmentalSensorV2State
_LOGGER.debug( _LOGGER.debug(
"%s: Message received for %s device: %s", DOMAIN, self.name, message "%s: Message received for %s device: %s", DOMAIN, self.name, message
) )

View File

@ -1,20 +1,20 @@
"""Support for Dyson Pure Hot+Cool link fan.""" """Support for Dyson Pure Hot+Cool link fan."""
import logging import logging
from libpurecool.const import HeatMode, HeatState, FocusMode, HeatTarget from libpurecool.const import FocusMode, HeatMode, HeatState, HeatTarget
from libpurecool.dyson_pure_state import DysonPureHotCoolState
from libpurecool.dyson_pure_hotcool_link import DysonPureHotCoolLink from libpurecool.dyson_pure_hotcool_link import DysonPureHotCoolLink
from libpurecool.dyson_pure_state import DysonPureHotCoolState
from homeassistant.components.climate import ClimateDevice from homeassistant.components.climate import ClimateDevice
from homeassistant.components.climate.const import ( from homeassistant.components.climate.const import (
CURRENT_HVAC_COOL, CURRENT_HVAC_COOL,
CURRENT_HVAC_HEAT, CURRENT_HVAC_HEAT,
CURRENT_HVAC_IDLE, CURRENT_HVAC_IDLE,
FAN_DIFFUSE,
FAN_FOCUS,
HVAC_MODE_COOL, HVAC_MODE_COOL,
HVAC_MODE_HEAT, HVAC_MODE_HEAT,
SUPPORT_FAN_MODE, SUPPORT_FAN_MODE,
FAN_FOCUS,
FAN_DIFFUSE,
SUPPORT_TARGET_TEMPERATURE, SUPPORT_TARGET_TEMPERATURE,
) )
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS

View File

@ -5,18 +5,24 @@ https://home-assistant.io/components/fan.dyson/
""" """
import logging import logging
from libpurecool.const import FanMode, FanSpeed, NightMode, Oscillation
from libpurecool.dyson_pure_cool import DysonPureCool
from libpurecool.dyson_pure_cool_link import DysonPureCoolLink
from libpurecool.dyson_pure_state import DysonPureCoolState
from libpurecool.dyson_pure_state_v2 import DysonPureCoolV2State
import voluptuous as vol import voluptuous as vol
import homeassistant.helpers.config_validation as cv
from homeassistant.components.fan import ( from homeassistant.components.fan import (
SPEED_HIGH,
SPEED_LOW,
SPEED_MEDIUM,
SUPPORT_OSCILLATE, SUPPORT_OSCILLATE,
SUPPORT_SET_SPEED, SUPPORT_SET_SPEED,
FanEntity, FanEntity,
SPEED_LOW,
SPEED_MEDIUM,
SPEED_HIGH,
) )
from homeassistant.const import ATTR_ENTITY_ID from homeassistant.const import ATTR_ENTITY_ID
import homeassistant.helpers.config_validation as cv
from . import DYSON_DEVICES from . import DYSON_DEVICES
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -88,8 +94,6 @@ SET_DYSON_SPEED_SCHEMA = vol.Schema(
def setup_platform(hass, config, add_entities, discovery_info=None): def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Dyson fan components.""" """Set up the Dyson fan components."""
from libpurecool.dyson_pure_cool_link import DysonPureCoolLink
from libpurecool.dyson_pure_cool import DysonPureCool
if discovery_info is None: if discovery_info is None:
return return
@ -197,7 +201,6 @@ class DysonPureCoolLinkDevice(FanEntity):
def on_message(self, message): def on_message(self, message):
"""Call when new messages received from the fan.""" """Call when new messages received from the fan."""
from libpurecool.dyson_pure_state import DysonPureCoolState
if isinstance(message, DysonPureCoolState): if isinstance(message, DysonPureCoolState):
_LOGGER.debug("Message received for fan device %s: %s", self.name, message) _LOGGER.debug("Message received for fan device %s: %s", self.name, message)
@ -215,8 +218,6 @@ class DysonPureCoolLinkDevice(FanEntity):
def set_speed(self, speed: str) -> None: def set_speed(self, speed: str) -> None:
"""Set the speed of the fan. Never called ??.""" """Set the speed of the fan. Never called ??."""
from libpurecool.const import FanSpeed, FanMode
_LOGGER.debug("Set fan speed to: %s", speed) _LOGGER.debug("Set fan speed to: %s", speed)
if speed == FanSpeed.FAN_SPEED_AUTO.value: if speed == FanSpeed.FAN_SPEED_AUTO.value:
@ -227,8 +228,6 @@ class DysonPureCoolLinkDevice(FanEntity):
def turn_on(self, speed: str = None, **kwargs) -> None: def turn_on(self, speed: str = None, **kwargs) -> None:
"""Turn on the fan.""" """Turn on the fan."""
from libpurecool.const import FanSpeed, FanMode
_LOGGER.debug("Turn on fan %s with speed %s", self.name, speed) _LOGGER.debug("Turn on fan %s with speed %s", self.name, speed)
if speed: if speed:
if speed == FanSpeed.FAN_SPEED_AUTO.value: if speed == FanSpeed.FAN_SPEED_AUTO.value:
@ -244,15 +243,11 @@ class DysonPureCoolLinkDevice(FanEntity):
def turn_off(self, **kwargs) -> None: def turn_off(self, **kwargs) -> None:
"""Turn off the fan.""" """Turn off the fan."""
from libpurecool.const import FanMode
_LOGGER.debug("Turn off fan %s", self.name) _LOGGER.debug("Turn off fan %s", self.name)
self._device.set_configuration(fan_mode=FanMode.OFF) self._device.set_configuration(fan_mode=FanMode.OFF)
def oscillate(self, oscillating: bool) -> None: def oscillate(self, oscillating: bool) -> None:
"""Turn on/off oscillating.""" """Turn on/off oscillating."""
from libpurecool.const import Oscillation
_LOGGER.debug("Turn oscillation %s for device %s", oscillating, self.name) _LOGGER.debug("Turn oscillation %s for device %s", oscillating, self.name)
if oscillating: if oscillating:
@ -275,8 +270,6 @@ class DysonPureCoolLinkDevice(FanEntity):
@property @property
def speed(self) -> str: def speed(self) -> str:
"""Return the current speed.""" """Return the current speed."""
from libpurecool.const import FanSpeed
if self._device.state: if self._device.state:
if self._device.state.speed == FanSpeed.FAN_SPEED_AUTO.value: if self._device.state.speed == FanSpeed.FAN_SPEED_AUTO.value:
return self._device.state.speed return self._device.state.speed
@ -295,8 +288,6 @@ class DysonPureCoolLinkDevice(FanEntity):
def set_night_mode(self, night_mode: bool) -> None: def set_night_mode(self, night_mode: bool) -> None:
"""Turn fan in night mode.""" """Turn fan in night mode."""
from libpurecool.const import NightMode
_LOGGER.debug("Set %s night mode %s", self.name, night_mode) _LOGGER.debug("Set %s night mode %s", self.name, night_mode)
if night_mode: if night_mode:
self._device.set_configuration(night_mode=NightMode.NIGHT_MODE_ON) self._device.set_configuration(night_mode=NightMode.NIGHT_MODE_ON)
@ -310,8 +301,6 @@ class DysonPureCoolLinkDevice(FanEntity):
def set_auto_mode(self, auto_mode: bool) -> None: def set_auto_mode(self, auto_mode: bool) -> None:
"""Turn fan in auto mode.""" """Turn fan in auto mode."""
from libpurecool.const import FanMode
_LOGGER.debug("Set %s auto mode %s", self.name, auto_mode) _LOGGER.debug("Set %s auto mode %s", self.name, auto_mode)
if auto_mode: if auto_mode:
self._device.set_configuration(fan_mode=FanMode.AUTO) self._device.set_configuration(fan_mode=FanMode.AUTO)
@ -321,8 +310,6 @@ class DysonPureCoolLinkDevice(FanEntity):
@property @property
def speed_list(self) -> list: def speed_list(self) -> list:
"""Get the list of available speeds.""" """Get the list of available speeds."""
from libpurecool.const import FanSpeed
supported_speeds = [ supported_speeds = [
FanSpeed.FAN_SPEED_AUTO.value, FanSpeed.FAN_SPEED_AUTO.value,
int(FanSpeed.FAN_SPEED_1.value), int(FanSpeed.FAN_SPEED_1.value),
@ -365,8 +352,6 @@ class DysonPureCoolDevice(FanEntity):
def on_message(self, message): def on_message(self, message):
"""Call when new messages received from the fan.""" """Call when new messages received from the fan."""
from libpurecool.dyson_pure_state_v2 import DysonPureCoolV2State
if isinstance(message, DysonPureCoolV2State): if isinstance(message, DysonPureCoolV2State):
_LOGGER.debug("Message received for fan device %s: %s", self.name, message) _LOGGER.debug("Message received for fan device %s: %s", self.name, message)
self.schedule_update_ha_state() self.schedule_update_ha_state()
@ -392,8 +377,6 @@ class DysonPureCoolDevice(FanEntity):
def set_speed(self, speed: str) -> None: def set_speed(self, speed: str) -> None:
"""Set the speed of the fan.""" """Set the speed of the fan."""
from libpurecool.const import FanSpeed
if speed == SPEED_LOW: if speed == SPEED_LOW:
self._device.set_fan_speed(FanSpeed.FAN_SPEED_4) self._device.set_fan_speed(FanSpeed.FAN_SPEED_4)
elif speed == SPEED_MEDIUM: elif speed == SPEED_MEDIUM:
@ -408,8 +391,6 @@ class DysonPureCoolDevice(FanEntity):
def set_dyson_speed(self, speed: str = None) -> None: def set_dyson_speed(self, speed: str = None) -> None:
"""Set the exact speed of the purecool fan.""" """Set the exact speed of the purecool fan."""
from libpurecool.const import FanSpeed
_LOGGER.debug("Set exact speed for fan %s", self.name) _LOGGER.debug("Set exact speed for fan %s", self.name)
fan_speed = FanSpeed("{0:04d}".format(int(speed))) fan_speed = FanSpeed("{0:04d}".format(int(speed)))
@ -487,8 +468,6 @@ class DysonPureCoolDevice(FanEntity):
@property @property
def speed(self): def speed(self):
"""Return the current speed.""" """Return the current speed."""
from libpurecool.const import FanSpeed
speed_map = { speed_map = {
FanSpeed.FAN_SPEED_1.value: SPEED_LOW, FanSpeed.FAN_SPEED_1.value: SPEED_LOW,
FanSpeed.FAN_SPEED_2.value: SPEED_LOW, FanSpeed.FAN_SPEED_2.value: SPEED_LOW,
@ -508,8 +487,6 @@ class DysonPureCoolDevice(FanEntity):
@property @property
def dyson_speed(self): def dyson_speed(self):
"""Return the current speed.""" """Return the current speed."""
from libpurecool.const import FanSpeed
if self._device.state: if self._device.state:
if self._device.state.speed == FanSpeed.FAN_SPEED_AUTO.value: if self._device.state.speed == FanSpeed.FAN_SPEED_AUTO.value:
return self._device.state.speed return self._device.state.speed
@ -563,8 +540,6 @@ class DysonPureCoolDevice(FanEntity):
@property @property
def dyson_speed_list(self) -> list: def dyson_speed_list(self) -> list:
"""Get the list of available dyson speeds.""" """Get the list of available dyson speeds."""
from libpurecool.const import FanSpeed
return [ return [
int(FanSpeed.FAN_SPEED_1.value), int(FanSpeed.FAN_SPEED_1.value),
int(FanSpeed.FAN_SPEED_2.value), int(FanSpeed.FAN_SPEED_2.value),

View File

@ -1,8 +1,12 @@
"""Support for Dyson Pure Cool Link Sensors.""" """Support for Dyson Pure Cool Link Sensors."""
import logging import logging
from libpurecool.dyson_pure_cool import DysonPureCool
from libpurecool.dyson_pure_cool_link import DysonPureCoolLink
from homeassistant.const import STATE_OFF, TEMP_CELSIUS from homeassistant.const import STATE_OFF, TEMP_CELSIUS
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from . import DYSON_DEVICES from . import DYSON_DEVICES
SENSOR_UNITS = { SENSOR_UNITS = {
@ -27,8 +31,6 @@ _LOGGER = logging.getLogger(__name__)
def setup_platform(hass, config, add_entities, discovery_info=None): def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Dyson Sensors.""" """Set up the Dyson Sensors."""
from libpurecool.dyson_pure_cool_link import DysonPureCoolLink
from libpurecool.dyson_pure_cool import DysonPureCool
if discovery_info is None: if discovery_info is None:
return return

View File

@ -1,6 +1,9 @@
"""Support for the Dyson 360 eye vacuum cleaner robot.""" """Support for the Dyson 360 eye vacuum cleaner robot."""
import logging import logging
from libpurecool.const import Dyson360EyeMode, PowerMode
from libpurecool.dyson_360_eye import Dyson360Eye
from homeassistant.components.vacuum import ( from homeassistant.components.vacuum import (
SUPPORT_BATTERY, SUPPORT_BATTERY,
SUPPORT_FAN_SPEED, SUPPORT_FAN_SPEED,
@ -38,8 +41,6 @@ SUPPORT_DYSON = (
def setup_platform(hass, config, add_entities, discovery_info=None): def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Dyson 360 Eye robot vacuum platform.""" """Set up the Dyson 360 Eye robot vacuum platform."""
from libpurecool.dyson_360_eye import Dyson360Eye
_LOGGER.debug("Creating new Dyson 360 Eye robot vacuum") _LOGGER.debug("Creating new Dyson 360 Eye robot vacuum")
if DYSON_360_EYE_DEVICES not in hass.data: if DYSON_360_EYE_DEVICES not in hass.data:
hass.data[DYSON_360_EYE_DEVICES] = [] hass.data[DYSON_360_EYE_DEVICES] = []
@ -86,8 +87,6 @@ class Dyson360EyeDevice(VacuumDevice):
@property @property
def status(self): def status(self):
"""Return the status of the vacuum cleaner.""" """Return the status of the vacuum cleaner."""
from libpurecool.const import Dyson360EyeMode
dyson_labels = { dyson_labels = {
Dyson360EyeMode.INACTIVE_CHARGING: "Stopped - Charging", Dyson360EyeMode.INACTIVE_CHARGING: "Stopped - Charging",
Dyson360EyeMode.INACTIVE_CHARGED: "Stopped - Charged", Dyson360EyeMode.INACTIVE_CHARGED: "Stopped - Charged",
@ -110,8 +109,6 @@ class Dyson360EyeDevice(VacuumDevice):
@property @property
def fan_speed(self): def fan_speed(self):
"""Return the fan speed of the vacuum cleaner.""" """Return the fan speed of the vacuum cleaner."""
from libpurecool.const import PowerMode
speed_labels = {PowerMode.MAX: "Max", PowerMode.QUIET: "Quiet"} speed_labels = {PowerMode.MAX: "Max", PowerMode.QUIET: "Quiet"}
return speed_labels[self._device.state.power_mode] return speed_labels[self._device.state.power_mode]
@ -128,8 +125,6 @@ class Dyson360EyeDevice(VacuumDevice):
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:
"""Return True if entity is on.""" """Return True if entity is on."""
from libpurecool.const import Dyson360EyeMode
return self._device.state.state in [ return self._device.state.state in [
Dyson360EyeMode.FULL_CLEAN_INITIATED, Dyson360EyeMode.FULL_CLEAN_INITIATED,
Dyson360EyeMode.FULL_CLEAN_ABORTED, Dyson360EyeMode.FULL_CLEAN_ABORTED,
@ -149,8 +144,6 @@ class Dyson360EyeDevice(VacuumDevice):
@property @property
def battery_icon(self): def battery_icon(self):
"""Return the battery icon for the vacuum cleaner.""" """Return the battery icon for the vacuum cleaner."""
from libpurecool.const import Dyson360EyeMode
charging = self._device.state.state in [Dyson360EyeMode.INACTIVE_CHARGING] charging = self._device.state.state in [Dyson360EyeMode.INACTIVE_CHARGING]
return icon_for_battery_level( return icon_for_battery_level(
battery_level=self.battery_level, charging=charging battery_level=self.battery_level, charging=charging
@ -158,8 +151,6 @@ class Dyson360EyeDevice(VacuumDevice):
def turn_on(self, **kwargs): def turn_on(self, **kwargs):
"""Turn the vacuum on.""" """Turn the vacuum on."""
from libpurecool.const import Dyson360EyeMode
_LOGGER.debug("Turn on device %s", self.name) _LOGGER.debug("Turn on device %s", self.name)
if self._device.state.state in [Dyson360EyeMode.FULL_CLEAN_PAUSED]: if self._device.state.state in [Dyson360EyeMode.FULL_CLEAN_PAUSED]:
self._device.resume() self._device.resume()
@ -178,16 +169,12 @@ class Dyson360EyeDevice(VacuumDevice):
def set_fan_speed(self, fan_speed, **kwargs): def set_fan_speed(self, fan_speed, **kwargs):
"""Set fan speed.""" """Set fan speed."""
from libpurecool.const import PowerMode
_LOGGER.debug("Set fan speed %s on device %s", fan_speed, self.name) _LOGGER.debug("Set fan speed %s on device %s", fan_speed, self.name)
power_modes = {"Quiet": PowerMode.QUIET, "Max": PowerMode.MAX} power_modes = {"Quiet": PowerMode.QUIET, "Max": PowerMode.MAX}
self._device.set_power_mode(power_modes[fan_speed]) self._device.set_power_mode(power_modes[fan_speed])
def start_pause(self, **kwargs): def start_pause(self, **kwargs):
"""Start, pause or resume the cleaning task.""" """Start, pause or resume the cleaning task."""
from libpurecool.const import Dyson360EyeMode
if self._device.state.state in [Dyson360EyeMode.FULL_CLEAN_PAUSED]: if self._device.state.state in [Dyson360EyeMode.FULL_CLEAN_PAUSED]:
_LOGGER.debug("Resume device %s", self.name) _LOGGER.debug("Resume device %s", self.name)
self._device.resume() self._device.resume()