@EventSubscribe @MQTTPath(group = MessageGroup.COMMANDS, device = "servos", label = "position") public void convert(MQTTMessage mqttMessage) { LOG.debug( "Executing Servo command from topic: {}", mqttMessage.getMessage(), mqttMessage.getTopic()); BasicCommand basicCommand = mapFromJson(mqttMessage.getMessage(), BasicCommandImpl.class); Robot robot = robotRegistry.getRobot(basicCommand.getControllerId()); ServoDriver servoDriver = robot.getServoDriver(); String servoPosition = basicCommand.getProperty("position"); String servoId = basicCommand.getProperty("servoId"); String speed = basicCommand.getProperty("speed"); if (StringUtils.hasText(servoPosition) && StringUtils.hasText(servoId)) { LOG.info("Setting servo: {} to position: {}", servoId, servoPosition); if (StringUtils.hasText(speed)) { servoDriver.setPositionAndSpeed( servoId, IntUtils.toInt(speed, DEFAULT_SPEED), IntUtils.toSafeInt(servoPosition)); } else { servoDriver.setTargetPosition(servoId, IntUtils.toSafeInt(servoPosition)); } } else { LOG.warn("Received servo command, but no servoId or Position specified"); } }