From d8b30372e3a444b34e1144f1bfad89cd5fef6ac4 Mon Sep 17 00:00:00 2001 From: Frank Rohde <frank.rohde@tu-dresden.de> Date: Fri, 1 Oct 2021 17:11:50 +0200 Subject: [PATCH] =?UTF-8?q?datamodel:=20configWrapper-Feldnamen=20ge=C3=A4?= =?UTF-8?q?ndert=20SimpleSceneIntegration:=20ConfigWrapper-Protobuf=20kann?= =?UTF-8?q?=20empfangen=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SimpleSceneIntegration.java | 9 ++++--- .../api/MqttRequestHandler.java | 26 +++++++++++++------ .../UseCaseController/PositionMonitoring.java | 14 +++++----- src/main/resources/SimpleScene.proto | 11 ++++---- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java index bd3fb8a..af5fd0b 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java @@ -43,11 +43,12 @@ public class SimpleSceneIntegration { // LOG.info("obtained protobuf-positionEvent:" + posEvent_proto.toString()); MqttMessage mqttMessage = mqttService.createMqttMsg(posEvent_proto, 0, false); - // Protobuf-Versand: LOG.info("publishing mqttMessage:" + mqttMessage.toString() + " on topic: " + monitoringTaskId); - // mqttService.publish(monitoringTaskId, mqttMessage); + // LOG.info("publishing mqttMessage:" + mqttMessage.toString() + " on topic: " + monitoringTaskId); + mqttService.publish(monitoringTaskId, mqttMessage); + LOG.info("publishing protobuf mqttMessage. JSON-representation:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); - LOG.info("publishing mqttMessage:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); - mqttService.publish(monitoringTaskId, ProtoJsonMap.toJson(posEvent_proto), 0, false); + //LOG.info("publishing mqttMessage:" + ProtoJsonMap.toJson(posEvent_proto) + " on topic: " + monitoringTaskId); + // mqttService.publish(monitoringTaskId, ProtoJsonMap.toJson(posEvent_proto), 0, false); }else{ LOG.warn("Warning: SimpleScene: Received empty PositionEvent"); } diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java index 0b45117..5804bc8 100644 --- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java +++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java @@ -1,11 +1,17 @@ package ipos.project.DataModellntegration.SimpleSceneIntegration.api; import com.google.protobuf.InvalidProtocolBufferException; +import ipos.models.GenericSensor; +import ipos.models.SimpleScene; import ipos.models.SimpleScene.IposMonitoringRequest; +import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneIntegration; import ipos.project.DataModellntegration.SimpleSceneIntegration.service.SimpleSceneTransformer; import ipos.project.DataModellntegration.iPos_Datamodel.MonitoringRequest; +import ipos.project.UseCaseController.PositionMonitoring; import ipos.project.config.mqtt.Handler; import ipos.project.config.mqtt.MqttListener; +import ipos.project.mapper.ProtoJsonMap; +import org.apache.logging.log4j.LogManager; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,10 +20,10 @@ import org.springframework.jms.core.JmsTemplate; // subscribe to the topic. It's example -@MqttListener("usertopic/IposMonitoringRequest") +@MqttListener("usertopic/IposConfigWrapper") public class MqttRequestHandler implements Handler { - private final Logger LOG = LoggerFactory.getLogger(getClass()); + private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger(); JmsTemplate jmsTemplate; @Autowired @@ -28,13 +34,17 @@ public class MqttRequestHandler implements Handler { // method that handle new message from the topic public void handle(MqttMessage message) { try { - IposMonitoringRequest monReqProto = IposMonitoringRequest.parseFrom(message.getPayload()); - LOG.info("IposMonitoringRequest received: \n" - + monReqProto.toString()); - MonitoringRequest monReqInternal = SimpleSceneTransformer.monReq_SScene2Internal(monReqProto); - // TODO: send request via JMS to MonitoringController + SimpleScene.IposConfigWrapper iposConfigWrapper = ProtoJsonMap.fromJson(message.toString(), SimpleScene.IposConfigWrapper.class); + // IposMonitoringRequest monReqProto = IposMonitoringRequest.parseFrom(message.getPayload()); + LOG.info("IposConfigWrapper received: \n" + + iposConfigWrapper.toString()); + for (IposMonitoringRequest monReq : iposConfigWrapper.getMonitoringRequestsList()){ + MonitoringRequest monReqInternal = SimpleSceneTransformer.monReq_SScene2Internal(monReq); + PositionMonitoring.receiveMessage(monReqInternal); + // TODO: send request via JMS to MonitoringController + } - this.jmsTemplate.convertAndSend("/request123", monReqInternal); // submit request to the internal broker + // this.jmsTemplate.convertAndSend("/request123", monReqInternal); // submit request to the internal broker } catch (InvalidProtocolBufferException e) { e.printStackTrace(); } diff --git a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java index b6f56ef..8791d24 100644 --- a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java +++ b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java @@ -22,20 +22,20 @@ public class PositionMonitoring { private static WorldModel wm; private static List<eventFilter> eventFilters = new ArrayList<eventFilter>(); private static Map<String, List<String>> zonePopulation = new HashMap<String, List<String>>(); - private IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE; + private static IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE; public static final String EXIT_NOTIFICATION_TYPE = "ExitNotification"; public static final String ENTRY_NOTIFICATION_TYPE = "EntryNotification"; public static final String UNDEFINED_TYPE = "undefined"; - public static final String TOPIC_WINDOW = "Human_at_Window_Side"; public static final String TOPIC_DOOR = "Human_at_Door_Side"; + public static final String TOPIC_WINDOW = "Human_at_Window_Side"; public static final String ZONE_ID_DOOR = "cobot1_door_zone"; public static final String ZONE_ID_WINDOW = "cobot1_window_zone"; public PositionMonitoring(){ ReferenceSystem rootRefSystem = createReferenceSystem("ROOT", "ROOT", null); - List<Space> doorSpaces = new LinkedList<Space>(Arrays.asList(createSpace(2.0f, 2.0f, 2.0f, createPlacing(createPosition(createPoint3D(2.0f, 0.0f, 0f), 1f, rootRefSystem), createOrientation(0f, 0f, 0f, 0f))))); - List<Space> windowSpaces = new LinkedList<Space>(Arrays.asList(createSpace(2.0f, 2.0f, 2.0f, createPlacing(createPosition(createPoint3D(2.0f, 4.0f, 0f), 1f, rootRefSystem), createOrientation(0f, 0f, 0f, 0f))))); + List<Space> doorSpaces = new LinkedList<Space>(Arrays.asList(createSpace(2.0f, 2.0f, 6.0f, createPlacing(createPosition(createPoint3D(2.0f, 0.0f, 0f), 1f, rootRefSystem), createOrientation(0f, 0f, 0f, 0f))))); + List<Space> windowSpaces = new LinkedList<Space>(Arrays.asList(createSpace(2.0f, 2.0f, 6.0f, createPlacing(createPosition(createPoint3D(2.0f, 4.0f, 0f), 1f, rootRefSystem), createOrientation(0f, 0f, 0f, 0f))))); Zone doorZone = createZone(ZONE_ID_DOOR, ZONE_ID_DOOR, doorSpaces); Zone windowZone = createZone(ZONE_ID_WINDOW, ZONE_ID_WINDOW,windowSpaces); wm = modelFactory.createWorldModel(); @@ -164,8 +164,8 @@ public class PositionMonitoring { } @JmsListener(destination = "/monitoringRequest", containerFactory = "jmsListenFactory") - public void receiveMessage(MonitoringRequest monReq) { - LOG.info("Received <" + monReq + ">"); + public static void receiveMessage(MonitoringRequest monReq) { + LOG.info("Received MonitoringRequest <" + monReq + ">"); eventFilter filter = new eventFilter(monReq.getMonitoringTaskId()); filter.setWM(wm); EventFilterCondition config = modelFactory.createEventFilterCondition(); @@ -175,7 +175,7 @@ public class PositionMonitoring { } filter.init(config); eventFilters.add(filter); - LOG.info("EventFilter was created"); + LOG.info("EventFilter was created: " + filter.toString() + "; monitoringTaskId: " + filter.getMonitoringTaskId() + "; zone-id:" + filter.getFilterConditionConfig().getPositionConditionCellId()); } private static boolean isDoor = false; diff --git a/src/main/resources/SimpleScene.proto b/src/main/resources/SimpleScene.proto index 3fa713f..79aa262 100644 --- a/src/main/resources/SimpleScene.proto +++ b/src/main/resources/SimpleScene.proto @@ -3,11 +3,12 @@ syntax = "proto3"; package ipos.models; message IposConfigWrapper { // wrapper-message for configuration-topic - repeated IposFrameConfig frame = 1; - repeated IposObject object = 2; // an object must be either in this list - repeated IposObjectConfig objectConfig = 3; // or in this list, not in both - repeated POI poi = 4; - repeated RefSystem refsystem = 5; + repeated IposFrameConfig frames = 1; + repeated IposObject objects = 2; // an object must be either in this list + repeated IposObjectConfig objectConfigs = 3; // or in this list, not in both + repeated POI pois = 4; + repeated RefSystem refsystems = 5; + repeated IposMonitoringRequest monitoringRequests = 6; } message IposObjectConfig { -- GitLab