Skip to content

Commit

Permalink
Don't call off_delay_listener if not needed (#17712)
Browse files Browse the repository at this point in the history
Don't call off_delay_listener if 'OFF' is actually received
Moved `off_delay_listener` to be defined once
  • Loading branch information
foxel authored and balloob committed Oct 23, 2018
1 parent f6f549d commit 9798ff0
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions homeassistant/components/binary_sensor/mqtt.py
Expand Up @@ -131,7 +131,14 @@ async def async_added_to_hass(self):
await MqttDiscoveryUpdate.async_added_to_hass(self)

@callback
def state_message_received(topic, payload, qos):
def off_delay_listener(now):
"""Switch device off after a delay."""
self._delay_listener = None
self._state = False
self.async_schedule_update_ha_state()

@callback
def state_message_received(_topic, payload, _qos):
"""Handle a new received MQTT state message."""
if self._template is not None:
payload = self._template.async_render_with_possible_json_value(
Expand All @@ -146,17 +153,10 @@ def state_message_received(topic, payload, qos):
self._name, self._state_topic)
return

if (self._state and self._off_delay is not None):
@callback
def off_delay_listener(now):
"""Switch device off after a delay."""
self._delay_listener = None
self._state = False
self.async_schedule_update_ha_state()

if self._delay_listener is not None:
self._delay_listener()
if self._delay_listener is not None:
self._delay_listener()

if (self._state and self._off_delay is not None):
self._delay_listener = evt.async_call_later(
self.hass, self._off_delay, off_delay_listener)

Expand Down

0 comments on commit 9798ff0

Please sign in to comment.