diff --git a/homeassistant/components/elkm1/__init__.py b/homeassistant/components/elkm1/__init__.py index d15399df67b..d257c46839c 100644 --- a/homeassistant/components/elkm1/__init__.py +++ b/homeassistant/components/elkm1/__init__.py @@ -2,7 +2,10 @@ import logging import re +import elkm1_lib as elkm1 +from elkm1_lib.const import Max import voluptuous as vol + from homeassistant.const import ( CONF_EXCLUDE, CONF_HOST, @@ -12,8 +15,7 @@ from homeassistant.const import ( CONF_USERNAME, ) from homeassistant.core import HomeAssistant, callback # noqa -from homeassistant.helpers import config_validation as cv -from homeassistant.helpers import discovery +from homeassistant.helpers import config_validation as cv, discovery from homeassistant.helpers.entity import Entity from homeassistant.helpers.typing import ConfigType # noqa @@ -125,9 +127,6 @@ CONFIG_SCHEMA = vol.Schema( async def async_setup(hass: HomeAssistant, hass_config: ConfigType) -> bool: """Set up the Elk M1 platform.""" - from elkm1_lib.const import Max - import elkm1_lib as elkm1 - devices = {} elk_datas = {} diff --git a/homeassistant/components/elkm1/alarm_control_panel.py b/homeassistant/components/elkm1/alarm_control_panel.py index 927ed53115e..38519ab5b3f 100644 --- a/homeassistant/components/elkm1/alarm_control_panel.py +++ b/homeassistant/components/elkm1/alarm_control_panel.py @@ -1,4 +1,5 @@ """Each ElkM1 area will be created as a separate alarm_control_panel.""" +from elkm1_lib.const import AlarmState, ArmedStatus, ArmLevel, ArmUpState import voluptuous as vol import homeassistant.components.alarm_control_panel as alarm @@ -93,8 +94,6 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= def _arm_services(): - from elkm1_lib.const import ArmLevel - return { "elkm1_alarm_arm_vacation": ArmLevel.ARMED_VACATION.value, "elkm1_alarm_arm_home_instant": ArmLevel.ARMED_STAY_INSTANT.value, @@ -147,8 +146,6 @@ class ElkArea(ElkEntity, alarm.AlarmControlPanel): @property def device_state_attributes(self): """Attributes of the area.""" - from elkm1_lib.const import AlarmState, ArmedStatus, ArmUpState - attrs = self.initial_attrs() elmt = self._element attrs["is_exit"] = elmt.is_exit @@ -164,8 +161,6 @@ class ElkArea(ElkEntity, alarm.AlarmControlPanel): return attrs def _element_changed(self, element, changeset): - from elkm1_lib.const import ArmedStatus - elk_state_to_hass_state = { ArmedStatus.DISARMED.value: STATE_ALARM_DISARMED, ArmedStatus.ARMED_AWAY.value: STATE_ALARM_ARMED_AWAY, @@ -191,8 +186,6 @@ class ElkArea(ElkEntity, alarm.AlarmControlPanel): return self._element.timer1 > 0 or self._element.timer2 > 0 def _area_is_in_alarm_state(self): - from elkm1_lib.const import AlarmState - return self._element.alarm_state >= AlarmState.FIRE_ALARM.value async def async_alarm_disarm(self, code=None): @@ -201,20 +194,14 @@ class ElkArea(ElkEntity, alarm.AlarmControlPanel): async def async_alarm_arm_home(self, code=None): """Send arm home command.""" - from elkm1_lib.const import ArmLevel - self._element.arm(ArmLevel.ARMED_STAY.value, int(code)) async def async_alarm_arm_away(self, code=None): """Send arm away command.""" - from elkm1_lib.const import ArmLevel - self._element.arm(ArmLevel.ARMED_AWAY.value, int(code)) async def async_alarm_arm_night(self, code=None): """Send arm night command.""" - from elkm1_lib.const import ArmLevel - self._element.arm(ArmLevel.ARMED_NIGHT.value, int(code)) async def _arm_service(self, arm_level, code): diff --git a/homeassistant/components/elkm1/climate.py b/homeassistant/components/elkm1/climate.py index 58273e71222..abc9dc0933c 100644 --- a/homeassistant/components/elkm1/climate.py +++ b/homeassistant/components/elkm1/climate.py @@ -1,4 +1,6 @@ """Support for control of Elk-M1 connected thermostats.""" +from elkm1_lib.const import ThermostatFan, ThermostatMode, ThermostatSetting + from homeassistant.components.climate import ClimateDevice from homeassistant.components.climate.const import ( ATTR_TARGET_TEMP_HIGH, @@ -16,7 +18,6 @@ from homeassistant.const import PRECISION_WHOLE, STATE_ON from . import DOMAIN as ELK_DOMAIN, ElkEntity, create_elk_entities - SUPPORT_HVAC = [ HVAC_MODE_OFF, HVAC_MODE_HEAT, @@ -67,8 +68,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): @property def target_temperature(self): """Return the temperature we are trying to reach.""" - from elkm1_lib.const import ThermostatMode - if (self._element.mode == ThermostatMode.HEAT.value) or ( self._element.mode == ThermostatMode.EMERGENCY_HEAT.value ): @@ -115,8 +114,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): @property def is_aux_heat(self): """Return if aux heater is on.""" - from elkm1_lib.const import ThermostatMode - return self._element.mode == ThermostatMode.EMERGENCY_HEAT.value @property @@ -132,8 +129,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): @property def fan_mode(self): """Return the fan setting.""" - from elkm1_lib.const import ThermostatFan - if self._element.fan == ThermostatFan.AUTO.value: return HVAC_MODE_AUTO if self._element.fan == ThermostatFan.ON.value: @@ -141,8 +136,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): return None def _elk_set(self, mode, fan): - from elkm1_lib.const import ThermostatSetting - if mode is not None: self._element.set(ThermostatSetting.MODE.value, mode) if fan is not None: @@ -150,8 +143,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): async def async_set_hvac_mode(self, hvac_mode): """Set thermostat operation mode.""" - from elkm1_lib.const import ThermostatFan, ThermostatMode - settings = { HVAC_MODE_OFF: (ThermostatMode.OFF.value, ThermostatFan.AUTO.value), HVAC_MODE_HEAT: (ThermostatMode.HEAT.value, None), @@ -163,14 +154,10 @@ class ElkThermostat(ElkEntity, ClimateDevice): async def async_turn_aux_heat_on(self): """Turn auxiliary heater on.""" - from elkm1_lib.const import ThermostatMode - self._elk_set(ThermostatMode.EMERGENCY_HEAT.value, None) async def async_turn_aux_heat_off(self): """Turn auxiliary heater off.""" - from elkm1_lib.const import ThermostatMode - self._elk_set(ThermostatMode.HEAT.value, None) @property @@ -180,8 +167,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): async def async_set_fan_mode(self, fan_mode): """Set new target fan mode.""" - from elkm1_lib.const import ThermostatFan - if fan_mode == HVAC_MODE_AUTO: self._elk_set(None, ThermostatFan.AUTO.value) elif fan_mode == STATE_ON: @@ -189,8 +174,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): async def async_set_temperature(self, **kwargs): """Set new target temperature.""" - from elkm1_lib.const import ThermostatSetting - low_temp = kwargs.get(ATTR_TARGET_TEMP_LOW) high_temp = kwargs.get(ATTR_TARGET_TEMP_HIGH) if low_temp is not None: @@ -199,8 +182,6 @@ class ElkThermostat(ElkEntity, ClimateDevice): self._element.set(ThermostatSetting.COOL_SETPOINT.value, round(high_temp)) def _element_changed(self, element, changeset): - from elkm1_lib.const import ThermostatFan, ThermostatMode - mode_to_state = { ThermostatMode.OFF.value: HVAC_MODE_OFF, ThermostatMode.COOL.value: HVAC_MODE_COOL, diff --git a/homeassistant/components/elkm1/sensor.py b/homeassistant/components/elkm1/sensor.py index 3f524b778db..3ed5356f4de 100644 --- a/homeassistant/components/elkm1/sensor.py +++ b/homeassistant/components/elkm1/sensor.py @@ -1,4 +1,12 @@ """Support for control of ElkM1 sensors.""" +from elkm1_lib.const import ( + SettingFormat, + ZoneLogicalStatus, + ZonePhysicalStatus, + ZoneType, +) +from elkm1_lib.util import pretty_const, username + from . import DOMAIN as ELK_DOMAIN, ElkEntity, create_elk_entities @@ -79,8 +87,6 @@ class ElkKeypad(ElkSensor): @property def device_state_attributes(self): """Attributes of the sensor.""" - from elkm1_lib.util import username - attrs = self.initial_attrs() attrs["area"] = self._element.area + 1 attrs["temperature"] = self._element.temperature @@ -140,8 +146,6 @@ class ElkSetting(ElkSensor): @property def device_state_attributes(self): """Attributes of the sensor.""" - from elkm1_lib.const import SettingFormat - attrs = self.initial_attrs() attrs["value_format"] = SettingFormat(self._element.value_format).name.lower() return attrs @@ -153,8 +157,6 @@ class ElkZone(ElkSensor): @property def icon(self): """Icon to use in the frontend.""" - from elkm1_lib.const import ZoneType - zone_icons = { ZoneType.FIRE_ALARM.value: "fire", ZoneType.FIRE_VERIFIED.value: "fire", @@ -181,8 +183,6 @@ class ElkZone(ElkSensor): @property def device_state_attributes(self): """Attributes of the sensor.""" - from elkm1_lib.const import ZoneLogicalStatus, ZonePhysicalStatus, ZoneType - attrs = self.initial_attrs() attrs["physical_status"] = ZonePhysicalStatus( self._element.physical_status @@ -199,8 +199,6 @@ class ElkZone(ElkSensor): @property def temperature_unit(self): """Return the temperature unit.""" - from elkm1_lib.const import ZoneType - if self._element.definition == ZoneType.TEMPERATURE.value: return self._temperature_unit return None @@ -208,8 +206,6 @@ class ElkZone(ElkSensor): @property def unit_of_measurement(self): """Return the unit of measurement.""" - from elkm1_lib.const import ZoneType - if self._element.definition == ZoneType.TEMPERATURE.value: return self._temperature_unit if self._element.definition == ZoneType.ANALOG_ZONE.value: @@ -217,9 +213,6 @@ class ElkZone(ElkSensor): return None def _element_changed(self, element, changeset): - from elkm1_lib.const import ZoneLogicalStatus, ZoneType - from elkm1_lib.util import pretty_const - if self._element.definition == ZoneType.TEMPERATURE.value: self._state = temperature_to_state(self._element.temperature, -60) elif self._element.definition == ZoneType.ANALOG_ZONE.value: