add fan support for spider thermostats (#20897)

* add fan support for spider thermostats

* resolved feedback on pull request
This commit is contained in:
Peter Nijssen 2019-02-10 14:54:30 +01:00 committed by Andrew Sayre
parent 13421b326b
commit ace1ae85dd
3 changed files with 32 additions and 4 deletions

View File

@ -14,7 +14,7 @@ from homeassistant.const import (
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.discovery import load_platform from homeassistant.helpers.discovery import load_platform
REQUIREMENTS = ['spiderpy==1.2.0'] REQUIREMENTS = ['spiderpy==1.3.1']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View File

@ -9,12 +9,23 @@ import logging
from homeassistant.components.climate import ( from homeassistant.components.climate import (
ATTR_TEMPERATURE, STATE_COOL, STATE_HEAT, STATE_IDLE, ATTR_TEMPERATURE, STATE_COOL, STATE_HEAT, STATE_IDLE,
SUPPORT_OPERATION_MODE, SUPPORT_TARGET_TEMPERATURE, ClimateDevice) SUPPORT_OPERATION_MODE, SUPPORT_TARGET_TEMPERATURE,
SUPPORT_FAN_MODE, ClimateDevice)
from homeassistant.components.spider import DOMAIN as SPIDER_DOMAIN from homeassistant.components.spider import DOMAIN as SPIDER_DOMAIN
from homeassistant.const import TEMP_CELSIUS from homeassistant.const import TEMP_CELSIUS
DEPENDENCIES = ['spider'] DEPENDENCIES = ['spider']
FAN_LIST = [
'Auto',
'Low',
'Medium',
'High',
'Boost 10',
'Boost 20',
'Boost 30'
]
OPERATION_LIST = [ OPERATION_LIST = [
STATE_HEAT, STATE_HEAT,
STATE_COOL, STATE_COOL,
@ -55,7 +66,10 @@ class SpiderThermostat(ClimateDevice):
supports = SUPPORT_TARGET_TEMPERATURE supports = SUPPORT_TARGET_TEMPERATURE
if self.thermostat.has_operation_mode: if self.thermostat.has_operation_mode:
supports = supports | SUPPORT_OPERATION_MODE supports |= SUPPORT_OPERATION_MODE
if self.thermostat.has_fan_mode:
supports |= SUPPORT_FAN_MODE
return supports return supports
@ -122,6 +136,20 @@ class SpiderThermostat(ClimateDevice):
self.thermostat.set_operation_mode( self.thermostat.set_operation_mode(
HA_STATE_TO_SPIDER.get(operation_mode)) HA_STATE_TO_SPIDER.get(operation_mode))
@property
def current_fan_mode(self):
"""Return the fan setting."""
return self.thermostat.current_fan_speed
def set_fan_mode(self, fan_mode):
"""Set fan mode."""
self.thermostat.set_fan_speed(fan_mode)
@property
def fan_list(self):
"""List of available fan modes."""
return FAN_LIST
def update(self): def update(self):
"""Get the latest data.""" """Get the latest data."""
self.thermostat = self.api.get_thermostat(self.unique_id) self.thermostat = self.api.get_thermostat(self.unique_id)

View File

@ -1573,7 +1573,7 @@ somecomfort==0.5.2
speedtest-cli==2.0.2 speedtest-cli==2.0.2
# homeassistant.components.spider # homeassistant.components.spider
spiderpy==1.2.0 spiderpy==1.3.1
# homeassistant.components.sensor.spotcrime # homeassistant.components.sensor.spotcrime
spotcrime==1.0.3 spotcrime==1.0.3