Rfxtrx binary sensor rewrite (#10152)
* Refactored Lighting4-specific code (issue #8907) * Fixed lint problem and removed unneeded function call. * fixed malformed if * removed backslash * fixed code for pylint * removed useless assignment * using hasattr() instead of try/catch
This commit is contained in:
parent
9df7302603
commit
e819678e27
2 changed files with 16 additions and 19 deletions
|
@ -62,7 +62,6 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
||||||
entity[CONF_COMMAND_ON],
|
entity[CONF_COMMAND_ON],
|
||||||
entity[CONF_COMMAND_OFF])
|
entity[CONF_COMMAND_OFF])
|
||||||
device.hass = hass
|
device.hass = hass
|
||||||
device.is_lighting4 = (packet_id[2:4] == '13')
|
|
||||||
sensors.append(device)
|
sensors.append(device)
|
||||||
rfxtrx.RFX_DEVICES[device_id] = device
|
rfxtrx.RFX_DEVICES[device_id] = device
|
||||||
|
|
||||||
|
@ -86,8 +85,8 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
||||||
if not config[ATTR_AUTOMATIC_ADD]:
|
if not config[ATTR_AUTOMATIC_ADD]:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if event.device.packettype == 0x13:
|
||||||
poss_dev = rfxtrx.find_possible_pt2262_device(device_id)
|
poss_dev = rfxtrx.find_possible_pt2262_device(device_id)
|
||||||
|
|
||||||
if poss_dev is not None:
|
if poss_dev is not None:
|
||||||
poss_id = slugify(poss_dev.event.device.id_string.lower())
|
poss_id = slugify(poss_dev.event.device.id_string.lower())
|
||||||
_LOGGER.info("Found possible matching deviceid %s.",
|
_LOGGER.info("Found possible matching deviceid %s.",
|
||||||
|
@ -96,7 +95,6 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
||||||
pkt_id = "".join("{0:02x}".format(x) for x in event.data)
|
pkt_id = "".join("{0:02x}".format(x) for x in event.data)
|
||||||
sensor = RfxtrxBinarySensor(event, pkt_id)
|
sensor = RfxtrxBinarySensor(event, pkt_id)
|
||||||
sensor.hass = hass
|
sensor.hass = hass
|
||||||
sensor.is_lighting4 = (pkt_id[2:4] == '13')
|
|
||||||
rfxtrx.RFX_DEVICES[device_id] = sensor
|
rfxtrx.RFX_DEVICES[device_id] = sensor
|
||||||
add_devices_callback([sensor])
|
add_devices_callback([sensor])
|
||||||
_LOGGER.info("Added binary sensor %s "
|
_LOGGER.info("Added binary sensor %s "
|
||||||
|
@ -114,6 +112,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
||||||
slugify(event.device.id_string.lower()),
|
slugify(event.device.id_string.lower()),
|
||||||
event.device.__class__.__name__,
|
event.device.__class__.__name__,
|
||||||
event.device.subtype)
|
event.device.subtype)
|
||||||
|
|
||||||
if sensor.is_lighting4:
|
if sensor.is_lighting4:
|
||||||
if sensor.data_bits is not None:
|
if sensor.data_bits is not None:
|
||||||
cmd = rfxtrx.get_pt2262_cmd(device_id, sensor.data_bits)
|
cmd = rfxtrx.get_pt2262_cmd(device_id, sensor.data_bits)
|
||||||
|
@ -154,7 +153,7 @@ class RfxtrxBinarySensor(BinarySensorDevice):
|
||||||
self._device_class = device_class
|
self._device_class = device_class
|
||||||
self._off_delay = off_delay
|
self._off_delay = off_delay
|
||||||
self._state = False
|
self._state = False
|
||||||
self.is_lighting4 = False
|
self.is_lighting4 = (event.device.packettype == 0x13)
|
||||||
self.delay_listener = None
|
self.delay_listener = None
|
||||||
self._data_bits = data_bits
|
self._data_bits = data_bits
|
||||||
self._cmd_on = cmd_on
|
self._cmd_on = cmd_on
|
||||||
|
|
|
@ -245,15 +245,13 @@ def get_pt2262_cmd(device_id, data_bits):
|
||||||
def get_pt2262_device(device_id):
|
def get_pt2262_device(device_id):
|
||||||
"""Look for the device which id matches the given device_id parameter."""
|
"""Look for the device which id matches the given device_id parameter."""
|
||||||
for dev_id, device in RFX_DEVICES.items():
|
for dev_id, device in RFX_DEVICES.items():
|
||||||
try:
|
if (hasattr(device, 'is_lighting4') and
|
||||||
if device.masked_id == get_pt2262_deviceid(device_id,
|
device.masked_id == get_pt2262_deviceid(device_id,
|
||||||
device.data_bits):
|
device.data_bits)):
|
||||||
_LOGGER.info("rfxtrx: found matching device %s for %s",
|
_LOGGER.info("rfxtrx: found matching device %s for %s",
|
||||||
device_id,
|
device_id,
|
||||||
get_pt2262_deviceid(device_id, device.data_bits))
|
device.masked_id)
|
||||||
return device
|
return device
|
||||||
except AttributeError:
|
|
||||||
continue
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@ -261,7 +259,7 @@ def get_pt2262_device(device_id):
|
||||||
def find_possible_pt2262_device(device_id):
|
def find_possible_pt2262_device(device_id):
|
||||||
"""Look for the device which id matches the given device_id parameter."""
|
"""Look for the device which id matches the given device_id parameter."""
|
||||||
for dev_id, device in RFX_DEVICES.items():
|
for dev_id, device in RFX_DEVICES.items():
|
||||||
if len(dev_id) == len(device_id):
|
if hasattr(device, 'is_lighting4') and len(dev_id) == len(device_id):
|
||||||
size = None
|
size = None
|
||||||
for i in range(0, len(dev_id)):
|
for i in range(0, len(dev_id)):
|
||||||
if dev_id[i] != device_id[i]:
|
if dev_id[i] != device_id[i]:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue