Hızlı Başlangıç: IoT Hub cihaz akışları aracılığıyla C 'deki bir cihaz uygulamasıyla iletişim kurma (Önizleme)Quickstart: Communicate to a device application in C via IoT Hub device streams (preview)

Azure IoT Hub Şu anda cihaz akışlarını Önizleme özelliğiolarak desteklemektedir.Azure IoT Hub currently supports device streams as a preview feature.

Cihaz akışları IoT Hub hizmet ve cihaz uygulamalarının güvenli ve güvenlik duvarı kolay bir şekilde iletişim kurmasına olanak tanır.IoT Hub device streams allow service and device applications to communicate in a secure and firewall-friendly manner. Genel Önizleme sırasında, C SDK 'Sı cihaz akışlarını yalnızca cihaz tarafında destekler.During public preview, the C SDK supports device streams on the device side only. Sonuç olarak, bu hızlı başlangıçta yalnızca cihaz tarafı uygulamasını çalıştırmaya yönelik yönergeler ele alınmaktadır.As a result, this quickstart covers instructions to run only the device-side application. Karşılık gelen bir hizmet tarafı uygulamasını çalıştırmak için şu makalelere bakın:To run a corresponding service-side application, see these articles:

Bu hızlı başlangıçta cihaz tarafı C uygulaması aşağıdaki işlevlere sahiptir:The device-side C application in this quickstart has the following functionality:

  • IoT cihazında bir cihaz akışı oluşturun.Establish a device stream to an IoT device.

  • Hizmet tarafı uygulamasından gönderilen verileri alır ve geri yankılanır.Receive data that's sent from the service-side application and echo it back.

Kod, bir cihaz akışının başlatma sürecini ve veri göndermek ve almak için nasıl kullanılacağını gösterir.The code demonstrates the initiation process of a device stream, as well as how to use it to send and receive data.

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı Azure Cloud Shell.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell, ya da bash PowerShell Azure hizmetleriyle çalışmak için kullanmanıza olanak sağlar.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell önceden yüklenmiş komutları kullanabilirsiniz.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell başlatmak için:To launch Azure Cloud Shell:

SeçenekOption Örnek/bağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Dene ' nin seçilmesi, kodu Cloud Shell otomatik olarak kopyalamaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için deneme örneği
Tarayıcınızda Cloud Shell açmak için Başlat Cloud Shell düğmesine gidin veyaseçin. https://shell.azure.comGo to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Cloud Shell yeni bir pencerede BaşlatLaunch Cloud Shell in a new window
Azure Portalsağ üstteki menü çubuğunda Cloud Shell düğmesini seçin.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Bu makaledeki kodu Azure Cloud Shell çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell başlatın.Launch Cloud Shell.

  2. Kodu kopyalamak için bir kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.

  3. Kodu Windows ve Linux 'ta CTRL+SHIFT+v veya MacOS 'ta cmd+Shift+v ile Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Kodu çalıştırmak için ENTER tuşuna basın.Press Enter to run the code.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don’t have an Azure subscription, create a free account before you begin.

ÖnkoşullarPrerequisites

Aşağıdaki önkoşulların olması gerekir:You need the following prerequisites:

  • Visual Studio 2019 ' i, iş yükünün etkin C++ olduğu masaüstü geliştirmeyle birlikte yükler.Install Visual Studio 2019 with the Desktop development with C++ workload enabled.

  • En son Git sürümünü yükleyin.Install the latest version of Git.

  • Azure CLı için Azure IoT uzantısını Cloud Shell örneğinize eklemek için aşağıdaki komutu çalıştırın.Run the following command to add the Azure IoT Extension for Azure CLI to your Cloud Shell instance. IOT uzantısı, Azure CLı için IoT Hub, IoT Edge ve IoT cihazı sağlama hizmeti 'ne (DPS) özgü komutlar ekler.The IOT Extension adds IoT Hub, IoT Edge, and IoT Device Provisioning Service (DPS)-specific commands to the Azure CLI.

    az extension add --name azure-cli-iot-ext
    

Cihaz akışlarının önizlemesi Şu anda yalnızca şu bölgelerde oluşturulan IoT Hub 'lar için desteklenmektedir:The preview of device streams is currently supported only for IoT hubs that are created in the following regions:

  • Orta ABDCentral US

  • Orta ABD EUAPCentral US EUAP

Geliştirme ortamını hazırlamaPrepare the development environment

Bu hızlı başlangıç için, C Için Azure IoT cihaz SDK 'sınıkullanırsınız. GitHub 'dan Azure IoT C SDK 'sını klonlamak ve derlemek için kullanılan bir geliştirme ortamı hazırlarsınız.For this quickstart, you use the Azure IoT device SDK for C. You prepare a development environment used to clone and build the Azure IoT C SDK from GitHub. GitHub 'daki SDK, bu hızlı başlangıçta kullanılan örnek kodu içerir.The SDK on GitHub includes the sample code that's used in this quickstart.

Not

Bu yordama başlamadan önce, Visual Studio 'nun iş yükü C++ ile masaüstü geliştirmeyle birlikte yüklü olduğundan emin olun.Before you begin this procedure, be sure that Visual Studio is installed with the Desktop development with C++ workload.

  1. Yükleme sayfasında açıklandığı gibi CMake derleme sistemini yükleyin.Install the CMake build system as described on the download page.

  2. Komut istemini veya Git Bash kabuğunu açın.Open a command prompt or Git Bash shell. Azure IoT C SDK GitHub deposunu kopyalamak için aşağıdaki komutu çalıştırın:Run the following command to clone the Azure IoT C SDK GitHub repository:

    git clone https://github.com/Azure/azure-iot-sdk-c.git --recursive -b public-preview
    

    Bu işlem birkaç dakika sürer.This operation should take a few minutes.

  3. Git deposunun kök dizininde aşağıdaki komutta gösterildiği gibi bir CMake dizini oluşturun ve ardından bu klasöre gidin.Create a cmake directory in the root directory of the Git repository, as shown in the following command, and then go to that folder.

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  4. Geliştirme istemci platformunuza özgü bir SDK sürümü oluşturmak için CMake dizininden aşağıdaki komutları çalıştırın.Run the following commands from the cmake directory to build a version of the SDK that's specific to your development client platform.

    • Linux 'ta:In Linux:

      cmake ..
      make -j
      
    • Windows 'ta, Visual Studio için bir geliştirici komut istemiaçın.In Windows, open a Developer Command Prompt for Visual Studio. Visual Studio sürümünüz için komutunu çalıştırın.Run the command for your version of Visual Studio. Bu hızlı başlangıçta Visual Studio 2019 kullanılır.This quickstart uses Visual Studio 2019. Bu komutlar, CMake dizinindeki sanal cihaz Için bir Visual Studio çözümü oluşturur.These commands create a Visual Studio solution for the simulated device in the cmake directory.

      rem For VS2015
      cmake .. -G "Visual Studio 14 2015"
      
      rem Or for VS2017
      cmake .. -G "Visual Studio 15 2017"
      
      rem Or for VS2019
      cmake .. -G "Visual Studio 16 2019"
      
      rem Then build the project
      cmake --build . -- /m /p:Configuration=Release
      

IoT hub oluşturmaCreate an IoT hub

Bu bölümde Azure Portalkullanarak IoT Hub 'ı oluşturma açıklanmaktadır.This section describes how to create an IoT hub using the Azure portal.

  1. Azure Portal oturum açın.Sign in to the Azure portal.

  2. Kaynak oluştur' u seçin ve ardından Market ' i Ara alanına IoT Hub girin.Choose Create a resource, and then enter IoT Hub in the Search the Marketplace field.

  3. Arama sonuçlarından IoT Hub seçin ve ardından Oluştur' u seçin.Select IoT Hub from the search results, and then select Create.

  4. Temel bilgiler sekmesinde, alanları aşağıdaki gibi doldurun:On the Basics tab, complete the fields as follows:

    • Abonelik: Hub 'ınız için kullanılacak aboneliği seçin.Subscription: Select the subscription to use for your hub.

    • Kaynak grubu: Bir kaynak grubu seçin veya yeni bir tane oluşturun.Resource Group: Select a resource group or create a new one. Yeni bir tane oluşturmak için Yeni oluştur ' u seçin ve kullanmak istediğiniz adı girin.To create a new one, select Create new and fill in the name you want to use. Var olan bir kaynak grubunu kullanmak için bu kaynak grubunu seçin.To use an existing resource group, select that resource group. Daha fazla bilgi için bkz. Azure Resource Manager kaynak gruplarını yönetme.For more information, see Manage Azure Resource Manager resource groups.

    • Bölge: Hub 'ınızın bulunmasını istediğiniz bölgeyi seçin.Region: Choose the region in which you want your hub to be located. Orta ABD veya Orta ABD euapIoT Hub cihaz akışları önizlemesini destekleyen bir bölge seçin.Select a region that supports the IoT Hub device streams preview, either Central US or Central US EUAP.

    • IoT Hub adı: Hub 'ınız için bir ad girin.IoT Hub Name: Enter a name for your hub. Bu adın küresel olarak benzersiz olması gerekir.This name must be globally unique. Girdiğiniz ad kullanılabilir durumdaysa yeşil bir onay işareti görünür.If the name you enter is available, a green check mark appears.

    Azure portal IoT Hub 'ı oluşturma

    Önemli

    IoT Hub 'ı bir DNS uç noktası olarak herkese açık olacağı için, bu dosyayı adlandırdığınızda hassas veya kişisel olarak tanımlanabilir bilgiler girmemeye özen gösterin.Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

  5. İleri ' yi seçin: Hub 'ınızı oluşturmaya devam etmek için boyut ve ölçek.Select Next: Size and scale to continue creating your hub.

    Azure portal kullanarak yeni bir IoT Hub için boyut ve ölçek ayarlama

    Boyut ve ölçek' te varsayılan ayarları kabul edebilir ve alt kısımdaki gözden geçir + oluştur ' u seçebilirsiniz.In Size and scale, you can accept the default settings and select Review + create at the bottom. Aşağıdaki seçenekleri göz önünde bulundurun:Consider the following options:

    • Fiyatlandırma ve ölçek katmanı: Seçtiğiniz katman.Pricing and scale tier: Your selected tier. Standart katmanlardan birini seçin (S1, S2veya S3) ya da F1: Ücretsiz katman.Select one of the standard tiers (S1, S2, or S3) or F1: Free tier. Bu seçenek ayrıca, dünyanın her tarafında, bir telemetride bekleyebileceğiniz akış olmayan iş yüklerinizin ve örneğin telemetri iletilerinin boyutuna göre de yapılabilir.This choice can also be guided by the size of your fleet and the non-streaming workloads that you expect in your hub, for example, telemetry messages. Örneğin, ücretsiz katman test ve değerlendirme için tasarlanmıştır.For example, the free tier is intended for testing and evaluation. 500 cihazların IoT Hub 'ına ve günde en fazla 8.000 iletiye bağlanmasını sağlar.It allows 500 devices to be connected to the IoT hub and up to 8,000 messages per day. Her Azure aboneliği ücretsiz katmanda bir IoT Hub 'ı oluşturabilir.Each Azure subscription can create one IoT hub in the free tier.

    • IoT Hub birimi sayısı: Günlük birim başına izin verilen ileti sayısı, hub 'ın fiyatlandırma katmanına bağlıdır.Number of IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. Bu seçenek, hub 'ınızda bekleyen akış olmayan iş yüküne bağlıdır.This choice depends on non-streaming workload you expect in your hub. Şimdilik 1 seçeneğini belirleyebilirsiniz.You can select 1 for now.

    • Gelişmiş ayarlar > cihazdan buluta bölümler: Bu özellik cihazdan buluta iletileri, iletilerin eşzamanlı okuyucu sayısıyla ilişkilendirir.Advanced Settings > Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. Çoğu hub 'da yalnızca dört bölüm olması gerekir.Most hubs only need four partitions.

    Katman seçenekleri hakkında daha fazla bilgi için bkz. doğru IoT Hub katmanını seçme.For more information about tier options, see Choose the right IoT hub tier.

  6. Seçimlerinizi gözden geçirmek için gözden geçir + oluştur' u seçin.To review your choices, choose Review + create. Sonuçlarınız aşağıdakine benzer olacaktır:Your results will be similar to the following:

    Yeni IoT Hub 'ı oluşturma bilgileri

  7. Yeni IoT Hub 'ınızı oluşturmak için Oluştur' u seçin.To create your new IoT hub, select Create. İşlem birkaç dakika sürer.The process takes a few minutes.

Cihaz kaydetmeRegister a device

Bağlanabilmesi için IoT Hub 'ınız ile bir cihaz kaydetmeniz gerekir.You must register a device with your IoT hub before it can connect. Bu bölümde, sanal bir cihazı kaydetmek için IoT uzantısıyla birlikte Azure Cloud Shell kullanırsınız.In this section, you use Azure Cloud Shell with the IoT Extension to register a simulated device.

  1. Cihaz kimliğini oluşturmak için Cloud Shell ' de aşağıdaki komutu çalıştırın:To create the device identity, run the following command in Cloud Shell:

    Not

    • Youriothubname yer tutucusunu, IoT Hub 'ınız için seçtiğiniz adla değiştirin.Replace the YourIoTHubName placeholder with the name you choose for your IoT hub.
    • Gösterilen Mydevice' ı kullanın.Use MyDevice, as shown. Kayıtlı cihaz için verilen addır.It's the name given for the registered device. Cihazınız için farklı bir ad seçerseniz bu adı bu makale boyunca kullanın ve uygulamayı çalıştırmadan önce örnek uygulamalarda cihaz adını güncelleştirin.If you choose a different name for your device, use that name throughout this article, and update the device name in the sample applications before you run them.
    az iot hub device-identity create --hub-name YourIoTHubName --device-id MyDevice
    
  2. Yeni kaydettiğiniz cihazın Cihaz bağlantı dizesini almak için Cloud Shell ' de aşağıdaki komutu çalıştırın:To get the device connection string for the device that you just registered, run the following command in Cloud Shell:

    Not

    Youriothubname yer tutucusunu, IoT Hub 'ınız için seçtiğiniz adla değiştirin.Replace the YourIoTHubName placeholder with the name you choose for your IoT hub.

    az iot hub device-identity show-connection-string --hub-name YourIoTHubName --device-id MyDevice --output table
    

    Bu hızlı başlangıçta kullanılmak üzere cihaz bağlantı dizesini aklınızda yapın.Note the device connection string for later use in this quickstart. Aşağıdaki örneğe benzer şekilde görünür:It looks like the following example:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyDevice;SharedAccessKey={YourSharedAccessKey}

Cihaz akışları aracılığıyla cihaz ve hizmet arasında iletişim kurmaCommunicate between the device and the service via device streams

Bu bölümde hem cihaz tarafı uygulamasını hem de hizmet tarafı uygulamasını çalıştırırsınız ve iki arasında iletişim kurabilirsiniz.In this section, you run both the device-side application and the service-side application and communicate between the two.

Cihaz tarafı uygulamayı çalıştırmaRun the device-side application

Cihaz tarafı uygulamasını çalıştırmak için aşağıdaki adımları izleyin:To run the device-side application, follow these steps:

  1. İothub_client/Samples/iothub_client_c2d_streaming_sample klasöründeki iothub_client_c2d_streaming_sample. c kaynak dosyasını düzenleyerek ve ardından Cihaz Bağlantı dizenizi sağlayarak cihaz kimlik bilgilerinizi sağlayın.Provide your device credentials by editing the iothub_client_c2d_streaming_sample.c source file in the iothub_client/samples/iothub_client_c2d_streaming_sample folder and then providing your device connection string.

    /* Paste in your iothub connection string  */
    static const char* connectionString = "[device connection string]";
    
  2. Kodu aşağıdaki gibi derleyin:Compile the code as follows:

    # In Linux
    # Go to the sample's folder cmake/iothub_client/samples/iothub_client_c2d_streaming_sample
    make -j
    
    rem In Windows
    rem Go to the cmake folder at the root of repo
    cmake --build . -- /m /p:Configuration=Release
    
  3. Derlenen programı çalıştırın:Run the compiled program:

    # In Linux
    # Go to the sample's folder cmake/iothub_client/samples/iothub_client_c2d_streaming_sample
    ./iothub_client_c2d_streaming_sample
    
    rem In Windows
    rem Go to the sample's release folder cmake\iothub_client\samples\iothub_client_c2d_streaming_sample\Release
    iothub_client_c2d_streaming_sample.exe
    

Hizmet tarafı uygulamasını çalıştırmaRun the service-side application

Daha önce belirtildiği gibi, IoT Hub C SDK 'Sı yalnızca cihaz tarafında cihaz akışlarını destekler.As mentioned previously, the IoT Hub C SDK supports device streams on the device side only. Hizmet tarafı uygulamasını derlemek ve çalıştırmak için aşağıdaki hızlı başlangıçlardan birindeki yönergeleri izleyin:To build and run the service-side application, follow the instructions in one of the following quickstarts:

Kaynakları temizlemeClean up resources

Önerilen bir sonraki makaleye devam etmeyi planlıyorsanız, önceden oluşturduğunuz kaynakları tutabilir ve yeniden kullanabilirsiniz.If you plan to continue to the next recommended article, you can keep and reuse the resources you've already created.

Aksi takdirde, ücretlerden kaçınmak için, bu makalede oluşturduğunuz Azure kaynaklarını silebilirsiniz.Otherwise, to avoid charges, you can delete the Azure resources that you created in this article.

Önemli

Silinen kaynak grupları geri alınamaz.Deleting a resource group is irreversible. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir.The resource group and all the resources contained in it are permanently deleted. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun.Make sure that you don't accidentally delete the wrong resource group or resources. IoT Hub 'ı saklamak istediğiniz kaynakları içeren mevcut bir kaynak grubu içinde oluşturduysanız, kaynak grubunu değil yalnızca IoT Hub kaynağını silin.If you created the IoT hub inside an existing resource group that contains resources that you want to keep, delete only the IoT hub resource itself, not the resource group.

Bir kaynak grubunu adıyla silmek için:To delete a resource group by name:

  1. Azure portalında oturum açın ve Kaynak grupları’nı seçin.Sign in to the Azure portal, and then select Resource groups.

  2. Ada göre filtrele kutusuna IoT Hub 'ınızı içeren kaynak grubunun adını girin.In the Filter by name box, enter the name of the resource group that contains your IoT hub.

  3. Sonuç listesinde, kaynak grubunuzun sağında üç nokta ( ... ) simgesini seçin ve kaynak grubunu sil' i seçin.In the result list, to the right of your resource group, select the ellipsis (...), and then select Delete resource group.

    "Kaynak grubunu sil" düğmesi

  4. Kaynak grubunun silinmesini onaylamak için, kaynak grubu adını yeniden girin ve Sil' i seçin.To confirm the deletion of the resource group, reenter the resource group name, and then select Delete. Birkaç dakika sonra kaynak grubu ve içerdiği tüm kaynaklar silinir.After a few moments, the resource group and all its contained resources are deleted.

Sonraki adımlarNext steps

Bu hızlı başlangıçta, bir IoT Hub 'ı ayarlamış, bir cihaz kaydettiniz, cihazdaki bir C uygulaması ve hizmet tarafındaki başka bir uygulama arasında bir cihaz akışı kurdu ve bu akışı, verileri uygulamalar arasında geri ve ileri göndermek için kullandınız.In this quickstart, you've set up an IoT hub, registered a device, established a device stream between a C application on the device and another application on the service side, and used the stream to send data back and forth between the applications.

Cihaz akışları hakkında daha fazla bilgi edinmek için bkz.:To learn more about device streams, see: