Fixed rfxtrx binary_sensor off command (#8160)

* Fixed applying rfxtrx binary off command

* Fixed some deprecation issues
This commit is contained in:
Bas Schipper 2017-06-22 23:00:44 +02:00 committed by Daniel Høyer Iversen
parent 07293e8d1e
commit fe93b51017
2 changed files with 11 additions and 12 deletions

View File

@ -19,7 +19,7 @@ from homeassistant.components.rfxtrx import (
ATTR_DATA_BITS, CONF_DEVICES ATTR_DATA_BITS, CONF_DEVICES
) )
from homeassistant.const import ( from homeassistant.const import (
CONF_SENSOR_CLASS, CONF_COMMAND_ON, CONF_COMMAND_OFF CONF_DEVICE_CLASS, CONF_COMMAND_ON, CONF_COMMAND_OFF
) )
DEPENDENCIES = ["rfxtrx"] DEPENDENCIES = ["rfxtrx"]
@ -52,10 +52,10 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
entity[ATTR_DATA_BITS])) entity[ATTR_DATA_BITS]))
_LOGGER.info("Add %s rfxtrx.binary_sensor (class %s)", _LOGGER.info("Add %s rfxtrx.binary_sensor (class %s)",
entity[ATTR_NAME], entity[CONF_SENSOR_CLASS]) entity[ATTR_NAME], entity[CONF_DEVICE_CLASS])
device = RfxtrxBinarySensor(event, entity[ATTR_NAME], device = RfxtrxBinarySensor(event, entity[ATTR_NAME],
entity[CONF_SENSOR_CLASS], entity[CONF_DEVICE_CLASS],
entity[ATTR_FIREEVENT], entity[ATTR_FIREEVENT],
entity[ATTR_OFF_DELAY], entity[ATTR_OFF_DELAY],
entity[ATTR_DATA_BITS], entity[ATTR_DATA_BITS],
@ -118,8 +118,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
cmd, sensor.masked_id) cmd, sensor.masked_id)
sensor.apply_cmd(int(cmd, 16)) sensor.apply_cmd(int(cmd, 16))
else: else:
if not sensor.is_on or sensor.should_fire_event: rfxtrx.apply_received_command(event)
sensor.update_state(True)
if (sensor.is_on and sensor.off_delay is not None and if (sensor.is_on and sensor.off_delay is not None and
sensor.delay_listener is None): sensor.delay_listener is None):
@ -142,14 +141,14 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
class RfxtrxBinarySensor(BinarySensorDevice): class RfxtrxBinarySensor(BinarySensorDevice):
"""An Rfxtrx binary sensor.""" """An Rfxtrx binary sensor."""
def __init__(self, event, name, sensor_class=None, def __init__(self, event, name, device_class=None,
should_fire=False, off_delay=None, data_bits=None, should_fire=False, off_delay=None, data_bits=None,
cmd_on=None, cmd_off=None): cmd_on=None, cmd_off=None):
"""Initialize the sensor.""" """Initialize the sensor."""
self.event = event self.event = event
self._name = name self._name = name
self._should_fire_event = should_fire self._should_fire_event = should_fire
self._sensor_class = sensor_class self._device_class = device_class
self._off_delay = off_delay self._off_delay = off_delay
self._state = False self._state = False
self.delay_listener = None self.delay_listener = None
@ -207,9 +206,9 @@ class RfxtrxBinarySensor(BinarySensorDevice):
return self._should_fire_event return self._should_fire_event
@property @property
def sensor_class(self): def device_class(self):
"""Return the sensor class.""" """Return the sensor class."""
return self._sensor_class return self._device_class
@property @property
def off_delay(self): def off_delay(self):
@ -231,4 +230,4 @@ class RfxtrxBinarySensor(BinarySensorDevice):
def update_state(self, state): def update_state(self, state):
"""Update the state of the device.""" """Update the state of the device."""
self._state = state self._state = state
self.update_ha_state() self.schedule_update_ha_state()

View File

@ -13,7 +13,7 @@ from homeassistant.util import slugify
from homeassistant.const import ( from homeassistant.const import (
EVENT_HOMEASSISTANT_STOP, EVENT_HOMEASSISTANT_STOP,
ATTR_ENTITY_ID, TEMP_CELSIUS, ATTR_ENTITY_ID, TEMP_CELSIUS,
CONF_SENSOR_CLASS, CONF_COMMAND_ON, CONF_COMMAND_OFF CONF_DEVICE_CLASS, CONF_COMMAND_ON, CONF_COMMAND_OFF
) )
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
@ -123,7 +123,7 @@ DEVICE_SCHEMA_SENSOR = vol.Schema({
DEVICE_SCHEMA_BINARYSENSOR = vol.Schema({ DEVICE_SCHEMA_BINARYSENSOR = vol.Schema({
vol.Optional(ATTR_NAME, default=None): cv.string, vol.Optional(ATTR_NAME, default=None): cv.string,
vol.Optional(CONF_SENSOR_CLASS, default=None): cv.string, vol.Optional(CONF_DEVICE_CLASS, default=None): cv.string,
vol.Optional(ATTR_FIREEVENT, default=False): cv.boolean, vol.Optional(ATTR_FIREEVENT, default=False): cv.boolean,
vol.Optional(ATTR_OFF_DELAY, default=None): vol.Optional(ATTR_OFF_DELAY, default=None):
vol.Any(cv.time_period, cv.positive_timedelta), vol.Any(cv.time_period, cv.positive_timedelta),