AAS per REST an Environment übertragen

Ein weiterer Test mit dem BaSyx AAS Environment. Dieses Mal wollte ich sehen, ob ich das AAS Core Works C# SDK nutzen kann, um eine AAS programmatisch zu erstellen und per HTTP POST an das AAS Environment zu übertragen.

Einem C#-Projekt wird das AAS Core Works SDK wie folgt hinzugefügt:

dotnet add package AasCore.Aas3_0

Anbei folgt das Minimalbeispiel, in dem eine AAS instanziert und per HTTP POST an das AAS Environment übertragen wird:

using AasCore.Aas3_0;
using AasJsonization = AasCore.Aas3_0.Jsonization;

namespace AasApp1
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            var aas = new AssetAdministrationShell("https://example.com/ids/123456879",
                new AssetInformation(AssetKind.Instance));

            aas.Description = new List<ILangStringTextType>(1);
            aas.Description?.Add(new LangStringTextType("en", "My Description"));

            // Serialize to a JSON object
            var jsonObject = AasJsonization.Serialize.ToJsonObject(
                aas
            );

            var client = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Post, "http://{IP}:{PORT}/shells");
            request.Headers.Add("Accept", "application/json");
            request.Content = new StringContent(jsonObject.ToString(), null, "application/json");
            var response = await client.SendAsync(request);
            response.EnsureSuccessStatusCode();
            Console.WriteLine(await response.Content.ReadAsStringAsync());
        }
    }
}

Zur Erzeugung der AAS hätte die Angabe von Identifier und AssetKind im Konstruktor ausgereicht. Die Description ist hier optional.

Dann erfolgt der HTTP request. Bei Erfolg sendet der Server die übertragene AAS als JSON zurück.

Das letzte WriteLine erzeugt also folgende Ausgabe:

{"modelType":"AssetAdministrationShell","assetInformation":{"assetKind":"Instance"},"id":"https://example.com/ids/123456879","description":[{"language":"en","text":"My Description"}]}

Mit dem C# SDK steht dem Generieren eigener Admin Shells und Submodels aus diversen Quellen nichts mehr im Wege.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert