public static int Main(string[] args) { if (string.IsNullOrEmpty(deviceConnectionString) && args.Length > 0) { deviceConnectionString = args[0]; } if (string.IsNullOrEmpty(deviceConnectionString)) { Console.WriteLine("Please set a value for the environment variable \"DIGITAL_TWIN_DEVICE_CONNECTION_STRING\" or pass it in as an argument"); Console.WriteLine("Press any key to exit"); Console.ReadLine(); return(0); } using (var deviceClient = DeviceClient.CreateFromConnectionString(deviceConnectionString, transportType)) { DigitalTwinClient digitalTwinClient = new DigitalTwinClient(deviceClient); if (digitalTwinClient == null) { Console.WriteLine("Failed to create DeviceClient!"); return(1); } var sample = new DigitalTwinClientSample(digitalTwinClient); sample.RunSampleAsync().GetAwaiter().GetResult(); Console.WriteLine("Waiting to receive updates from cloud..."); Console.WriteLine("Press any key to exit"); Console.ReadLine(); } return(0); }
public static async Task <int> Main(string[] args) { if (args.Length < 3) { Console.WriteLine("ProvisioningDeviceClientSymmetricKey <IDScope> <Secret> <registration>"); return(1); } s_idScope = args[0]; string primaryKey = args[1]; string secondaryKey = args[1]; registrationId = args[2]; SecurityProvider _security; using (var security = new SecurityProviderSymmetricKey(registrationId, primaryKey, secondaryKey)) // Select one of the available transports: // To optimize for size, reference only the protocols used by your application. using (var transport = new ProvisioningTransportHandlerAmqp(TransportFallbackType.TcpOnly)) // using (var transport = new ProvisioningTransportHandlerHttp()) // using (var transport = new ProvisioningTransportHandlerMqtt(TransportFallbackType.TcpOnly)) // using (var transport = new ProvisioningTransportHandlerMqtt(TransportFallbackType.WebSocketOnly)) { _security = security; ProvisioningDeviceClient _provClient = ProvisioningDeviceClient.Create(GlobalDeviceEndpoint, s_idScope, _security, transport); Console.WriteLine($"RegistrationID = {_security.GetRegistrationID()}"); VerifyRegistrationIdFormat(_security.GetRegistrationID()); Console.Write("ProvisioningClient RegisterAsync . . . "); DeviceRegistrationResult result = await _provClient.RegisterAsync().ConfigureAwait(false); Console.WriteLine($"{result.Status}"); Console.WriteLine($"ProvisioningClient AssignedHub: {result.AssignedHub}; DeviceID: {result.DeviceId}"); if (result.Status != ProvisioningRegistrationStatusType.Assigned) { return(1); } IAuthenticationMethod auth; if (_security is SecurityProviderTpm) { Console.WriteLine("Creating TPM DeviceClient authentication."); auth = new DeviceAuthenticationWithTpm(result.DeviceId, (_security as SecurityProviderTpm)); } else if (_security is SecurityProviderX509) { Console.WriteLine("Creating X509 DeviceClient authentication."); auth = new DeviceAuthenticationWithX509Certificate(result.DeviceId, (_security as SecurityProviderX509).GetAuthenticationCertificate()); } else if (_security is SecurityProviderSymmetricKey) { Console.WriteLine("Creating Symmetric Key DeviceClient authenication"); auth = new DeviceAuthenticationWithRegistrySymmetricKey(result.DeviceId, (_security as SecurityProviderSymmetricKey).GetPrimaryKey()); } else { throw new NotSupportedException("Unknown authentication type."); } // using (var deviceClient = DeviceClient.CreateFromConnectionString(deviceConnectionString, transportType)) using (DeviceClient deviceClient = DeviceClient.Create(result.AssignedHub, auth, TransportType.Amqp)) { // DigitalTwinClient digitalTwinClient = new DigitalTwinClient(deviceClient); if (digitalTwinClient == null) { Console.WriteLine("Failed to create DeviceClient!"); return(1); } var sample = new DigitalTwinClientSample(digitalTwinClient); await sample.RunSampleAsync(); Console.WriteLine("Waiting to receive updates from cloud..."); Console.WriteLine("Press any key to exit"); Console.ReadLine(); } } return(0); }