def setup(hass, config): """ Setup the RFXtrx component. """ # Declare the Handle event def handle_receive(event): """ Callback all subscribers for RFXtrx gateway. """ # Log RFXCOM event entity_id = slugify(event.device.id_string.lower()) packet_id = "".join("{0:02x}".format(x) for x in event.data) entity_name = "%s : %s" % (entity_id, packet_id) _LOGGER.info("Receive RFXCOM event from %s => %s", event.device, entity_name) # Callback to HA registered components for subscriber in RECEIVED_EVT_SUBSCRIBERS: subscriber(event) # Try to load the RFXtrx module try: import RFXtrx as rfxtrxmod except ImportError: _LOGGER.exception("Failed to import rfxtrx") return False # Init the rfxtrx module global RFXOBJECT if CONF_DEVICE not in config[DOMAIN]: _LOGGER.exception( "can found device parameter in %s YAML configuration section", DOMAIN) return False device = config[DOMAIN][CONF_DEVICE] debug = config[DOMAIN].get(CONF_DEBUG, False) RFXOBJECT = rfxtrxmod.Core(device, handle_receive, debug=debug) return True
def test_one_rollershutter(self): """Test with 1 roller shutter.""" self.assertTrue(_setup_component(self.hass, 'rollershutter', { 'rollershutter': {'platform': 'rfxtrx', 'devices': {'0b1400cd0213c7f210010f51': { 'name': 'Test' }}}})) import RFXtrx as rfxtrxmod rfxtrx_core.RFXOBJECT =\ rfxtrxmod.Core("", transport_protocol=rfxtrxmod.DummyTransport) self.assertEqual(1, len(rfxtrx_core.RFX_DEVICES)) for id in rfxtrx_core.RFX_DEVICES: entity = rfxtrx_core.RFX_DEVICES[id] self.assertEqual(entity.signal_repetitions, 1) self.assertFalse(entity.should_fire_event) self.assertFalse(entity.should_poll) entity.move_up() entity.move_down() entity.stop()
def test_one_sensor(self): """Test with 1 switch.""" config = {'devices': {'123efab1': { 'name': 'Test', 'packetid': '0b1100cd0213c7f210010f51'}}} import RFXtrx as rfxtrxmod rfxtrx_core.RFXOBJECT =\ rfxtrxmod.Core("", transport_protocol=rfxtrxmod.DummyTransport) devices = [] def add_dev_callback(devs): """Add a callback to add devices.""" for dev in devs: devices.append(dev) rfxtrx.setup_platform(self.hass, config, add_dev_callback) self.assertEqual(1, len(devices)) entity = devices[0] self.assertEqual('Test', entity.name) self.assertEqual('off', entity.state) self.assertTrue(entity.assumed_state) self.assertEqual(entity.signal_repetitions, 1) self.assertFalse(entity.should_fire_event) self.assertFalse(entity.should_poll) self.assertFalse(entity.is_on) with patch('homeassistant.components.switch.' + 'rfxtrx.RfxtrxSwitch.update_ha_state', return_value=None): entity.turn_on() self.assertTrue(entity.is_on) with patch('homeassistant.components.switch.' + 'rfxtrx.RfxtrxSwitch.update_ha_state', return_value=None): entity.turn_off() self.assertFalse(entity.is_on)
def test_old_config(self): """Test with 1 switch.""" assert setup_component( self.hass, "switch", { "switch": { "platform": "rfxtrx", "devices": { "123efab1": { "name": "Test", "packetid": "0b1100cd0213c7f210010f51", } }, } }, ) import RFXtrx as rfxtrxmod rfxtrx_core.RFXOBJECT = rfxtrxmod.Core( "", transport_protocol=rfxtrxmod.DummyTransport ) assert 1 == len(rfxtrx_core.RFX_DEVICES) entity = rfxtrx_core.RFX_DEVICES["213c7f216"] assert "Test" == entity.name assert "off" == entity.state assert entity.assumed_state assert entity.signal_repetitions == 1 assert not entity.should_fire_event assert not entity.should_poll assert not entity.is_on entity.turn_on() assert entity.is_on entity.turn_off() assert not entity.is_on
def test_one_switch(self): """Test with 1 switch.""" self.assertTrue(_setup_component(self.hass, 'switch', { 'switch': {'platform': 'rfxtrx', 'devices': {'0b1100cd0213c7f210010f51': { 'name': 'Test'}}}})) import RFXtrx as rfxtrxmod rfxtrx_core.RFXOBJECT =\ rfxtrxmod.Core("", transport_protocol=rfxtrxmod.DummyTransport) self.assertEqual(1, len(rfxtrx_core.RFX_DEVICES)) entity = rfxtrx_core.RFX_DEVICES['213c7f216'] self.assertEqual('Test', entity.name) self.assertEqual('off', entity.state) self.assertTrue(entity.assumed_state) self.assertEqual(entity.signal_repetitions, 1) self.assertFalse(entity.should_fire_event) self.assertFalse(entity.should_poll) self.assertFalse(entity.is_on) entity.turn_on() self.assertTrue(entity.is_on) entity.turn_off() self.assertFalse(entity.is_on) entity_id = rfxtrx_core.RFX_DEVICES['213c7f216'].entity_id entity_hass = self.hass.states.get(entity_id) self.assertEqual('Test', entity_hass.name) self.assertEqual('off', entity_hass.state) entity.turn_on() entity_hass = self.hass.states.get(entity_id) self.assertEqual('on', entity_hass.state) entity.turn_off() entity_hass = self.hass.states.get(entity_id) self.assertEqual('off', entity_hass.state)
def setup_platform(hass, config, add_devices, discovery_info=None): """ Setup the RFXtrx platform. """ logger = logging.getLogger(__name__) sensors = {} # keep track of sensors added to HA def sensor_update(event): """ Callback for sensor updates from the RFXtrx gateway. """ if event.device.id_string in sensors: sensors[event.device.id_string].event = event else: logger.info("adding new sensor: %s", event.device.type_string) new_sensor = RfxtrxSensor(event) sensors[event.device.id_string] = new_sensor add_devices([new_sensor]) try: import RFXtrx as rfxtrx except ImportError: logger.exception("Failed to import rfxtrx") return False device = config.get("device", "") rfxtrx.Core(device, sensor_update)
def test_one_light(self): """Test with 1 light.""" assert setup_component( self.hass, "light", { "light": { "platform": "rfxtrx", "devices": { "0b1100cd0213c7f210010f51": { "name": "Test" } }, } }, ) import RFXtrx as rfxtrxmod rfxtrx_core.RFXOBJECT = rfxtrxmod.Core( "", transport_protocol=rfxtrxmod.DummyTransport) assert 1 == len(rfxtrx_core.RFX_DEVICES) entity = rfxtrx_core.RFX_DEVICES["213c7f216"] assert "Test" == entity.name assert "off" == entity.state assert entity.assumed_state assert entity.signal_repetitions == 1 assert not entity.should_fire_event assert not entity.should_poll assert not entity.is_on entity.turn_on() assert entity.is_on assert entity.brightness == 255 entity.turn_off() assert not entity.is_on assert entity.brightness == 0 entity.turn_on(brightness=100) assert entity.is_on assert entity.brightness == 100 entity.turn_on(brightness=10) assert entity.is_on assert entity.brightness == 10 entity.turn_on(brightness=255) assert entity.is_on assert entity.brightness == 255 entity.turn_off() entity_id = rfxtrx_core.RFX_DEVICES["213c7f216"].entity_id entity_hass = self.hass.states.get(entity_id) assert "Test" == entity_hass.name assert "off" == entity_hass.state entity.turn_on() entity_hass = self.hass.states.get(entity_id) assert "on" == entity_hass.state entity.turn_off() entity_hass = self.hass.states.get(entity_id) assert "off" == entity_hass.state entity.turn_on(brightness=100) entity_hass = self.hass.states.get(entity_id) assert "on" == entity_hass.state entity.turn_on(brightness=10) entity_hass = self.hass.states.get(entity_id) assert "on" == entity_hass.state entity.turn_on(brightness=255) entity_hass = self.hass.states.get(entity_id) assert "on" == entity_hass.state
async def test_one_light(hass, rfxtrx): """Test with 1 light.""" await async_setup_component( hass, "light", { "light": { "platform": "rfxtrx", "devices": { "0b1100cd0213c7f210010f51": { "name": "Test" } }, } }, ) await hass.async_block_till_done() import RFXtrx as rfxtrxmod hass.data[rfxtrx_core.DATA_RFXOBJECT] = rfxtrxmod.Core( "", transport_protocol=rfxtrxmod.DummyTransport) assert 1 == len(rfxtrx_core.RFX_DEVICES) entity = rfxtrx_core.RFX_DEVICES["213c7f2_16"] entity.hass = hass assert "Test" == entity.name assert "off" == entity.state assert entity.assumed_state assert entity.signal_repetitions == 1 assert not entity.should_fire_event assert not entity.should_poll assert not entity.is_on entity.turn_on() assert entity.is_on assert entity.brightness == 255 entity.turn_off() assert not entity.is_on assert entity.brightness == 0 entity.turn_on(brightness=100) assert entity.is_on assert entity.brightness == 100 entity.turn_on(brightness=10) assert entity.is_on assert entity.brightness == 10 entity.turn_on(brightness=255) assert entity.is_on assert entity.brightness == 255 entity.turn_off() assert "Test" == entity.name assert "off" == entity.state entity.turn_on() assert "on" == entity.state entity.turn_off() assert "off" == entity.state entity.turn_on(brightness=100) assert "on" == entity.state entity.turn_on(brightness=10) assert "on" == entity.state entity.turn_on(brightness=255) assert "on" == entity.state
def test_one_light(self): """Test with 1 light.""" assert setup_component( self.hass, 'light', { 'light': { 'platform': 'rfxtrx', 'devices': { '0b1100cd0213c7f210010f51': { 'name': 'Test' } } } }) import RFXtrx as rfxtrxmod rfxtrx_core.RFXOBJECT =\ rfxtrxmod.Core("", transport_protocol=rfxtrxmod.DummyTransport) assert 1 == len(rfxtrx_core.RFX_DEVICES) entity = rfxtrx_core.RFX_DEVICES['213c7f216'] assert 'Test' == entity.name assert 'off' == entity.state assert entity.assumed_state assert entity.signal_repetitions == 1 assert not entity.should_fire_event assert not entity.should_poll assert not entity.is_on entity.turn_on() assert entity.is_on assert entity.brightness == 255 entity.turn_off() assert not entity.is_on assert entity.brightness == 0 entity.turn_on(brightness=100) assert entity.is_on assert entity.brightness == 100 entity.turn_on(brightness=10) assert entity.is_on assert entity.brightness == 10 entity.turn_on(brightness=255) assert entity.is_on assert entity.brightness == 255 entity.turn_off() entity_id = rfxtrx_core.RFX_DEVICES['213c7f216'].entity_id entity_hass = self.hass.states.get(entity_id) assert 'Test' == entity_hass.name assert 'off' == entity_hass.state entity.turn_on() entity_hass = self.hass.states.get(entity_id) assert 'on' == entity_hass.state entity.turn_off() entity_hass = self.hass.states.get(entity_id) assert 'off' == entity_hass.state entity.turn_on(brightness=100) entity_hass = self.hass.states.get(entity_id) assert 'on' == entity_hass.state entity.turn_on(brightness=10) entity_hass = self.hass.states.get(entity_id) assert 'on' == entity_hass.state entity.turn_on(brightness=255) entity_hass = self.hass.states.get(entity_id) assert 'on' == entity_hass.state