Rfxtrx fix (#11678)
* fix voluptuous bug in rfxtrx * fix voluptuous bug in rfxtrx * fix voluptuous bug in rfxtrx
This commit is contained in:
parent
ff32f90a29
commit
a358174536
2 changed files with 15 additions and 13 deletions
|
@ -18,9 +18,8 @@ from homeassistant.helpers import config_validation as cv
|
|||
from homeassistant.components.binary_sensor import (
|
||||
BinarySensorDevice, PLATFORM_SCHEMA)
|
||||
from homeassistant.components.rfxtrx import (
|
||||
ATTR_NAME, ATTR_DATA_BITS, ATTR_OFF_DELAY, ATTR_FIRE_EVENT,
|
||||
CONF_AUTOMATIC_ADD, CONF_FIRE_EVENT,
|
||||
CONF_DATA_BITS, CONF_DEVICES)
|
||||
ATTR_NAME, CONF_AUTOMATIC_ADD, CONF_FIRE_EVENT,
|
||||
CONF_OFF_DELAY, CONF_DATA_BITS, CONF_DEVICES)
|
||||
from homeassistant.util import slugify
|
||||
from homeassistant.util import dt as dt_util
|
||||
|
||||
|
@ -35,9 +34,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
|||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_DEVICE_CLASS): cv.string,
|
||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
||||
vol.Optional(CONF_DATA_BITS): cv.positive_int,
|
||||
vol.Optional(CONF_COMMAND_ON): cv.byte,
|
||||
vol.Optional(CONF_COMMAND_OFF): cv.byte
|
||||
vol.Optional(CONF_OFF_DELAY, default=None):
|
||||
vol.Any(cv.time_period, cv.positive_timedelta),
|
||||
vol.Optional(CONF_DATA_BITS, default=None): cv.positive_int,
|
||||
vol.Optional(CONF_COMMAND_ON, default=None): cv.byte,
|
||||
vol.Optional(CONF_COMMAND_OFF, default=None): cv.byte
|
||||
})
|
||||
},
|
||||
vol.Optional(CONF_AUTOMATIC_ADD, default=False): cv.boolean,
|
||||
|
@ -59,16 +60,16 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
|||
if entity[CONF_DATA_BITS] is not None:
|
||||
_LOGGER.debug("Masked device id: %s",
|
||||
rfxtrx.get_pt2262_deviceid(device_id,
|
||||
entity[ATTR_DATA_BITS]))
|
||||
entity[CONF_DATA_BITS]))
|
||||
|
||||
_LOGGER.debug("Add %s rfxtrx.binary_sensor (class %s)",
|
||||
entity[ATTR_NAME], entity[CONF_DEVICE_CLASS])
|
||||
|
||||
device = RfxtrxBinarySensor(event, entity[ATTR_NAME],
|
||||
entity[CONF_DEVICE_CLASS],
|
||||
entity[ATTR_FIRE_EVENT],
|
||||
entity[ATTR_OFF_DELAY],
|
||||
entity[ATTR_DATA_BITS],
|
||||
entity[CONF_FIRE_EVENT],
|
||||
entity[CONF_OFF_DELAY],
|
||||
entity[CONF_DATA_BITS],
|
||||
entity[CONF_COMMAND_ON],
|
||||
entity[CONF_COMMAND_OFF])
|
||||
device.hass = hass
|
||||
|
|
|
@ -33,9 +33,8 @@ ATTR_STATE = 'state'
|
|||
ATTR_NAME = 'name'
|
||||
ATTR_FIRE_EVENT = 'fire_event'
|
||||
ATTR_DATA_TYPE = 'data_type'
|
||||
ATTR_DATA_BITS = 'data_bits'
|
||||
ATTR_DUMMY = 'dummy'
|
||||
ATTR_OFF_DELAY = 'off_delay'
|
||||
CONF_DATA_BITS = 'data_bits'
|
||||
CONF_AUTOMATIC_ADD = 'automatic_add'
|
||||
CONF_DATA_TYPE = 'data_type'
|
||||
CONF_SIGNAL_REPETITIONS = 'signal_repetitions'
|
||||
|
@ -44,6 +43,7 @@ CONF_DATA_BITS = 'data_bits'
|
|||
CONF_DUMMY = 'dummy'
|
||||
CONF_DEVICE = 'device'
|
||||
CONF_DEBUG = 'debug'
|
||||
CONF_OFF_DELAY = 'off_delay'
|
||||
EVENT_BUTTON_PRESSED = 'button_pressed'
|
||||
|
||||
DATA_TYPES = OrderedDict([
|
||||
|
@ -143,12 +143,13 @@ def get_rfx_object(packetid):
|
|||
|
||||
def get_pt2262_deviceid(device_id, nb_data_bits):
|
||||
"""Extract and return the address bits from a Lighting4/PT2262 packet."""
|
||||
if nb_data_bits is None:
|
||||
return
|
||||
import binascii
|
||||
try:
|
||||
data = bytearray.fromhex(device_id)
|
||||
except ValueError:
|
||||
return None
|
||||
|
||||
mask = 0xFF & ~((1 << nb_data_bits) - 1)
|
||||
|
||||
data[len(data)-1] &= mask
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue