Skip to content

Commit 11393a6

Browse files
Merge pull request #779 from smartHomeHub/rc
1.17.5
2 parents 2cf300f + 471c155 commit 11393a6

File tree

3 files changed

+36
-24
lines changed

3 files changed

+36
-24
lines changed

custom_components/smartir/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
_LOGGER = logging.getLogger(__name__)
2020

2121
DOMAIN = 'smartir'
22-
VERSION = '1.17.4'
22+
VERSION = '1.17.5'
2323
MANIFEST_URL = (
2424
"https://raw.githubusercontent.com/"
2525
"smartHomeHub/SmartIR/{}/"

custom_components/smartir/fan.py

+31-19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
from homeassistant.helpers.event import async_track_state_change
1717
import homeassistant.helpers.config_validation as cv
1818
from homeassistant.helpers.restore_state import RestoreEntity
19+
from homeassistant.util.percentage import (
20+
ordered_list_item_to_percentage,
21+
percentage_to_ordered_list_item
22+
)
1923
from . import COMPONENT_ABS_DIR, Helper
2024
from .controller import get_controller
2125

@@ -93,7 +97,7 @@ def __init__(self, hass, config, device_data):
9397
self._supported_models = device_data['supportedModels']
9498
self._supported_controller = device_data['supportedController']
9599
self._commands_encoding = device_data['commandsEncoding']
96-
self._speed_list = [SPEED_OFF] + device_data['speed']
100+
self._speed_list = device_data['speed']
97101
self._commands = device_data['commands']
98102

99103
self._speed = SPEED_OFF
@@ -161,19 +165,22 @@ def name(self):
161165
def state(self):
162166
"""Return the current state."""
163167
if (self._on_by_remote or \
164-
self.speed != SPEED_OFF):
168+
self._speed != SPEED_OFF):
165169
return STATE_ON
166170
return SPEED_OFF
167171

168172
@property
169-
def speed_list(self):
170-
"""Get the list of available speeds."""
171-
return self._speed_list
173+
def percentage(self):
174+
"""Return speed percentage of the fan."""
175+
if (self._speed == SPEED_OFF):
176+
return 0
177+
178+
return ordered_list_item_to_percentage(self._speed_list, self._speed)
172179

173180
@property
174-
def speed(self):
175-
"""Return the current speed."""
176-
return self._speed
181+
def speed_count(self):
182+
"""Return the number of speeds the fan supports."""
183+
return len(self._speed_list)
177184

178185
@property
179186
def oscillating(self):
@@ -207,12 +214,16 @@ def extra_state_attributes(self):
207214
'commands_encoding': self._commands_encoding,
208215
}
209216

210-
async def async_set_speed(self, speed: str):
211-
"""Set the speed of the fan."""
212-
self._speed = speed
217+
async def async_set_percentage(self, percentage: int):
218+
"""Set the desired speed for the fan."""
219+
if (percentage == 0):
220+
self._speed = SPEED_OFF
221+
else:
222+
self._speed = percentage_to_ordered_list_item(
223+
self._speed_list, percentage)
213224

214-
if not speed == SPEED_OFF:
215-
self._last_on_speed = speed
225+
if not self._speed == SPEED_OFF:
226+
self._last_on_speed = self._speed
216227

217228
await self.send_command()
218229
await self.async_update_ha_state()
@@ -233,16 +244,17 @@ async def async_set_direction(self, direction: str):
233244

234245
await self.async_update_ha_state()
235246

236-
async def async_turn_on(self, speed: str = None, **kwargs):
247+
async def async_turn_on(self, percentage: int = None, **kwargs):
237248
"""Turn on the fan."""
238-
if speed is None:
239-
speed = self._last_on_speed or self._speed_list[1]
249+
if percentage is None:
250+
percentage = ordered_list_item_to_percentage(
251+
self._speed_list, self._last_on_speed or self._speed_list[0])
240252

241-
await self.async_set_speed(speed)
253+
await self.async_set_percentage(percentage)
242254

243255
async def async_turn_off(self):
244256
"""Turn off the fan."""
245-
await self.async_set_speed(SPEED_OFF)
257+
await self.async_set_percentage(0)
246258

247259
async def send_command(self):
248260
async with self._temp_lock:
@@ -280,4 +292,4 @@ async def _async_power_sensor_changed(self, entity_id, old_state, new_state):
280292
self._on_by_remote = False
281293
if self._speed != SPEED_OFF:
282294
self._speed = SPEED_OFF
283-
await self.async_update_ha_state()
295+
await self.async_update_ha_state()

custom_components/smartir/manifest.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
"dependencies": [],
66
"codeowners": ["@smartHomeHub"],
77
"requirements": ["aiofiles==0.6.0"],
8-
"homeassistant": "0.115.0",
9-
"version": "1.17.4",
8+
"homeassistant": "2022.2.0",
9+
"version": "1.17.5",
1010
"updater": {
11-
"version": "1.17.4",
12-
"releaseNotes": "-- Fixed typo #764",
11+
"version": "1.17.5",
12+
"releaseNotes": "-- Compliance with the breaking change of the new fan model",
1313
"files": [
1414
"__init__.py",
1515
"climate.py",

0 commit comments

Comments
 (0)