def _evaluate(self, unknown_devices, init): missing_devices, new_devices, changed_devices = self._diff(__class__._known_devices, unknown_devices) if missing_devices: for missing_device_id in missing_devices: logger.info("can't find '{}' with id '{}'".format(__class__._known_devices[missing_device_id].get('name'), missing_device_id)) del __class__.bridge_map[missing_device_id] if init: DevicePool.remove(missing_device_id) else: Client.disconnect(missing_device_id) if new_devices: for new_device_id in new_devices: name = unknown_devices[new_device_id].get('name') logger.info("found '{}' with id '{}'".format(name, new_device_id)) __class__.bridge_map[new_device_id] = (unknown_devices[new_device_id].get('LIGHT_KEY'), Converter(get_light_gamut(unknown_devices[new_device_id].get('modelid')))) device = Device(new_device_id, SEPL_DEVICE_TYPE, name) device.addTag('type', unknown_devices[new_device_id].get('type')) device.addTag('manufacturer', unknown_devices[new_device_id].get('manufacturername')) if init: DevicePool.add(device) else: Client.add(device) if changed_devices: for changed_device_id in changed_devices: device = DevicePool.get(changed_device_id) name = unknown_devices[changed_device_id].get('name') if not name == device.name: device.name = name if init: DevicePool.update(device) else: Client.update(device) logger.info("name of '{}' changed to {}".format(changed_device_id, name)) __class__._known_devices = unknown_devices
def render_POST(self, request): res = UpdateResource() print("POST to /rd/[id] from {host}:{port}".format( host=request.source[0], port=request.source[1])) informations = { 'query_parameters': request_helper.get_query_parameter(request), 'links': core_link_format_helper.parse_links( request.payload.decode('utf-8')), } id = request.uri_path.split("/")[-1] device = self.db.get(id) Client.update(device) return res
def setSettings(self, rpkwh, kwh, name): if type(kwh) is str: kwh = kwh.replace(',', '.') if devices_db.updateDevice(self._id, rpkwh=int(rpkwh), kwh=float(kwh), name=str(name)): self._rpkwh = int(rpkwh) self._kwh = float(kwh) self._meter_name = str(name) if not self._device.name == self._meter_name: self._device.name = self._meter_name try: Client.update(self._device) except AttributeError: DevicePool.update(self._device)
def _evaluate(self, unknown_devices): missing_devices, new_devices, changed_devices = self._diff(__class__._known_devices, unknown_devices) if missing_devices: for missing_device_id in missing_devices: logger.info("can't find '{}' with id '{}'".format(__class__._known_devices[missing_device_id].get('label'), missing_device_id)) try: Client.delete(missing_device_id) except AttributeError: DevicePool.remove(missing_device_id) if new_devices: for new_device_id in new_devices: name = unknown_devices[new_device_id].get('label') logger.info("found '{}' with id '{}'".format(name, new_device_id)) device = Device(new_device_id, SEPL_DEVICE_TYPE, name) product = unknown_devices[new_device_id].get('product') device.addTag('type', 'Extended color light') device.addTag('product', product.get('name')) device.addTag('manufacturer', product.get('company')) try: Client.add(device) except AttributeError: DevicePool.add(device) if changed_devices: for changed_device_id in changed_devices: seconds_since_seen = unknown_devices[changed_device_id].get('seconds_since_seen') if seconds_since_seen >= 60: try: Client.disconnect(changed_device_id) except AttributeError: DevicePool.remove(changed_device_id) del unknown_devices[changed_device_id] else: device = DevicePool.get(changed_device_id) name = unknown_devices[changed_device_id].get('label') if not name == device.name: device.name = name try: Client.update(device) except AttributeError: DevicePool.update(device) logger.info("name of '{}' changed to {}".format(changed_device_id, name)) __class__._known_devices = unknown_devices
def _evaluate(self, unknown_devices, init): missing_devices, new_devices, changed_devices = self._diff( __class__._known_devices, unknown_devices) if missing_devices: for missing_device_id in missing_devices: logger.info("can't find '{}' with id '{}'".format( __class__._known_devices[missing_device_id].get( 'deviceName'), missing_device_id)) if init: DevicePool.remove(missing_device_id) else: Client.disconnect(missing_device_id) if new_devices: for new_device_id in new_devices: name = unknown_devices[new_device_id].get('deviceName') logger.info("found '{}' with id '{}'".format( name, new_device_id)) device = BleboxDevice(new_device_id, SEPL_DEVICE_TYPE, name, unknown_devices[new_device_id].get('ip')) device.addTag('type', unknown_devices[new_device_id].get('type')) if init: DevicePool.add(device) else: Client.add(device) if changed_devices: for changed_device_id in changed_devices: device = DevicePool.get(changed_device_id) name = unknown_devices[changed_device_id].get('deviceName') if not name == device.name: device.name = name if init: DevicePool.update(device) else: Client.update(device) logger.info("name of '{}' changed to {}".format( changed_device_id, name)) __class__._known_devices = unknown_devices
device_manager.add(device_2) device_manager.add( Device(id_3, 'iot#d66ec9bc-e37f-4f35-a788-027301aad6c2', 'Dummy Device 3')) if __name__ == '__main__': connector_client = Client(device_manager) logger.info('###### runtime phase ######') if 1 in tests: time.sleep(0.5) logger.info('------ add tag to existing device ------') device = device_manager.get(id_1) device.addTag('type', 'Dummy') Client.update(device) if 2 in tests: time.sleep(0.5) logger.info('------ change tag on existing device ------') device = device_manager.get(id_1) device.changeTag('type', 'dummy device') Client.update(device) if 3 in tests: time.sleep(0.5) logger.info('------ remove tag on existing device ------') device = device_manager.get(id_2) device.removeTag('type') Client.update(device)