Migrate callbacks to use schedule_update_ha_state (#4426)

* Migrate callbacks to use schedule_update_ha_state

* Migrate MQTT sensor callback to async

* Migrate wemo to not update inside schedule_update_ha_state

* Make MQTT switch async

* Fix nx584 test

* Migrate tellstick callback

* Migrate vera callback

* Alarm control panel - manual: use async callbacks

* Run the switch rest tests that work
This commit is contained in:
Paulus Schoutsen 2016-11-17 07:34:46 -08:00 committed by GitHub
parent 38d201a54a
commit 0f59bb208c
19 changed files with 54 additions and 43 deletions

View file

@ -8,6 +8,7 @@ import logging
import voluptuous as vol
from homeassistant.core import callback
from homeassistant.components.mqtt import (
CONF_STATE_TOPIC, CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN)
from homeassistant.components.switch import SwitchDevice
@ -71,17 +72,18 @@ class MqttSwitch(SwitchDevice):
self._payload_off = payload_off
self._optimistic = optimistic
@callback
def message_received(topic, payload, qos):
"""A new MQTT message has been received."""
if value_template is not None:
payload = value_template.render_with_possible_json_value(
payload = value_template.async_render_with_possible_json_value(
payload)
if payload == self._payload_on:
self._state = True
self.update_ha_state()
hass.async_add_job(self.async_update_ha_state())
elif payload == self._payload_off:
self._state = False
self.update_ha_state()
hass.async_add_job(self.async_update_ha_state())
if self._state_topic is None:
# Force into optimistic mode.
@ -117,7 +119,7 @@ class MqttSwitch(SwitchDevice):
if self._optimistic:
# Optimistically assume that switch has changed state.
self._state = True
self.schedule_update_ha_state()
self.update_ha_state()
def turn_off(self, **kwargs):
"""Turn the device off."""
@ -126,4 +128,4 @@ class MqttSwitch(SwitchDevice):
if self._optimistic:
# Optimistically assume that switch has changed state.
self._state = False
self.schedule_update_ha_state()
self.update_ha_state()