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