mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Update Wemo state when changing state (#36647)
This commit is contained in:
parent
a6a6a7b69c
commit
fe03c9da68
@ -457,7 +457,6 @@ homeassistant/components/watson_tts/* @rutkai
|
|||||||
homeassistant/components/weather/* @fabaff
|
homeassistant/components/weather/* @fabaff
|
||||||
homeassistant/components/webostv/* @bendavid
|
homeassistant/components/webostv/* @bendavid
|
||||||
homeassistant/components/websocket_api/* @home-assistant/core
|
homeassistant/components/websocket_api/* @home-assistant/core
|
||||||
homeassistant/components/wemo/* @sqldiablo
|
|
||||||
homeassistant/components/wiffi/* @mampfes
|
homeassistant/components/wiffi/* @mampfes
|
||||||
homeassistant/components/withings/* @vangorra
|
homeassistant/components/withings/* @vangorra
|
||||||
homeassistant/components/wled/* @frenck
|
homeassistant/components/wled/* @frenck
|
||||||
|
@ -304,6 +304,8 @@ class WemoHumidifier(FanEntity):
|
|||||||
else:
|
else:
|
||||||
self.set_speed(speed)
|
self.set_speed(speed)
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def turn_off(self, **kwargs) -> None:
|
def turn_off(self, **kwargs) -> None:
|
||||||
"""Turn the switch off."""
|
"""Turn the switch off."""
|
||||||
try:
|
try:
|
||||||
@ -312,6 +314,8 @@ class WemoHumidifier(FanEntity):
|
|||||||
_LOGGER.warning("Error while turning off device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning off device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def set_speed(self, speed: str) -> None:
|
def set_speed(self, speed: str) -> None:
|
||||||
"""Set the fan_mode of the Humidifier."""
|
"""Set the fan_mode of the Humidifier."""
|
||||||
try:
|
try:
|
||||||
@ -322,6 +326,8 @@ class WemoHumidifier(FanEntity):
|
|||||||
)
|
)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def set_humidity(self, humidity: float) -> None:
|
def set_humidity(self, humidity: float) -> None:
|
||||||
"""Set the target humidity level for the Humidifier."""
|
"""Set the target humidity level for the Humidifier."""
|
||||||
if humidity < 50:
|
if humidity < 50:
|
||||||
@ -343,6 +349,8 @@ class WemoHumidifier(FanEntity):
|
|||||||
)
|
)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def reset_filter_life(self) -> None:
|
def reset_filter_life(self) -> None:
|
||||||
"""Reset the filter life to 100%."""
|
"""Reset the filter life to 100%."""
|
||||||
try:
|
try:
|
||||||
@ -352,3 +360,5 @@ class WemoHumidifier(FanEntity):
|
|||||||
"Error while resetting filter life on device: %s (%s)", self.name, err
|
"Error while resetting filter life on device: %s (%s)", self.name, err
|
||||||
)
|
)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
@ -32,6 +32,10 @@ SUPPORT_WEMO = (
|
|||||||
SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_COLOR | SUPPORT_TRANSITION
|
SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_COLOR | SUPPORT_TRANSITION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# The WEMO_ constants below come from pywemo itself
|
||||||
|
WEMO_ON = 1
|
||||||
|
WEMO_OFF = 0
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass, config_entry, async_add_entities):
|
async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||||
"""Set up WeMo lights."""
|
"""Set up WeMo lights."""
|
||||||
@ -175,21 +179,27 @@ class WemoLight(LightEntity):
|
|||||||
if color_temp is not None:
|
if color_temp is not None:
|
||||||
self.wemo.set_temperature(mireds=color_temp, transition=transition_time)
|
self.wemo.set_temperature(mireds=color_temp, transition=transition_time)
|
||||||
|
|
||||||
self.wemo.turn_on(**turn_on_kwargs)
|
if self.wemo.turn_on(**turn_on_kwargs):
|
||||||
|
self._state["onoff"] = WEMO_ON
|
||||||
except ActionException as err:
|
except ActionException as err:
|
||||||
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def turn_off(self, **kwargs):
|
def turn_off(self, **kwargs):
|
||||||
"""Turn the light off."""
|
"""Turn the light off."""
|
||||||
transition_time = int(kwargs.get(ATTR_TRANSITION, 0))
|
transition_time = int(kwargs.get(ATTR_TRANSITION, 0))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.wemo.turn_off(transition=transition_time)
|
if self.wemo.turn_off(transition=transition_time):
|
||||||
|
self._state["onoff"] = WEMO_OFF
|
||||||
except ActionException as err:
|
except ActionException as err:
|
||||||
_LOGGER.warning("Error while turning off device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning off device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def _update(self, force_update=True):
|
def _update(self, force_update=True):
|
||||||
"""Synchronize state with bridge."""
|
"""Synchronize state with bridge."""
|
||||||
try:
|
try:
|
||||||
@ -200,7 +210,7 @@ class WemoLight(LightEntity):
|
|||||||
self._available = False
|
self._available = False
|
||||||
self.wemo.reconnect_with_device()
|
self.wemo.reconnect_with_device()
|
||||||
else:
|
else:
|
||||||
self._is_on = self._state.get("onoff") != 0
|
self._is_on = self._state.get("onoff") != WEMO_OFF
|
||||||
self._brightness = self._state.get("level", 255)
|
self._brightness = self._state.get("level", 255)
|
||||||
self._color_temp = self._state.get("temperature_mireds")
|
self._color_temp = self._state.get("temperature_mireds")
|
||||||
self._available = True
|
self._available = True
|
||||||
@ -355,20 +365,27 @@ class WemoDimmer(LightEntity):
|
|||||||
brightness = 255
|
brightness = 255
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.wemo.on()
|
if self.wemo.on():
|
||||||
|
self._state = WEMO_ON
|
||||||
|
|
||||||
self.wemo.set_brightness(brightness)
|
self.wemo.set_brightness(brightness)
|
||||||
except ActionException as err:
|
except ActionException as err:
|
||||||
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def turn_off(self, **kwargs):
|
def turn_off(self, **kwargs):
|
||||||
"""Turn the dimmer off."""
|
"""Turn the dimmer off."""
|
||||||
try:
|
try:
|
||||||
self.wemo.off()
|
if self.wemo.off():
|
||||||
|
self._state = WEMO_OFF
|
||||||
except ActionException as err:
|
except ActionException as err:
|
||||||
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def available(self):
|
def available(self):
|
||||||
"""Return if dimmer is available."""
|
"""Return if dimmer is available."""
|
||||||
|
@ -12,5 +12,5 @@
|
|||||||
"homekit": {
|
"homekit": {
|
||||||
"models": ["Wemo"]
|
"models": ["Wemo"]
|
||||||
},
|
},
|
||||||
"codeowners": ["@sqldiablo"]
|
"codeowners": []
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ PARALLEL_UPDATES = 0
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# The WEMO_ constants below come from pywemo itself
|
||||||
ATTR_SENSOR_STATE = "sensor_state"
|
ATTR_SENSOR_STATE = "sensor_state"
|
||||||
ATTR_SWITCH_MODE = "switch_mode"
|
ATTR_SWITCH_MODE = "switch_mode"
|
||||||
ATTR_CURRENT_STATE_DETAIL = "state_detail"
|
ATTR_CURRENT_STATE_DETAIL = "state_detail"
|
||||||
@ -191,19 +192,25 @@ class WemoSwitch(SwitchEntity):
|
|||||||
def turn_on(self, **kwargs):
|
def turn_on(self, **kwargs):
|
||||||
"""Turn the switch on."""
|
"""Turn the switch on."""
|
||||||
try:
|
try:
|
||||||
self.wemo.on()
|
if self.wemo.on():
|
||||||
|
self._state = WEMO_ON
|
||||||
except ActionException as err:
|
except ActionException as err:
|
||||||
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning on device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
def turn_off(self, **kwargs):
|
def turn_off(self, **kwargs):
|
||||||
"""Turn the switch off."""
|
"""Turn the switch off."""
|
||||||
try:
|
try:
|
||||||
self.wemo.off()
|
if self.wemo.off():
|
||||||
|
self._state = WEMO_OFF
|
||||||
except ActionException as err:
|
except ActionException as err:
|
||||||
_LOGGER.warning("Error while turning off device %s (%s)", self.name, err)
|
_LOGGER.warning("Error while turning off device %s (%s)", self.name, err)
|
||||||
self._available = False
|
self._available = False
|
||||||
|
|
||||||
|
self.schedule_update_ha_state()
|
||||||
|
|
||||||
async def async_added_to_hass(self):
|
async def async_added_to_hass(self):
|
||||||
"""Wemo switch added to Home Assistant."""
|
"""Wemo switch added to Home Assistant."""
|
||||||
# Define inside async context so we know our event loop
|
# Define inside async context so we know our event loop
|
||||||
|
Loading…
x
Reference in New Issue
Block a user