1
0
mirror of https://github.com/no2chem/wideq.git synced 2025-05-18 00:00:17 -07:00

Do not crash on failed speaker volume retrieval

Fixes #63.
This commit is contained in:
Adrian Sampson 2019-12-26 13:33:25 -05:00
parent 3ac6cab147
commit dbab3fd1fe
2 changed files with 16 additions and 2 deletions

View File

@ -3,6 +3,7 @@
import enum import enum
from .client import Device from .client import Device
from .core import FailedRequestError
class ACVSwingMode(enum.Enum): class ACVSwingMode(enum.Enum):
@ -256,8 +257,11 @@ class ACDevice(Device):
def get_volume(self): def get_volume(self):
"""Get the speaker volume level.""" """Get the speaker volume level."""
value = self._get_control('SpkVolume') try:
return int(value) value = self._get_control('SpkVolume')
return int(value)
except FailedRequestError:
return 0 # Device does not support volume control.
def poll(self): def poll(self):
"""Poll the device's current state. """Poll the device's current state.

View File

@ -85,6 +85,15 @@ class TokenError(APIError):
pass pass
class FailedRequestError(APIError):
"""A failed request typically indicates an unsupported control on a
device.
"""
def __init__(self):
pass
class InvalidRequestError(APIError): class InvalidRequestError(APIError):
"""The server rejected a request as invalid.""" """The server rejected a request as invalid."""
@ -105,6 +114,7 @@ class MonitorError(APIError):
API_ERRORS = { API_ERRORS = {
"0102": NotLoggedInError, "0102": NotLoggedInError,
"0106": NotConnectedError, "0106": NotConnectedError,
"0100": FailedRequestError,
9000: InvalidRequestError, # Surprisingly, an integer (not a string). 9000: InvalidRequestError, # Surprisingly, an integer (not a string).
} }