Fix issue #2290 for rfxtrx (#2498)

* Fix issue #2290 for rfxtrx

* update tests for rfxtrx sensor

* Replace state_unkown with None in rfxtrx sensor

* Update test_rfxtrx.py
This commit is contained in:
Daniel Høyer Iversen 2016-07-13 16:46:11 +02:00 committed by Paulus Schoutsen
parent 497bc6ac0d
commit 16feb1c55e
2 changed files with 11 additions and 63 deletions

View file

@ -47,7 +47,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None):
data_types = [data_type] data_types = [data_type]
break break
for _data_type in data_types: for _data_type in data_types:
new_sensor = RfxtrxSensor(event, entity_info[ATTR_NAME], new_sensor = RfxtrxSensor(None, entity_info[ATTR_NAME],
_data_type) _data_type)
sensors.append(new_sensor) sensors.append(new_sensor)
sub_sensors[_data_type] = new_sensor sub_sensors[_data_type] = new_sensor
@ -110,7 +110,7 @@ class RfxtrxSensor(Entity):
@property @property
def state(self): def state(self):
"""Return the state of the sensor.""" """Return the state of the sensor."""
if self.data_type: if self.event:
return self.event.values[self.data_type] return self.event.values[self.data_type]
return None return None
@ -122,7 +122,8 @@ class RfxtrxSensor(Entity):
@property @property
def device_state_attributes(self): def device_state_attributes(self):
"""Return the state attributes.""" """Return the state attributes."""
return self.event.values if self.event:
return self.event.values
@property @property
def unit_of_measurement(self): def unit_of_measurement(self):

View file

@ -44,12 +44,7 @@ class TestSensorRfxtrx(unittest.TestCase):
entity = rfxtrx_core.RFX_DEVICES['sensor_0502']['Temperature'] entity = rfxtrx_core.RFX_DEVICES['sensor_0502']['Temperature']
self.assertEqual('Test', entity.name) self.assertEqual('Test', entity.name)
self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement) self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement)
self.assertEqual(14.9, entity.state) self.assertEqual(None, entity.state)
self.assertEqual({'Humidity status': 'normal', 'Temperature': 14.9,
'Rssi numeric': 6, 'Humidity': 34,
'Battery numeric': 9,
'Humidity status numeric': 2},
entity.device_state_attributes)
def test_one_sensor(self): def test_one_sensor(self):
"""Test with 1 sensor.""" """Test with 1 sensor."""
@ -64,12 +59,7 @@ class TestSensorRfxtrx(unittest.TestCase):
entity = rfxtrx_core.RFX_DEVICES['sensor_0502']['Temperature'] entity = rfxtrx_core.RFX_DEVICES['sensor_0502']['Temperature']
self.assertEqual('Test', entity.name) self.assertEqual('Test', entity.name)
self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement) self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement)
self.assertEqual(14.9, entity.state) self.assertEqual(None, entity.state)
self.assertEqual({'Humidity status': 'normal', 'Temperature': 14.9,
'Rssi numeric': 6, 'Humidity': 34,
'Battery numeric': 9,
'Humidity status numeric': 2},
entity.device_state_attributes)
def test_one_sensor_no_datatype(self): def test_one_sensor_no_datatype(self):
"""Test with 1 sensor.""" """Test with 1 sensor."""
@ -83,12 +73,7 @@ class TestSensorRfxtrx(unittest.TestCase):
entity = rfxtrx_core.RFX_DEVICES['sensor_0502']['Temperature'] entity = rfxtrx_core.RFX_DEVICES['sensor_0502']['Temperature']
self.assertEqual('Test', entity.name) self.assertEqual('Test', entity.name)
self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement) self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement)
self.assertEqual(14.9, entity.state) self.assertEqual(None, entity.state)
self.assertEqual({'Humidity status': 'normal', 'Temperature': 14.9,
'Rssi numeric': 6, 'Humidity': 34,
'Battery numeric': 9,
'Humidity status numeric': 2},
entity.device_state_attributes)
def test_several_sensors(self): def test_several_sensors(self):
"""Test with 3 sensors.""" """Test with 3 sensors."""
@ -112,35 +97,16 @@ class TestSensorRfxtrx(unittest.TestCase):
_entity_temp = rfxtrx_core.RFX_DEVICES[id]['Temperature'] _entity_temp = rfxtrx_core.RFX_DEVICES[id]['Temperature']
_entity_hum = rfxtrx_core.RFX_DEVICES[id]['Humidity'] _entity_hum = rfxtrx_core.RFX_DEVICES[id]['Humidity']
self.assertEqual('%', _entity_hum.unit_of_measurement) self.assertEqual('%', _entity_hum.unit_of_measurement)
self.assertEqual(14, _entity_hum.state)
self.assertEqual({'Battery numeric': 9, 'Temperature': 25.5,
'Humidity': 14, 'Humidity status': 'normal',
'Humidity status numeric': 2,
'Rssi numeric': 6},
_entity_hum.device_state_attributes)
self.assertEqual('Bath', _entity_hum.__str__()) self.assertEqual('Bath', _entity_hum.__str__())
self.assertEqual(None, _entity_hum.state)
self.assertEqual(TEMP_CELSIUS, self.assertEqual(TEMP_CELSIUS,
_entity_temp.unit_of_measurement) _entity_temp.unit_of_measurement)
self.assertEqual(25.5, _entity_temp.state)
self.assertEqual({'Battery numeric': 9, 'Temperature': 25.5,
'Humidity': 14, 'Humidity status': 'normal',
'Humidity status numeric': 2,
'Rssi numeric': 6},
_entity_temp.device_state_attributes)
self.assertEqual('Bath', _entity_temp.__str__()) self.assertEqual('Bath', _entity_temp.__str__())
elif id == 'sensor_0502': elif id == 'sensor_0502':
device_num = device_num + 1 device_num = device_num + 1
entity = rfxtrx_core.RFX_DEVICES[id]['Temperature'] entity = rfxtrx_core.RFX_DEVICES[id]['Temperature']
self.assertEqual(None, entity.state)
self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement) self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement)
self.assertEqual(14.9, entity.state)
self.assertEqual({'Humidity status': 'normal',
'Temperature': 14.9,
'Rssi numeric': 6, 'Humidity': 34,
'Battery numeric': 9,
'Humidity status numeric': 2},
entity.device_state_attributes)
self.assertEqual('Test', entity.__str__()) self.assertEqual('Test', entity.__str__())
self.assertEqual(2, device_num) self.assertEqual(2, device_num)
@ -252,35 +218,16 @@ class TestSensorRfxtrx(unittest.TestCase):
_entity_temp = rfxtrx_core.RFX_DEVICES[id]['Temperature'] _entity_temp = rfxtrx_core.RFX_DEVICES[id]['Temperature']
_entity_hum = rfxtrx_core.RFX_DEVICES[id]['Humidity'] _entity_hum = rfxtrx_core.RFX_DEVICES[id]['Humidity']
self.assertEqual('%', _entity_hum.unit_of_measurement) self.assertEqual('%', _entity_hum.unit_of_measurement)
self.assertEqual(14, _entity_hum.state)
self.assertEqual({'Battery numeric': 9, 'Temperature': 25.5,
'Humidity': 14, 'Humidity status': 'normal',
'Humidity status numeric': 2,
'Rssi numeric': 6},
_entity_hum.device_state_attributes)
self.assertEqual('Bath', _entity_hum.__str__()) self.assertEqual('Bath', _entity_hum.__str__())
self.assertEqual(None, _entity_temp.state)
self.assertEqual(TEMP_CELSIUS, self.assertEqual(TEMP_CELSIUS,
_entity_temp.unit_of_measurement) _entity_temp.unit_of_measurement)
self.assertEqual(25.5, _entity_temp.state)
self.assertEqual({'Battery numeric': 9, 'Temperature': 25.5,
'Humidity': 14, 'Humidity status': 'normal',
'Humidity status numeric': 2,
'Rssi numeric': 6},
_entity_temp.device_state_attributes)
self.assertEqual('Bath', _entity_temp.__str__()) self.assertEqual('Bath', _entity_temp.__str__())
elif id == 'sensor_0502': elif id == 'sensor_0502':
device_num = device_num + 1 device_num = device_num + 1
entity = rfxtrx_core.RFX_DEVICES[id]['Temperature'] entity = rfxtrx_core.RFX_DEVICES[id]['Temperature']
self.assertEqual(None, entity.state)
self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement) self.assertEqual(TEMP_CELSIUS, entity.unit_of_measurement)
self.assertEqual(14.9, entity.state)
self.assertEqual({'Humidity status': 'normal',
'Temperature': 14.9,
'Rssi numeric': 6, 'Humidity': 34,
'Battery numeric': 9,
'Humidity status numeric': 2},
entity.device_state_attributes)
self.assertEqual('Test', entity.__str__()) self.assertEqual('Test', entity.__str__())
self.assertEqual(2, device_num) self.assertEqual(2, device_num)