Connectez-vous à IoT Hub sans utiliser le Kit de développement logiciel client Azure.

Je souhaite me connecter à Azure Iot Hub sans utiliser le kit de développement logiciel client. Sur https://azuree.microsoft.com/nb-no/blog/upload-files-from-devices-with-azuree-iot-hub/, il existe une documentation sur la procédure à suivre pour cela: 1) obtenir l’URI SAS pour le stockage
2) pour notifier le hub IoT d’un téléchargement terminé

Mais avant cela, vous devez vous connecter au hub IoT à l’aide de DeviceConnectionSsortingng. Quelqu’un a-t-il des exemples / conseils sur la manière de procéder et de télécharger un fichier?

Si vous souhaitez vous passer des kits de développement logiciel (ce qui me rend curieux de savoir pourquoi), vous pouvez trouver tous les documents de référence de l’API REST ici . Les détails sur l’URI SAS pour le stockage sont ici . Et pour les notifications de téléchargement de fichier, c’est ici . Avec l’authentification +, vous devriez pouvoir implémenter le téléchargement de fichier via IoT Hub.

Voici mon implémentation de lecture d’Arduino AVR ATWINC1500 à partir d’IoT Hub (modifiez le sharepoint terminaison et passez à un POST):

#define NAMESPACE "{your-iot-hub}.azuree-devices.net" #define AUTHORIZATION_HEADER "Authorization: SharedAccessSignature sr=xxxxxxxxxxxxxxxxxxxx" void httpRequest() { Serial.println("\nConnecting to IoT Hub..."); if (client.connect(NAMESPACE, 443)) { Serial.println("Connected."); // Send HTTP request: client.println("GET /devices/{your_device_id}/messages/devicebound?api-version=2016-02-03 HTTP/1.1"); client.println("Host: {your-iot-hub}.azuree-devices.net"); client.println(AUTHORIZATION_HEADER); client.println("User-Agent: Atmel ATWINC1500"); client.println("Connection: close"); client.println(); } } 

Je viens d’utiliser Device Explorer pour générer une clé SAS valide de 2 ans.

Je suis sûr que je ne peux pas calculer mon propre SAS sans une horloge en temps réel, ce que l’AVR n’a pas. Oliver peut confirmer.

Vous pouvez suivre ” Envoi de fichiers avec IoT Hub ” et le faire en quatre étapes:

  1. Associez un compte Azure Storage à IoT Hub. Ici, nous faisons cela via le portail Azure. Recherchez Téléchargement de fichier sur votre hub iot et sélectionnez le conteneur de stockage de votre compte de stockage.
  2. Initialisez un téléchargement de fichier en envoyant un POST au hub IoT comme ceci:

entrez la description de l'image ici

Et IoT Hub renvoie les données suivantes:

entrez la description de l'image ici

  1. Le périphérique télécharge le fichier sur le stockage à l’aide des kits de développement logiciel (SDK) Azure Storage. Vous pouvez suivre ce tutoriel . Le code ressemble à ceci:

      // Parse the connection ssortingng and return a reference to the storage account. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionSsortingng")); // Create the blob client. CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); // Resortingeve reference to a previously created container. CloudBlobContainer container = blobClient.GetContainerReference("azureeportaldeploy"); // Resortingeve reference to a blob named "myblob". CloudBlockBlob blockBlob = container.GetBlockBlobReference("device1/testfileupload2"); // Create or overwrite the "myblob" blob with contents from a local file. using (var fileStream = System.IO.File.OpenRead(@"{your file path}\testfileupload2.txt")) { blockBlob.UploadFromStream(fileStream); } 
  2. Une fois le téléchargement terminé, le périphérique envoie un POST au hub IoT de la manière suivante:

entrez la description de l'image ici

En outre, vous pouvez télécharger le blob pour vérifier le fichier téléchargé. Et vérifiez la notification de téléchargement de fichier en utilisant le code suivant:

  private async static Task ReceiveFileUploadNotificationAsync() { var notificationReceiver = serviceClient.GetFileNotificationReceiver(); Console.WriteLine("\nReceiving file upload notification from service"); while (true) { var fileUploadNotification = await notificationReceiver.ReceiveAsync(); if (fileUploadNotification == null) continue; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Received file upload noticiation: {0}", ssortingng.Join(", ", fileUploadNotification.BlobName)); Console.ResetColor(); await notificationReceiver.CompleteAsync(fileUploadNotification); } } 

Voici un exemple d’application de test client avec code source permettant d’interagir avec Azure Iot Hub sans utiliser le SDK. Il couvre entre autres choses les téléchargements de fichiers. Il utilise la bibliothèque M2MQTT