From 8e808f9d55d11bdbbf4df096ba28affd7e5dac42 Mon Sep 17 00:00:00 2001 From: Frank Rohde <frank.rohde@tu-dresden.de> Date: Thu, 25 Aug 2022 14:43:26 +0200 Subject: [PATCH] Bugfix: STOMP message is sent if BT rawdata only contains rss-values and no distances BT rawdata messages are ignored if neither distances nor rss-values are contained UWB rawdata messages are ignored if no distances contained testdata extended --- .../ipos/project/iposextension/tooz/Tooz.java | 2 +- .../project/iposextension/tooz/ToozExt.java | 28 ++++++++++++++----- .../iposextension/tooz/ToozLocalAgent.java | 6 ++-- testdata_raw_tooz.txt | 4 +++ 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/ipos/project/iposextension/tooz/Tooz.java b/src/main/java/ipos/project/iposextension/tooz/Tooz.java index 49025e7..a4a1adf 100644 --- a/src/main/java/ipos/project/iposextension/tooz/Tooz.java +++ b/src/main/java/ipos/project/iposextension/tooz/Tooz.java @@ -122,7 +122,7 @@ public class Tooz { } List<Map.Entry<String, Double>> sortedDistances = extractSortedDistances(monitoredTarget); if (sortedDistances.size() == 0){ - LOG.info("Could not update Tooz-backend for monitoring Target " + monitoredTarget.getTargetSensorId() + "as no distant entities are known yet."); + LOG.info("Could not update Tooz-backend for monitoring Target " + monitoredTarget.getTargetSensorId() + " as no distant entities are known yet."); return; } Map.Entry<String, Double> nearestDistantEntity = sortedDistances.get(0); diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozExt.java b/src/main/java/ipos/project/iposextension/tooz/ToozExt.java index 453858b..6046133 100644 --- a/src/main/java/ipos/project/iposextension/tooz/ToozExt.java +++ b/src/main/java/ipos/project/iposextension/tooz/ToozExt.java @@ -41,17 +41,31 @@ public class ToozExt extends IPosExtension { @Override public void handleRawdataEvent(IPosRawdataEvent iPosRawdataEvent) { if (iPosRawdataEvent instanceof IPosUWBEvent){ - IPosUWBEvent iPosUWBEvent = (IPosUWBEvent) iPosRawdataEvent; - handleIPosBeaconEvent((IPosBeaconEvent) iPosUWBEvent); + handleIPosUWBEvent((IPosUWBEvent) iPosRawdataEvent); } if (iPosRawdataEvent instanceof IPosBTEvent){ - IPosBTEvent iPosBTEvent = (IPosBTEvent) iPosRawdataEvent; - if (null == iPosBTEvent.getDistances() && null != iPosBTEvent.getRss()) { - iPosBTEvent.setDistances(translateRssToDistances(iPosBTEvent)); + handleIPosBTEvent((IPosBTEvent) iPosRawdataEvent); + } + } - } + private void handleIPosBTEvent(IPosBTEvent iPosRawdataEvent) { + IPosBTEvent iPosBTEvent = iPosRawdataEvent; + if ((iPosBTEvent.getDistances().size() == 0) && (iPosBTEvent.getRss().size() == 0)){ + LOG.info("Ignoring IPosBTEvent, as it neither contains distances nor rss-values"); + return; + } + if ((iPosBTEvent.getDistances().size() == 0) && (iPosBTEvent.getRss().size() > 0)) { + iPosBTEvent.setDistances(translateRssToDistances(iPosBTEvent)); + } + handleIPosBeaconEvent((IPosBeaconEvent) iPosBTEvent); + } - handleIPosBeaconEvent((IPosBeaconEvent) iPosBTEvent); + private void handleIPosUWBEvent(IPosUWBEvent iPosRawdataEvent) { + IPosUWBEvent iPosUWBEvent = iPosRawdataEvent; + if (iPosUWBEvent.getDistances().size() > 0) { + handleIPosBeaconEvent((IPosBeaconEvent) iPosUWBEvent); + }else{ + LOG.info("Ignoring IPosUWBEvent as it does not contain any distances"); } } diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozLocalAgent.java b/src/main/java/ipos/project/iposextension/tooz/ToozLocalAgent.java index b17454c..094b636 100644 --- a/src/main/java/ipos/project/iposextension/tooz/ToozLocalAgent.java +++ b/src/main/java/ipos/project/iposextension/tooz/ToozLocalAgent.java @@ -65,8 +65,10 @@ public class ToozLocalAgent { private String targetSensorId; public void addOrUpdateDistances(Map<String, Double> map){ - map.entrySet().forEach(entry -> distances.put(entry.getKey(), entry.getValue())); // put-function creates new entry, or updates existing one - this.hasChanged = true; + if (map.size() > 0) { + map.entrySet().forEach(entry -> distances.put(entry.getKey(), entry.getValue())); // put-function creates new entry, or updates existing one + this.hasChanged = true; + } } public String getLocalAgentId() { diff --git a/testdata_raw_tooz.txt b/testdata_raw_tooz.txt index 2d43355..7a6e3f3 100644 --- a/testdata_raw_tooz.txt +++ b/testdata_raw_tooz.txt @@ -1,4 +1,8 @@ +{"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_uwb", "type": "UWB"}]} +{"bluetoothRawDataEvent" : [{"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_bt", "type": "BT"}]} +{"bluetoothRawDataEvent" : [{"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_bt", "type": "BT", "rss": {"beacon_1" : "12.7", "beacon_2" : "15.3", "beacon_3" : "18.7"}}]} {"bluetoothRawDataEvent" : [{"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_bt", "distances": {"beacon_1" : "2.5", "beacon_2" : "5.5", "beacon_3" : "8.5"}, "type": "BT", "rss": {"beacon_1" : "12.7", "beacon_2" : "15.3", "beacon_3" : "18.7"}}]} +{"bluetoothRawDataEvent" : [{"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_bt", "distances": {"beacon_1" : "2.5", "beacon_2" : "5.5", "beacon_3" : "8.5"}, "type": "BT"}]} {"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_1" : "2.5", "beacon_2" : "5.5", "beacon_3" : "8.5"}, "type": "UWB"}]} {"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:04:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_1" : "15.0"}, "type": "UWB"}]} {"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:05:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_5" : "1.8"}, "type": "UWB"}]} \ No newline at end of file -- GitLab