public static void RegisterAASX(string registry, string server, string aasxFolder) { RegistryClientSettings settings = new RegistryClientSettings(); settings.RegistryConfig.RegistryUrl = "http://" + registry; RegistryClient registryClient = new RegistryClient(settings); string[] aasxFiles = Directory.GetFiles(aasxFolder, "*.aasx"); foreach (var aasxFile in aasxFiles) { Package package = Package.Open(aasxFile, FileMode.Open, FileAccess.Read); using (AASX aasx = new AASX(package)) { AssetAdministrationShellEnvironment environment = aasx.GetEnvironment(); IAssetAdministrationShell aas = environment?.AssetAdministrationShells[0]; if (aas != null) { AssetAdministrationShellDescriptor shellDescriptor = new AssetAdministrationShellDescriptor(aas, new List <HttpEndpoint>() { //Hier die entsprechende IP-Adresse der Verwaltungsschale eintragen, die du bereits gestartet hast new HttpEndpoint("http://" + server + "/aas/" + aas.IdShort + "/complete") }); foreach (var submodel in aas.Submodels) { if (submodel != null) { SubmodelDescriptor submodelDescriptor = new SubmodelDescriptor(submodel, new List <HttpEndpoint>() { //Hier die entsprechende IP-Adresse der Verwaltungsschale oder des sich selbst-hostenden Teilmodells eintragen //In diesem Beispiel hostet die VWS das Teilmodell new HttpEndpoint("http://" + server + "/aas/" + aas.IdShort + "/submodels/" + submodel.IdShort + "/table") }); shellDescriptor.SubmodelDescriptors.Create(submodelDescriptor); } } Console.WriteLine("Register AAS: {0} {1}", aas.IdShort, aas.Identification.Id); registryClient.CreateAssetAdministrationShell(shellDescriptor); } else { Console.WriteLine("Can not register AASX: {0}", aasxFile); } } } Console.WriteLine("View registry on http://{0}/ui", registry); Console.WriteLine(); }
public IActionResult PutSubmodelToShell([FromBody] ISubmodel submodel) { if (submodel == null) { return(ResultHandling.NullResult(nameof(submodel))); } var result = CreateSubmodel(submodel); if (result.Success && result.Entity != null) { var spEndpoints = ServiceDescriptor.Endpoints.ToList().ConvertAll(c => new HttpEndpoint(DefaultEndpointRegistration.GetSubmodelEndpoint(c, submodel.IdShort))); ISubmodelDescriptor descriptor = new SubmodelDescriptor(submodel, spEndpoints); SubmodelServiceProvider cssp = new SubmodelServiceProvider(submodel, descriptor); assetAdministrationShellServiceProvider.SubmodelRegistry.RegisterSubmodelServiceProvider(submodel.IdShort, cssp); } return(result.CreateActionResult(CrudOperation.Create, "aas/submodels/" + submodel.IdShort)); }
public void BindTo(ISubmodel element) { Submodel = element; ServiceDescriptor = new SubmodelDescriptor(element, null); }