diff --git a/openmtc-app/src/openmtc_app/onem2m.py b/openmtc-app/src/openmtc_app/onem2m.py index 1f475d6..9d27095 100644 --- a/openmtc-app/src/openmtc_app/onem2m.py +++ b/openmtc-app/src/openmtc_app/onem2m.py @@ -765,6 +765,7 @@ class ResourceManagementXAE(XAE): def _discover_openmtc_ipe_entities(self): # connected to backend or gateway? cse_base = self.get_resource(self.cse_base) + self._cse_id = cse_base.CSE_ID self.logger.debug("CSE_BASE: %s", cse_base) if cse_base.cseType in (CSETypeIDE.MN_CSE, CSETypeIDE.AEN_CSE): @@ -832,21 +833,22 @@ class ResourceManagementXAE(XAE): except IndexError: continue sensor = self.get_resource(sensor_path) - sensor_info = self._discovered_sensors[sensor_path] = { - 'ID': sensor_path, - 'dev_name': dev_path.split('/')[-1], - 'cse_id': sensor_path.split('/')[1], - 'dev_labels': self._discovered_devices[dev_path].labels, - 'sensor_labels': sensor.labels, - 'type': 'sensor', - 'n': None, - 'u': None, - 'blacklisted': False - } - if self._sensor_filter(sensor_info): - self._handle_new_sensor(sensor_path) - else: - self._discovered_sensors[sensor_path]['blacklisted'] = True + if sensor: + sensor_info = self._discovered_sensors[sensor_path] = { + 'ID': sensor_path, + 'dev_name': dev_path.split('/')[-1], + 'cse_id': sensor_path.split('/')[1], + 'dev_labels': self._discovered_devices[dev_path].labels, + 'sensor_labels': sensor.labels, + 'type': 'sensor', + 'n': None, + 'u': None, + 'blacklisted': False + } + if self._sensor_filter(sensor_info): + self._handle_new_sensor(sensor_path) + else: + self._discovered_sensors[sensor_path]['blacklisted'] = True def _handle_new_sensor(self, sensor_path): latest = self.get_resource(sensor_path + '/latest') @@ -859,6 +861,8 @@ class ResourceManagementXAE(XAE): self._discovered_sensors[sensor_path]['sub_ref'] = sub_ref def _handle_delete(self, sub_ref): + if sub_ref[0] != '/': + sub_ref = self._cse_id + '/' + sub_ref self._discovered_sensors = {k: v for k, v in self._discovered_sensors.items() if v['sub_ref'] != sub_ref} self._discovered_devices = {k: v for k, v in self._discovered_devices.items() @@ -890,15 +894,16 @@ class ResourceManagementXAE(XAE): except IndexError: continue actuator = self.get_resource(actuator_path) - actuator_info = self._discovered_actuators[actuator_path] = { - 'ID': actuator_path, - 'dev_name': dev_path.split('/')[-1], - 'cse_id': actuator_path.split('/')[1], - 'dev_labels': self._discovered_devices[dev_path].labels, - 'actuator_labels': actuator.labels, - 'type': 'actuator' - } - self._new_actuator(actuator_info) + if actuator: + actuator_info = self._discovered_actuators[actuator_path] = { + 'ID': actuator_path, + 'dev_name': dev_path.split('/')[-1], + 'cse_id': actuator_path.split('/')[1], + 'dev_labels': self._discovered_devices[dev_path].labels, + 'actuator_labels': actuator.labels, + 'type': 'actuator' + } + self._new_actuator(actuator_info) @abstractmethod def _sensor_data_cb(self, sensor_info, sensor_data):