Aracılığıyla paylaş


Azure IoT Hub ile bir cihazdan buluta dosya yükleme

Bu makalede şunların nasıl yapılacağını gösterilmektedir:

  • Azure IoT cihazı ve hizmet SDK'larını kullanarak Azure Blob Depolama'a dosya yüklemek için IoT Hub'ın dosya yükleme özelliklerini kullanın.
  • Dosyanın başarıyla karşıya yüklendiğini IoT Hub'a bildirin ve Azure IoT hizmeti SDK'larını kullanarak IoT Hub'dan dosya yükleme bildirimleri almak için bir arka uç hizmeti oluşturun.

Bazı senaryolarda, cihazlarınızın gönderdiği verileri IoT Hub'ın kabul eden nispeten küçük cihazdan buluta iletilerine kolayca eşleyemezsiniz. IoT Hub'daki dosya yükleme özellikleri, büyük veya karmaşık verileri buluta taşımanızı sağlar. Örneğin:

  • Videolar
  • Görüntü içeren büyük dosyalar
  • Yüksek frekansta örneklenen titreşim verileri
  • Önceden işlenmiş verilerin bir biçimi

Bu dosyalar genellikle Azure Data Factory veya Hadoop yığını gibi araçlar kullanılarak bulutta toplu olarak işlenir. Bir cihazdan dosya yüklemeniz gerektiğinde IoT Hub'ın güvenliğini ve güvenilirliğini kullanmaya devam edebilirsiniz. Bu makalede nasıl yapıldığını görebilirsiniz.

Bu makale, bu makalenin içinden başvurulan çalıştırılabilir SDK örneklerini tamamlamaya yöneliktir.

Daha fazla bilgi için bkz.

Önemli

X.509 sertifika yetkilisi (CA) kimlik doğrulaması kullanan cihazlarda dosya yükleme işlevi genel önizleme aşamasındadır ve önizleme modunun etkinleştirilmesi gerekir. Azure Cihaz Sağlama Hizmeti ile X.509 parmak izi kimlik doğrulaması veya X.509 sertifika kanıtlama kullanan cihazlarda genel olarak kullanılabilir. IoT Hub ile X.509 kimlik doğrulaması hakkında daha fazla bilgi edinmek için bkz . Desteklenen X.509 sertifikaları.

Önkoşullar

  • Bir IoT hub'ı. Bazı SDK çağrıları IoT Hub birincil bağlantı dizesi gerektirir, bu nedenle bağlantı dizesi not edin.

  • Kayıtlı bir cihaz. Bazı SDK çağrıları, cihazın birincil bağlantı dizesi gerektirir, bu nedenle bağlantı dizesi not edin.

  • IoT Hub Service Connect izni - Dosya karşıya yükleme bildirim iletilerini almak için arka uç hizmetinizin Service Connect iznine sahip olması gerekir. Varsayılan olarak, her IoT Hub bu izni veren hizmet adlı bir paylaşılan erişim ilkesiyle oluşturulur. Daha fazla bilgi için bkz . IoT hub'ına bağlanma.

  • Azure Depolama hesabını ve Azure Blob Depolama kapsayıcısını bağlayarak IoT hub'ınıza dosya yüklemeyi yapılandırın. Bunları Azure portalı, Azure CLI veya Azure PowerShell kullanarak yapılandırabilirsiniz.

Genel bakış

Bu nasıl yapılır iki bölüm içerir:

  • Cihaz uygulamasından dosya yükleme
  • Arka uç uygulamasında dosya karşıya yükleme bildirimi alma

Cihaz uygulamasından dosya yükleme

Bu bölümde, .NET için Azure IoT SDK'sında DeviceClient sınıfını kullanarak bir cihazdan IoT hub'ına dosya yükleme işlemi açıklanmaktadır.

Bir cihazdan IoT hub'ına dosya yüklemek için şu yordamı izleyin:

  1. IoT hub'ına bağlanma
  2. IoT hub'ından SAS URI'si alma
  3. Dosyayı Azure depolamaya yükleme
  4. Dosya karşıya yükleme durumunu IoT hub'ına bildirme

Cihaza bağlanma

Cihaza bağlanmak için CreateFromConnectionString'i çağırın. Cihaz birincil bağlantı dizesi geçirin.

AMQP varsayılan aktarım protokolüdür.

static string connectionString = "{device primary connection string}";
deviceClient = DeviceClient.CreateFromConnectionString(connectionString);

IoT hub'ından SAS URI'si alma

Dosya yükleme ayrıntılarını almak için GetFileUploadSasUriAsync'i arayın. SAS URI'si bir sonraki adımda bir cihazdan Blob Depolama'ya dosya yüklemek için kullanılır.

const string filePath = "TestPayload.txt";
using var fileStreamSource = new FileStream(filePath, FileMode.Open);
var fileName = Path.GetFileName(fileStreamSource.Name);
var fileUploadSasUriRequest = new FileUploadSasUriRequest
{
    BlobName = fileName
};

FileUploadSasUriResponse sasUri = await _deviceClient.GetFileUploadSasUriAsync(fileUploadSasUriRequest, System.Threading.CancellationToken cancellationToken = default);
Uri uploadUri = sasUri.GetBlobUri();

Azure depolamaya dosya yükleme

Azure depolamaya dosya yüklemek için:

  1. Karşıya dosya yükleme URI'sini geçirerek bir blockBlobClient nesnesi oluşturun.

  2. Sas URI'sini geçirerek Blob Depolama'ya dosya yüklemek için UploadAsync yöntemini kullanın. İsteğe bağlı olarak Blob karşıya yükleme seçenekleri ve iptal belirteci parametreleri ekleyebilirsiniz.

Azure Blob istemcisi, dosyayı Azure Depolama'ya yüklemek için protokol olarak her zaman HTTPS kullanır.

Bu örnekte, BlockBlobClient Azure Depolama blok Blob istemcisi oluşturmak için SAS URI'sine geçirilir ve dosyayı karşıya yükler:

var blockBlobClient = new BlockBlobClient(uploadUri);
await blockBlobClient.UploadAsync(fileStreamSource, null, null);

Dosya karşıya yükleme durumunu IoT hub'ına bildirme

Cihaz istemcisinin karşıya yüklemeyi tamamlayıp fileUploadCompletionNotification nesnesi geçirerek IoT hub'ına bildirim göndermek için CompleteFileUploadAsync kullanın. IsSuccess bayrağı, karşıya yüklemenin başarılı olup olmadığını gösterir. Bildirim aldıktan sonra IoT hub'ı karşıya yükleme (SAS URI'sı) ile ilişkili kaynakları serbest bırakır.

Dosya karşıya yükleme bildirimleri etkinleştirilirse, IoT hub dosya karşıya yükleme bildirimi için yapılandırılmış arka uç hizmetlerine bir dosya karşıya yükleme bildirimi iletisi gönderir.

var successfulFileUploadCompletionNotification = new FileUploadCompletionNotification
{
    // Mandatory. Must be the same value as the correlation id returned in the sas uri response
    CorrelationId = sasUri.CorrelationId,

    // Mandatory. Will be present when service client receives this file upload notification
    IsSuccess = true,

    // Optional, user defined status code. Will be present when service client receives this file upload notification
    StatusCode = 200,

    // Optional, user-defined status description. Will be present when service client receives this file upload notification
    StatusDescription = "Success"
};

await _deviceClient.CompleteFileUploadAsync(successfulFileUploadCompletionNotification);

SDK dosyası karşıya yükleme örneği

SDK bu dosya karşıya yükleme örneğini içerir.

Arka uç uygulamasında dosya karşıya yükleme bildirimi alma

IoT hub'ından dosya karşıya yükleme bildirim iletileri almak için bir arka uç hizmeti oluşturabilirsiniz.

ServiceClient sınıfı, hizmetlerin dosya yükleme bildirimlerini almak için kullanabileceği yöntemler içerir.

Dosya karşıya yükleme bildirimi almak için:

  1. IoT hub'ına bağlanmak için CreateFromConnectionString'i çağırın. IoT hub birincil bağlantı dizesi geçirin.
  2. CancellationToken oluşturun.
  3. Bildirim alıcısı oluşturmak için GetFileNotificationReceiver öğesini çağırın.
  4. Dosya karşıya yükleme bildirimini beklemek için ReceiveAsync ile bir döngü kullanın.

Örneğin:

using Microsoft.Azure.Devices;
static ServiceClient serviceClient;
static string connectionString = "{IoT hub connection string}";
serviceClient = ServiceClient.CreateFromConnectionString(connectionString);

// Define the cancellation token
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;

// Create a notification receiver
var notificationReceiver = serviceClient.GetFileNotificationReceiver();
Console.WriteLine("\nReceiving file upload notification from service");

// Check for file upload notifications
while (true)
{
    var fileUploadNotification = await notificationReceiver.ReceiveAsync(token);
    if (fileUploadNotification == null) continue;
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine("Received file upload notification: {0}", 
        string.Join(", ", fileUploadNotification.BlobName));
    Console.ResetColor();
    await notificationReceiver.CompleteAsync(fileUploadNotification);
}

Genel bakış

Bu nasıl yapılır iki bölüm içerir:

  • Cihaz uygulamasından dosya yükleme
  • Arka uç uygulamasında dosya karşıya yükleme bildirimi alma

Cihaz uygulamasından dosya yükleme

Bu bölümde, Java için Azure IoT SDK'sından DeviceClient sınıfını kullanarak bir cihazdan IoT hub'ına dosya yükleme işlemi açıklanmaktadır.

Bir cihazdan IoT hub'ına dosya yüklemek için şu yordamı izleyin:

  1. Cihaza bağlanma
  2. IoT hub'ından SAS URI'si alma
  3. Dosyayı Azure Depolama'ya yükleme
  4. IoT hub'ına dosya karşıya yükleme durum bildirimi gönderme

Bağlantı protokolü

Dosya yükleme işlemleri her zaman HTTPS kullanır, ancak DeviceClient telemetri, cihaz yöntemi ve cihaz ikizi gibi diğer hizmetler için IotHubClientProtocol tanımlayabilir.

IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;

Cihaza bağlanma

Cihazın birincil bağlantı dizesi kullanarak cihaza bağlanmak için öğesinin DeviceClient örneğini açın.

String connString = "{IoT hub connection string}";
DeviceClient client = new DeviceClient(connString, protocol);

IoT hub'ından SAS URI'si alma

FileUploadSasUriResponse nesnesi almak için getFileUploadSasUri çağrısı yapın.

FileUploadSasUriResponse bu yöntemleri ve dönüş değerlerini içerir. Dönüş değerleri dosya yükleme yöntemlerine geçirilebilir.

Metot Dönüş değeri
getCorrelationId() Bağıntı Kimliği
getContainerName() Kapsayıcı adı
getBlobName() Blob adı
getBlobUri() Blob URI'sı

Örneğin:

FileUploadSasUriResponse sasUriResponse = client.getFileUploadSasUri(new FileUploadSasUriRequest(file.getName()));

System.out.println("Successfully got SAS URI from IoT hub");
System.out.println("Correlation Id: " + sasUriResponse.getCorrelationId());
System.out.println("Container name: " + sasUriResponse.getContainerName());
System.out.println("Blob name: " + sasUriResponse.getBlobName());
System.out.println("Blob Uri: " + sasUriResponse.getBlobUri());

Dosyayı Azure Depolama'ya yükleme

BlobClient nesnesini oluşturmak için blob URI uç noktasını BlobClientBuilder.buildclient'a geçirin.

BlobClient blobClient =
    new BlobClientBuilder()
        .endpoint(sasUriResponse.getBlobUri().toString())
        .buildClient();

Dosyayı Blob Depolama'ya yüklemek için uploadFromFile öğesini çağırın.

String fullFileName = "Path of the file to upload";
blobClient.uploadFromFile(fullFileName);

IoT hub'ına dosya karşıya yükleme durum bildirimi gönderme

Bir dosya karşıya yükleme girişiminin ardından IoT hub'ına karşıya yükleme durumu bildirimi gönderin.

FileUploadCompletionNotification nesnesi oluşturun. ve isSuccess dosyasını karşıya correlationId yükleme başarı durumunu geçirin. Dosya yükleme başarılı olduğunda, false başarılı olmadığında bir isSuccess true değer geçirin.

FileUploadCompletionNotification dosya karşıya yükleme başarısız olsa bile çağrılmalıdır. IoT hub'ının belirli bir zamanda etkin olmasına izin verilen sabit sayıda SAS URI'sine sahiptir. Karşıya dosya yükleme işlemini tamamladıktan sonra, diğer SAS URI'sinin oluşturulabilmesi için SAS URI'nizi boşaltmanız gerekir. Sas URI'leri bu API aracılığıyla serbest değilse, SAS URI'lerinin bir IoT hub'ına göre ne kadar süreyle yaşayacak şekilde yapılandırıldığına bağlı olarak sonunda kendini serbesttir.

Bu örnek başarılı bir durum geçirir.

FileUploadCompletionNotification completionNotification = new FileUploadCompletionNotification(sasUriResponse.getCorrelationId(), true);
client.completeFileUpload(completionNotification);

İstemciyi kapatma

Kaynakları serbest.client

client.closeNow();

Arka uç uygulamasında dosya karşıya yükleme bildirimi alma

Karşıya dosya yükleme bildirimleri almak için bir arka uç uygulaması oluşturabilirsiniz.

Karşıya dosya yükleme bildirim uygulaması oluşturmak için:

  1. IoT hub hizmeti istemcisine bağlanma
  2. Karşıya dosya yükleme bildirimini denetleme

ServiceClient sınıfı, hizmetlerin dosya yükleme bildirimlerini almak için kullanabileceği yöntemler içerir.

IoT hub hizmeti istemcisine bağlanma

Bir IotHubServiceClientProtocol nesne oluşturun. Bağlantı, AMQPS protokolü kullanır.

IoT hub'ına bağlanmak için arayın createFromConnectionString . IoT hub birincil bağlantı dizesi geçirin.

private static final String connectionString = "{IoT hub primary connection string}";
private static final IotHubServiceClientProtocol protocol = IotHubServiceClientProtocol.AMQPS;
ServiceClient sc = ServiceClient.createFromConnectionString(connectionString, protocol);

Dosya karşıya yükleme durumunu denetleme

Dosya karşıya yükleme durumunu denetlemek için:

  1. GetFileUploadNotificationReceiver nesnesi oluşturun.
  2. IoT hub'ına bağlanmak için open kullanın.
  3. Dosya karşıya yükleme durumunu denetlemek için alma çağrısı. Bu yöntem bir fileUploadNotification nesnesi döndürür. Karşıya yükleme bildirimi alınırsa fileUploadNotification yöntemlerini kullanarak karşıya yükleme durumu alanlarını görüntüleyebilirsiniz.

Örneğin:

FileUploadNotificationReceiver receiver = sc.getFileUploadNotificationReceiver();
receiver.open();
FileUploadNotification fileUploadNotification = receiver.receive(2000);

if (fileUploadNotification != null)
{
    System.out.println("File Upload notification received");
    System.out.println("Device Id : " + fileUploadNotification.getDeviceId());
    System.out.println("Blob Uri: " + fileUploadNotification.getBlobUri());
    System.out.println("Blob Name: " + fileUploadNotification.getBlobName());
    System.out.println("Last Updated : " + fileUploadNotification.getLastUpdatedTimeDate());
    System.out.println("Blob Size (Bytes): " + fileUploadNotification.getBlobSizeInBytes());
    System.out.println("Enqueued Time: " + fileUploadNotification.getEnqueuedTimeUtcDate());
}
else
{
    System.out.println("No file upload notification");
}

// Close the receiver object
receiver.close();

SDK dosyası karşıya yükleme örnekleri

İki Java dosyası karşıya yükleme örneği vardır.

Paketleri yükleme

İlgili kodu çağırmadan önce azure-iot-device kitaplığı yüklenmelidir.

pip install azure-iot-device

Azure.storage.blob paketi, dosya yükleme işlemini gerçekleştirmek için kullanılır.

pip install azure.storage.blob

Bir cihaz uygulamasından dosya yükleme

Bu bölümde, Python için Azure IoT SDK'sından IoTHubDeviceClient sınıfını kullanarak bir cihazdan IoT hub'ına dosya yükleme işlemi açıklanmaktadır.

Bir cihazdan IoT hub'ına dosya yüklemek için şu yordamı izleyin:

  1. Cihaza bağlanma
  2. Blob Depolama bilgilerini alma
  3. Dosyayı Blob Depolama'ya yükleme
  4. IoT hub'ına karşıya yükleme durumunu bildirme

Kitaplıkları içeri aktarma

import os
from azure.iot.device import IoTHubDeviceClient
from azure.core.exceptions import AzureError
from azure.storage.blob import BlobClient

Cihaza bağlanma

Cihaza bağlanmak için:

  1. Cihaz birincil bağlantı dizesi eklemek için create_from_connection_string'ı çağırın.

  2. Cihaz istemcisini bağlamak için connect çağrısı yapın.

Örneğin:

# Add your IoT hub primary connection string
CONNECTION_STRING = "{Device primary connection string}"
device_client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)

# Connect the client
device_client.connect()

Blob Depolama bilgilerini alma

IoT hub'ından bağlantılı Bir Azure Depolama hesabı hakkında bilgi almak için get_storage_info_for_blob'ı arayın. Bu bilgiler konak adını, kapsayıcı adını, blob adını ve SAS belirtecini içerir. yöntemi de get_storage_info_for_blob yönteminde notify_blob_upload_status kullanılan bir correlation_iddöndürür. correlation_id IoT Hub'ın üzerinde çalıştığınız Blobu işaretleme yöntemidir.

# Get the storage info for the blob
PATH_TO_FILE = "{Full path to local file}"
blob_name = os.path.basename(PATH_TO_FILE)
blob_info = device_client.get_storage_info_for_blob(blob_name)

Blob Depolama'ya dosya yükleme

Blob Depolama'ya dosya yüklemek için:

  1. blob URL'sinden BlobClient nesnesi oluşturmak için from_blob_url kullanın.
  2. Dosyayı Blob Depolama'ya yüklemek için upload_blob'yi çağırın.

Bu örnek, BlobClient'ı başlatmak için kullandığı URL'yi oluşturmak için yapısını ayrıştırmaktadır.blob_info Ardından dosyayı Blob Depolama'ya yüklemek için çağrısında upload_blob bulunur.

try:
    sas_url = "https://{}/{}/{}{}".format(
        blob_info["hostName"],
        blob_info["containerName"],
        blob_info["blobName"],
        blob_info["sasToken"]
    )

    print("\nUploading file: {} to Azure Storage as blob: {} in container {}\n".format(file_name, blob_info["blobName"], blob_info["containerName"]))

    # Upload the specified file
    with BlobClient.from_blob_url(sas_url) as blob_client:
        with open(file_name, "rb") as f:
            result = blob_client.upload_blob(f, overwrite=True)
            return (True, result)

except FileNotFoundError as ex:
    # catch file not found and add an HTTP status code to return in notification to IoT hub
    ex.status_code = 404
    return (False, ex)

except AzureError as ex:
    # catch Azure errors that might result from the upload operation
    return (False, ex)

IoT hub'ına karşıya yükleme durumunu bildirme

Blob Depolama işleminin durumunu IoT hub'ına bildirmek için notify_blob_upload_status kullanın. correlation_id yöntemi tarafından elde edilen geçirilirget_storage_info_for_blob. , correlation_id IoT hub'ı tarafından dosya yükleme görevinin durumuyla ilgili bir bildirim dinleyen herhangi bir hizmeti bilgilendirmek için kullanılır.

Bu örnek IoT hub'ına başarılı bir dosya yükleme işlemi olduğunu bildirir:

device_client.notify_blob_upload_status(storage_info["correlationId"], True, 200, "OK: {}".format(PATH_TO_FILE)

Cihaz istemcisini kapatma

İstemciyi kapatın. Bu yöntem çağrıldıktan sonra, daha fazla istemci çağrısı girişimi bir ClientError'ın tetiklenmesiyle sonuçlanır.

device_client.shutdown()

SDK dosyası karşıya yükleme örnekleri

SDK iki dosya karşıya yükleme örneği içerir:

Genel bakış

Bu nasıl yapılır iki bölüm içerir:

  • Cihaz uygulamasından dosya yükleme
  • Arka uç uygulamasında dosya karşıya yükleme bildirimi alma

Cihaz uygulamasından dosya yükleme

Bu bölümde, Node.js için Azure IoT SDK'sında azure-iot-device paketini kullanarak bir cihazdan IoT hub'ına dosya yükleme işlemi açıklanmaktadır.

SDK paketlerini yükleme

Geliştirme makinenize azure-iot-device SDK'sını, azure-iot-device-mqtt'yi ve @azure/storage-blob paketlerini yüklemek için şu komutu çalıştırın:

npm install azure-iot-device azure-iot-device-mqtt @azure/storage-blob --save

azure-iot-device paketi, IoT cihazlarıyla arabirim oluşturan nesneler içerir.

Bir cihazdan IoT hub'ına dosya yüklemek için şu yordamı izleyin:

  1. Blob paylaşılan erişim imzalarını alma
  2. Dosyayı Azure Depolama'ya yükleme
  3. IoT hub'ına dosya karşıya yükleme durum bildirimi gönderme

Modül oluşturma

Yüklü paketleri kullanarak İstemci, Protokol, hatalar ve yol modülleri oluşturun.

const Client = require('azure-iot-device').Client;
const Protocol = require('azure-iot-device-mqtt').Mqtt;
const errors = require('azure-iot-common').errors;
const path = require('path');

IoT hub'ından SAS URI'si alma

Bağlı depolama hesabı SAS belirtecini IoT hub'ından almak için getBlobSharedAccessSignature komutunu kullanın. Önkoşullarda açıklandığı gibi, IoT hub'ı Blob Depolama'ya bağlanır.

Örneğin:

// make sure you set these environment variables prior to running the sample.
const localFilePath = process.env.PATH_TO_FILE;
const storageBlobName = path.basename(localFilePath);
const blobInfo = await client.getBlobSharedAccessSignature(storageBlobName);
if (!blobInfo) {
throw new errors.ArgumentError('Invalid upload parameters');
}

Dosyayı IoT hub'ına yükleme

Bir cihazdan IoT hub'ına dosya yüklemek için:

  1. Akış işlem hattı oluşturma
  2. Blob URL'sini oluşturma
  3. Blob Depolama'ya dosya yüklemek için BlockBlobClient oluşturma
  4. Dosyayı Blob Depolama'ya yüklemek için uploadFile çağrısı
  5. IoT hub'ına karşıya yüklemenin başarılı veya başarısız olduğunu bildirmek için notifyBlobUploadStatus'u çağırın

Örneğin:

// Open the pipeline
const pipeline = newPipeline(new AnonymousCredential(), {
retryOptions: { maxTries: 4 },
telemetry: { value: 'HighLevelSample V1.0.0' }, // Customized telemetry string
keepAliveOptions: { enable: false }
});

// Construct the blob URL
const { hostName, containerName, blobName, sasToken } = blobInfo;
const blobUrl = `https://${hostName}/${containerName}/${blobName}${sasToken}`;

// Create the BlockBlobClient for file upload to Blob Storage
const blobClient = new BlockBlobClient(blobUrl, pipeline);

// Setup blank status notification arguments to be filled in on success/failure
let isSuccess;
let statusCode;
let statusDescription;

const uploadStatus = await blobClient.uploadFile(localFilePath);
console.log('uploadStreamToBlockBlob success');

  try {
    const uploadStatus = await blobClient.uploadFile(localFilePath);
    console.log('uploadStreamToBlockBlob success');

    // Save successful status notification arguments
    isSuccess = true;
    statusCode = uploadStatus._response.status;
    statusDescription = uploadStatus._response.bodyAsText;

    // Notify IoT hub of upload to blob status (success)
    console.log('notifyBlobUploadStatus success');
  }
  catch (err) {
    isSuccess = false;
    statusCode = err.code;
    statusDescription = err.message;

    console.log('notifyBlobUploadStatus failed');
    console.log(err);
  }

// Send file upload status notification to IoT hub
await client.notifyBlobUploadStatus(blobInfo.correlationId, isSuccess, statusCode, statusDescription);

Arka uç uygulamasında dosya karşıya yükleme bildirimi alma

Cihaz dosyası karşıya yükleme bildirimleri için IoT hub hizmeti istemcisini denetlemek için bir arka uç uygulaması oluşturabilirsiniz.

Karşıya dosya yükleme bildirim uygulaması oluşturmak için:

  1. IoT hub hizmeti istemcisine bağlanma
  2. Karşıya dosya yükleme bildirimini denetleme

IoT hub hizmeti istemcisine bağlanma

ServiceClient sınıfı, hizmetlerin dosya yükleme bildirimlerini almak için kullanabileceği yöntemler içerir.

fromConnectionString kullanarak IoT hub'ına bağlanın. IoT hub birincil bağlantı dizesi geçirin.

const Client = require('azure-iothub').Client;
const connectionString = "{IoT hub primary connection string}";
const serviceClient = Client.fromConnectionString(connectionString);

IoT hub bağlantısını açın .

//Open the connection to IoT hub
serviceClient.open(function (err) {
  if (err) {
    console.error('Could not connect: ' + err.message);
  } else {
    console.log('Service client connected');

Karşıya dosya yükleme bildirimini denetleme

Dosya karşıya yükleme bildirimlerini denetlemek için:

  1. getFileNotificationReceiver çağrısı. Bildirim iletileri alındığında çağrılan bir dosya karşıya yükleme geri çağırma yönteminin adını belirtin.
  2. Geri çağırma yönteminde dosya karşıya yükleme bildirimlerini işleme.

Bu örnek bir receiveFileUploadNotification bildirim geri çağırma alıcısı ayarlar. Alıcı, dosya karşıya yükleme durum bilgilerini yorumlar ve konsola bir durum iletisi yazdırır.

//Set up the receiveFileUploadNotification notification message callback receiver
serviceClient.getFileNotificationReceiver(function receiveFileUploadNotification(err, receiver){
if (err) {
  console.error('error getting the file notification receiver: ' + err.toString());
} else {
  receiver.on('message', function (msg) {
    console.log('File upload from device:')
    console.log(msg.getData().toString('utf-8'));
    receiver.complete(msg, function (err) {
      if (err) {
        console.error('Could not finish the upload: ' + err.message);
      } else {
        console.log('Upload complete');
      }
    });
  });
}

SDK dosyası karşıya yükleme örneği

SDK, bloba bir karşıya yükleme gelişmiş örneği içerir.