Bu uygulamamızda Cumulocity C# kütüphanesini kullanarak bir cihaz oluşturacağız. Bu dökümanda ilk dökümana referans veren adımlar olacaktır.
- Microservice Tutorial Part 1 dökümanındaki ilk 5 adımı uygulayalım.
- https://www.nuget.org/packages/Cumulocity.SDK.Client/ adresinden Client kütüphanesini indirelim. İndirdiğimiz yerin bulunduğu adresi bir yere not edelim. Bir sonraki adımda kullanacağız.
- Client kütüphanesini projeye eklemek adına “Create.ps1” scriptinde değişiklikler yapalım. Öncelikle 239. Satırımıza aşağıdaki Copy-Item commandını ekliyoruz(bulunduğu klasörün yolunu yazarak) ve Client kütüphanemizi kopyalıyoruz. Bir de 256. Satırımıza bir tane daha elif statementı ekliyoruz aşağıdaki resimde olduğu gibi.
- $ ./create.ps1 (bu adımda projeniz oluşacaktır visual studio üzerinden kodları görüntüleyebilirsiniz)
- Projenizi visual studio ya da notepad++ (vb.) üzerinde açalım ve Controllers/ValuesController.cs dosyası içerisine aşağıdaki kodu yapıştıralım.
using Cumulocity.SDK.Microservices.Settings; using Cumulocity.SDK.Client; using Cumulocity.SDK.Client.Rest; using Cumulocity.SDK.Client.Rest.Model.Authentication; using Cumulocity.SDK.Client.Rest.API.Inventory; using Cumulocity.SDK.Client.Rest.Representation.Inventory; using Cumulocity.SDK.Client.Rest.Model.C8Y; using Cumulocity.SDK.Client.Rest.Model; using Microsoft.AspNetCore.Mvc; using System; namespace support.Controllers { [Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { public Platform PlatformSettings { get; } IPlatform platform_RSET { get; set; } private static (string userid, string password) DecodeUserIdAndPassword(string encodedAuth) { var userpass = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(encodedAuth)); var separator = userpass.IndexOf(':'); if (separator == -1) throw new InvalidOperationException("Invalid Authorization header: Missing separator character ':'. See RFC2617."); return (userpass.Substring(0, separator), userpass.Substring(separator + 1)); } public ValuesController(Platform platform) { PlatformSettings = platform; } // GET api/values/5 [HttpGet("{id}")] public ActionResult<string> Get(int id) { string auth = Request.Headers["Authorization"]; string encodedAuth = null; if (auth.StartsWith("Basic ", StringComparison.OrdinalIgnoreCase)) { encodedAuth = auth.Substring("Basic ".Length).Trim(); } string user = DecodeUserIdAndPassword(encodedAuth).userid; string pass = DecodeUserIdAndPassword(encodedAuth).password; platform_RSET = new PlatformImpl(PlatformSettings.BASEURL, new CumulocityCredentials(user, pass)); IInventoryApi inventory = platform_RSET.InventoryApi; //Accessing the inventory var mo_hw = new ManagedObjectRepresentation(); mo_hw.Name = "Device : " + id; mo_hw.Set(new IsDevice()); mo_hw.Set(new Position() { Alt = 0.2m, Lat = 40.0m, Lng = 500m }); var mo_hw1 = inventory.Create(mo_hw); //Console.WriteLine($"Url: {mo_hw1.Self}"); return "open staging env: " + PlatformSettings.BASEURL + " and navigate to Device management -> Devices -> All devices to check the newly created managed object with the name " + mo_hw.Name + " ."; } } }
- Dotnet versiyonu 2.2.110 için bu adımda “..microservicesdk-win-dev-latest/<your_solution_name>/src/<your_solution_api_name>” klasörü içerisinde bulunan “<your_api_name>.csproj” dosyası içerisinde “InProcess” texti “inprocess” olarak modifiye edilmelidir.
- Uygulamamız inventory üzerinde create işlemi yaptığı için, gerekli izinleri uygulamamıza sağlamalıyız. Bunu yapabilmek için proje klasörümüzde images/multi klasörü altındaki “cumulocity.json” dosyasını değiştirmemiz gerekiyor. Aşağıdaki satırı bu dosyaya ekleyelim.
“requiredRoles”: [“ROLE_INVENTORY_ADMIN”,”ROLE_IDENTITY_ADMIN”]
- Microservice çağırma yolunu değiştirmek için de “cumulocity.json” dosyası içerisindeki “contextPath” değişkenini “devices” olarak değiştirelim.
- $ ./build.ps1
- Bu adımda images/multi klasörü altında oluşan zip dosyamızın ismini değiştirirsek, platform üzerinde uygulamamızın adını değiştirmiş oluruz.
- Yukarıdaki adım sonucu images/multi klasörü altında oluşan images.zip dosyasını tenantınıza girip, administration uygulamasının applications bölümü altından “upload microservice” diyerek upload ediniz.
Test için https://<your_tenant>.iottest.turkcell.com.tr/service/devices/api/values/<herhangi bir sayı> adresine ulaşalım ve credentiallarımızı girelim. Bu işlem sonucunda girdiğimiz sayı ile referans edilmiş bir cihaz oluşacaktır. Device Management uygulamasından görebilirsiniz.
Comments