def create_driver(loop, core_alarm): config = core_alarm.config.get('homekit', {}) use_bridge = core_alarm.sensors or config.get('use_bridge', False) driver = AccessoryDriver(loop=loop, port=config.get('port', 51001)) alarm = Alarm(driver, core_alarm, config) alarm.set_info_service(model=core_alarm.model, manufacturer='Jablotron', serial_number=core_alarm.serial_number, firmware_revision=core_alarm.firmware_version) if use_bridge: bridge = Bridge(driver, display_name='Jablotron Bridge') bridge.set_info_service(model=core_alarm.model, manufacturer='Jablotron', serial_number=core_alarm.serial_number, firmware_revision=core_alarm.firmware_version) bridge.add_accessory(alarm) for s in core_alarm.sensors.values(): bridge.add_accessory(create_sensor_accessory(driver, s)) driver.add_accessory(bridge) else: driver.add_accessory(alarm) return driver
def get_bridge(driver): """Call this method to get a Bridge instead of a standalone accessory.""" bridge = Bridge(driver, config['bridge_name']) bridge.set_info_service(manufacturer="Emsi") devices = config['devices'] for device in devices: password = devices[device].get('password') or b'D000000' bulb = Bulb(devices[device]['address'].encode(), password=password, verbose=config['verbose']).connect() name = devices[device].get('name') or device bridge.add_accessory(OortColorBulb(driver, name, bulb)) if devices[device]['color_switch'] == 'yes': bridge.add_accessory( OortColorBulbSwitch(driver, '{} color switch'.format(device), bulb)) return bridge