Краткое руководство. Управление подключенным к Центру Интернета вещей устройством AndroidQuickstart: Control a device connected to an IoT hub (Android)

Центр Интернета вещей — это служба Azure, которая позволяет получать большие объемы данных телеметрии с устройств Центра Интернета вещей в облаке и управлять устройствами из облака.IoT Hub is an Azure service that enables you to ingest high volumes of telemetry from your IoT devices into the cloud and manage your devices from the cloud. В этом кратком руководстве управление имитированным устройством, подключенным к Центру Интернета вещей, осуществляется с помощью прямого метода.In this quickstart, you use a direct method to control a simulated device connected to your IoT hub. Этот метод позволяет удаленно изменить поведение подключенного к Центру Интернета вещей устройства.You can use direct methods to remotely change the behavior of a device connected to your IoT hub.

В этом кратком руководстве используется два предварительно созданных приложения Java:The quickstart uses two pre-written Java applications:

  • Приложение имитированного устройства, реагирующее на прямые методы, вызванные из внутреннего приложения-службы.A simulated device application that responds to direct methods called from a back-end service application. Чтобы получать вызовы прямого метода, это приложение подключается к конечной точке конкретного устройства в Центре Интернета вещей.To receive the direct method calls, this application connects to a device-specific endpoint on your IoT hub.

  • Приложение-служба, которое вызывает прямой метод на устройстве Android.A service application that calls the direct method on the Android device. Чтобы вызвать прямой метод в устройстве, это приложение подключается к конечной точке на стороне службы в Центре Интернета вещей.To call a direct method on a device, this application connects to service-side endpoint on your IoT hub.

Открытие Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. В Cloud Shell предварительно установлены и настроены общие инструменты Azure для использования с вашей учетной записью.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Нажмите кнопку Копировать, чтобы скопировать код. Вставьте его в Cloud Shell и нажмите клавишу "ВВОД", чтобы выполнить код.Select Copy to copy the code, paste it in Cloud Shell, and then press Enter to run it. Cloud Shell можно открыть разными способами:There are a few ways to open Cloud Shell:

Нажмите кнопку Попробовать в правом верхнем углу блока с кодом.Select Try It in the upper-right corner of a code block. Открытие Azure Cloud Shell с помощью кнопки "Попробовать"
Откройте Cloud Shell в браузере.Open Cloud Shell in your browser. Запуск кнопки Azure Cloud ShellLaunch Azure Cloud Shell button
Нажмите кнопку меню Cloud Shell в правом верхнем углу окна портала Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Кнопка "Cloud Shell" на портале Azure

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don’t have an Azure subscription, create a free account before you begin.

Предварительные требованияPrerequisites

Создание Центра Интернета вещейCreate an IoT hub

Если вы закончили работу с предыдущим руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, можете пропустить этот шаг и использовать созданный центр Интернета вещей.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step and use the IoT hub you have already created.

В этом разделе описывается создание центра Интернета вещей с помощью портала Azure.This section describes how to create an IoT hub using the Azure portal.

  1. Войдите на портал Azure.Log in to the Azure portal.

  2. Выберите + Создать ресурс, а затем — Интернет вещей.Choose +Create a resource, then choose Internet of Things.

  3. Нажмите кнопку Центр Интернета вещей в списке справа.Click Iot Hub from the list on the right. Появится первый экран для создания Центра Интернета вещей.You see the first screen for creating an IoT hub.

    Создание Центра Интернета вещей на портале Azure

    Заполните поля.Fill in the fields.

    Подписка: Выберите нужную подписку для Центра Интернета вещей.Subscription: Select the subscription to use for your IoT hub.

    Группа ресурсов. Создайте новую группу ресурсов или выберите существующую.Resource Group: You can create a new resource group or use an existing one. Чтобы создать новую, выберите Создать и введите нужное имя.To create a new one, click Create new and fill in the name you want to use. Чтобы использовать существующую группу, щелкните Использовать существующий и выберите группу ресурсов из раскрывающегося списка.To use an existing resource group, click Use existing and select the resource group from the dropdown list. Дополнительные сведения о группах ресурсов см. в статье об управлении группами ресурсов в Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    Регион. Выберите регион, в котором будет расположен Центр Интернета вещей.Region: This is the region in which you want your hub to be located. Выберите ближайшее к вам расположение из раскрывающегося списка.Select the location closest to you from the dropdown list.

    Имя Центра Интернета вещей. Имя Центра Интернета вещей.IoT Hub Name: Put in the name for your IoT Hub. Оно должно быть глобально уникальным.This name must be globally unique. Если введенное имя доступно, появится зеленая галочка.If the name you enter is available, a green check mark appears.

    Важно!

    Центр Интернета вещей будет общедоступным в качестве конечной точки DNS, поэтому не используйте конфиденциальную информацию, когда присваиваете ему имя.The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

  4. Щелкните Далее: Size and scale (Далее: размер и масштаб), чтобы продолжить создание Центра Интернета вещей.Click Next: Size and scale to continue creating your IoT hub.

    Настройка параметров размера и масштаба Центра Интернета вещей на портале Azure

    На этом экране можно оставить значения по умолчанию и просто выбрать Review + create (Просмотреть и создать) внизу.On this screen, you can take the defaults and just click Review + create at the bottom.

    Ценовая категория и категория масштабирования. В зависимости от количества необходимых функций и ежедневно отправляемых сообщений с помощью решения, можно выбрать несколько уровней.Pricing and scale tier: You can choose from several tiers depending on how many features you want and how many messages you send through your solution per day. Для тестирования и оценки можно использовать уровень "Бесплатный".The free tier is intended for testing and evaluation. Он позволяет подключить к Центру Интернета вещей 500 устройств и отправлять до 8000 сообщений в день.It allows 500 devices to be connected to the IoT hub and up to 8,000 messages per day. Для каждой подписки Azure можно создать один Центр Интернета вещей на уровне "Бесплатный".Each Azure subscription can create one IoT Hub in the free tier.

    Единицы центра Интернета вещей. Допустимое число сообщений за единицу в сутки зависит от ценовой категории концентратора.IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. Например, если требуется, чтобы Центр Интернета вещей поддерживал 700 000 входящих сообщений, то следует выбрать две единицы уровня S1.For example, if you want the IoT hub to support ingress of 700,000 messages, you choose two S1 tier units.

    Дополнительные сведения о других параметрах уровня см. в статье Масштабирование решения для Центра Интернета вещей.For details about the other tier options, see Choosing the right IoT Hub tier.

    Дополнительные параметры / Разделы "Из устройства в облако". Это свойство привязывает сообщения, отправляемые с устройства в облако, к числу одновременно работающих модулей чтения этих сообщений.Advanced / Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. Для большинства центров Интернета вещей достаточно четырех секций.Most IoT hubs only need four partitions.

  5. Нажмите кнопку Review + create (Просмотреть и создать), чтобы просмотреть выбранные параметры.Click Review + create to review your choices. Отобразится примерно следующий экран.You see something similar to this screen.

    Просмотр сведений при создании Центра Интернета вещей

  6. Нажмите кнопку Создать, чтобы создать центр Интернета вещей.Click Create to create your new IoT hub. Создание центра занимает несколько минут.Creating the hub takes a few minutes.

Регистрация устройстваRegister a device

Если вы закончили работу с предыдущим руководством по отправке данных телеметрии с устройства в Центр Интернета вещей, можете пропустить этот шаг и использовать устройство, которое зарегистрировали при работе с предыдущим руководством.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step and use the same device registered in the previous quickstart.

Устройство должно быть зарегистрировано в Центре Интернета вещей, прежде чем оно сможет подключиться.A device must be registered with your IoT hub before it can connect. В этом кратком руководстве для регистрации имитируемого устройства используется Azure Cloud Shell.In this quickstart, you use the Azure Cloud Shell to register a simulated device.

  1. Выполните приведенные ниже команды в Azure Cloud Shell, чтобы создать удостоверение устройства.Run the following command in Azure Cloud Shell to create the device identity.

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    MyAndroidDevice. Это значение содержит имя, присвоенное зарегистрированному устройству.MyAndroidDevice: This value is the name given for the registered device. Используйте имя MyAndroidDevice, как показано ниже.Use MyAndroidDevice as shown. Если вы выбрали другое имя для устройства, используйте его при работе с этим руководством и обновите имя устройства в примерах приложений перед их запуском.If you choose a different name for your device, you may also need to 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 MyAndroidDevice
    
  2. Выполните следующую команду в Azure Cloud Shell, чтобы получить строку подключения зарегистрированного устройства:Run the following commands in Azure Cloud Shell to get the device connection string for the device you just registered:

    YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you choose for your IoT hub.

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

    Запишите строку подключения устройства, которая выглядит так:Make a note of the device connection string, which looks like:

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

    Это значение понадобится позже в рамках этого краткого руководства.You use this value later in the quickstart.

Получение строки подключения к службеRetrieve the service connection string

Чтобы разрешить внутреннему приложению-службе подключаться к центру Интернета вещей, выполнять методы и получать сообщения, требуется строка подключения к службе.You also need a service connection string to enable the back-end service applications to connect to your IoT hub in order to execute methods and retrieve messages. Следующая команда извлекает строку подключения службы для Центра Интернета вещей:The following command retrieves the service connection string for your IoT hub:

YourIoTHubName. Замените этот заполнитель именем вашего центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

az iot hub show-connection-string --name YourIoTHubName --output table

Запишите строку подключения к службе, которая выглядит так:Make a note of the service connection string, which looks like:

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey={YourSharedAccessKey}

Это значение понадобится позже в рамках этого краткого руководства.You use this value later in the quickstart. Строка подключения к службе отличается от строки подключения к устройству.The service connection string is different from the device connection string.

Ожидание передачи данных при вызове прямого методаListen for direct method calls

Пример приложения с использованием пакета SDK для устройств может выполняться на физическом устройстве Android или в эмуляторе Android.The device SDK sample application can be run on a physical Android device or an Android emulator. Такое приложение подключается к конечной точке конкретного устройства в Центре Интернета вещей, отправляет имитированные данные телеметрии и ожидает передачи данных при вызове прямого метода из центра.The sample connects to a device-specific endpoint on your IoT hub, sends simulated telemetry, and listens for direct method calls from your hub. В рамках этого краткого руководства вызов прямого метода из центра инициирует изменение интервала, с которым устройство отправляет данные телеметрии.In this quickstart, the direct method call from the hub tells the device to change the interval at which it sends telemetry. После выполнения прямого метода имитированное устройство отправляет подтверждение в центр.The simulated device sends an acknowledgement back to your hub after it executes the direct method.

  1. В Android Studio откройте пример проекта Android, полученный из GitHub.Open the GitHub sample Android project in Android Studio. Проект находится в указанном ниже каталоге копии клонированного или скачанного репозитория azure-iot-sample-java.The project is located in the following directory of your cloned or downloaded copy of azure-iot-sample-java repository.

     \azure-iot-samples-java\iot-hub\Samples\device\AndroidSample
    
  2. В Android Studio откройте gradle.properties для примера проекта и замените заполнитель Device_Connection_String строкой подключения к устройству, которую вы записали ранее.In Android Studio, open gradle.properties for the sample project and replace the Device_Connection_String placeholder with your device connection string you noted earlier.

    DeviceConnectionString=HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyAndroidDevice;SharedAccessKey={YourSharedAccessKey}
    
  3. В Android Studio последовательно выберите File (Файл) > Sync Project with Gradle Files (Синхронизировать проект с файлами Gradle).In Android Studio, click File > Sync Project with Gradle Files. Проверьте, завершена ли сборка.Verify the build completes.

    Примечание

    Возможные причины сбоя синхронизации проекта:If the project sync fails, it may be for one of the following reasons:

    • Версии плагина Android Gradle и Gradle, указанные в проекте, устарели для вашей версии Android Studio.The versions of the Android Gradle plugin and Gradle referenced in the project are out of date for your version of Android Studio. Выполните эти инструкции, чтобы установить надлежащие версии плагина и Gradle, а также добавить на них ссылки.Follow these instructions to reference and install the correct versions of the plugin and Gradle for your installation.
    • Лицензионное соглашение для пакета SDK для Android не подписано.The license agreement for the Android SDK has not been signed. Следуйте инструкциям в выходных данных сборки, чтобы подписать лицензионное соглашение и скачать пакет SDK.Follow the instructions in the Build output to sign the license agreement and download the SDK.
  4. По завершении сборки щелкните Run (Запуск) > Run "app" (Запустить "app").Once the build has completed, click Run > Run 'app'. Настройте приложение для запуска на физическом устройстве Android или в эмуляторе Android.Configure the app to run on a physical Android device or an Android emulator. Дополнительные сведения о запуске приложения Android на физическом устройстве или в эмуляторе см. в этой статье.For more information on running an Android app on a physical device or emulator, see Run your app.

  5. После загрузки приложения нажмите кнопку Start (Начать), чтобы начать отправку данных телеметрии в Центр Интернета вещей:Once the app loads, click the Start button to start sending telemetry to your IoT Hub:

    Приложение

Не завершайте работу этого приложения на физическом устройстве или в эмуляторе при выполнении примера пакета SDK для службы, чтобы изменить интервал телеметрии во время выполнения.This app needs to be left running on a phycial device or emulator while you execute the service SDK sample to update the telemetry interval during run-time.

Чтение данных телеметрии из концентратораRead the telemetry from your hub

В этом разделе объясняется, как использовать Azure Cloud Shell с расширением Интернета вещей для мониторинга сообщений, отправляемых устройством Android.In this section, you will use the Azure Cloud Shell with the IoT extension to monitor the device messages that are sent by the Android device.

  1. С помощью Azure Cloud Shell выполните следующую команду для установки подключения к центру Интернета вещей и чтения поступающих из него сообщений:Using the Azure Cloud Shell, run the following command to connect and read messages from your IoT hub:

    YourIoTHubName. Замените этот заполнитель именем вашего Центра Интернета вещей.YourIoTHubName: Replace this placeholder below with the name you choose for your IoT hub.

    az iot hub monitor-events --hub-name YourIoTHubName --output table
    

    На следующем снимке экрана показан пример выходных данных, когда центр Интернета вещей получает данные телеметрии, отправленные устройством Android:The following screenshot shows the output as the IoT hub receives telemetry sent by the Android device:

    Чтение сообщений устройства с помощью Azure CLI

По умолчанию приложение телеметрии отправляет данные телеметрии с устройства Android каждые 5 секунд.By default the telemetry app is sending telemetry from the Android device every 5 seconds. В рамках следующего раздела вы вызовете прямой метод, чтобы изменить интервал телеметрии для устройства Android, подключенного к Интернету вещей.In the next section, you will use a direct method call to update the telemetry interval for the Android IoT device.

Вызов прямого методаCall the direct method

Приложение-служба подключается к конечной точке на стороне службы в Центре Интернета вещей.The service application connects to a service-side endpoint on your IoT Hub. Приложение выполняет вызовы прямых методов к устройству через Центр Интернета вещей и ожидает подтверждений.The application makes direct method calls to a device through your IoT hub and listens for acknowledgements.

Запустите это приложение на отдельном физическом устройстве Android или в эмуляторе Android.Run this app on a separate physical Android device or Android emulator.

Внутреннее приложение-служба Центра Интернета вещей обычно выполняется в облаке. Это позволяет сократить риски, связанные с конфиденциальными данными строки подключения, которая используется для управлениям всеми устройствами в Центре Интернета вещей.An IoT Hub back-end service application typically runs in the cloud where it is easier to mitigate the risks associated with the sensitive connection string that controls all devices on an IoT Hub. В этом примере в качестве такого приложения мы используем приложение Android (только для демонстрации).In this example, we are running it as an Android app for demonstration purposes only. В других языковых версиях этого руководства предоставляются другие примеры, которые больше соответствуют внутреннему приложению-службе.The other language versions of this quickstart provide other examples that align more closely with a back-end service application.

  1. В Android Studio откройте пример проекта Android со службой, полученный из GitHub.Open the GitHub service sample Android project in Android Studio. Проект находится в указанном ниже каталоге копии клонированного или скачанного репозитория azure-iot-sample-java.The project is located in the following directory of your cloned or downloaded copy of azure-iot-sample-java repository.

     \azure-iot-samples-java\iot-hub\Samples\service\AndroidSample
    
  2. В Android Studio откройте gradle.properties для примера проекта и замените значение свойства ConnectionString записанной ранее строкой подключения к службе, а значение свойства DeviceId идентификатором зарегистрированного устройства Android.In Android Studio, open gradle.properties for the sample project and update the value for ConnectionString and DeviceId properties with your service connection string you noted earlier and the Android device ID you registered.

    ConnectionString=HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey={YourSharedAccessKey}
    DeviceId=MyAndroidDevice
    
  3. В Android Studio последовательно выберите File (Файл) > Sync Project with Gradle Files (Синхронизировать проект с файлами Gradle).In Android Studio, click File > Sync Project with Gradle Files. Проверьте, завершена ли сборка.Verify the build completes.

    Примечание

    Возможные причины сбоя синхронизации проекта:If the project sync fails, it may be for one of the following reasons:

    • Версии плагина Android Gradle и Gradle, указанные в проекте, устарели для вашей версии Android Studio.The versions of the Android Gradle plugin and Gradle referenced in the project are out of date for your version of Android Studio. Выполните эти инструкции, чтобы установить надлежащие версии плагина и Gradle, а также добавить на них ссылки.Follow these instructions to reference and install the correct versions of the plugin and Gradle for your installation.
    • Лицензионное соглашение для пакета SDK для Android не подписано.The license agreement for the Android SDK has not been signed. Следуйте инструкциям в выходных данных сборки, чтобы подписать лицензионное соглашение и скачать пакет SDK.Follow the instructions in the Build output to sign the license agreement and download the SDK.
  4. По завершении сборки щелкните Run (Запуск) > Run "app" (Запустить "app").Once the build has completed, click Run > Run 'app'. Настройте приложение для запуска на отдельном физическом устройстве Android или в эмуляторе Android.Configure the app to run on a separate physical Android device or an Android emulator. Дополнительные сведения о запуске приложения Android на физическом устройстве или в эмуляторе см. в этой статье.For more information on running an Android app on a physical device or emulator, see Run your app.

  5. После загрузки приложения для параметра Set Messaging Interval (Задать интервал отправки сообщений) укажите значение 1000 и нажмите кнопку Invoke (Вызвать).Once the app loads, update the Set Messaging Interval value to 1000 and click Invoke.

    Интервал для обмена данными телеметрии указывается в миллисекундах.Th telemetry messaging interval is in milliseconds. По умолчанию интервал телеметрии для примера устройства имеет значение 5 секунд.The default telemetry interval of the device sample is set for 5 seconds. После этого изменения устройство Android, подключенное к Интернету вещей, будет отправлять данные телеметрии каждую секунду.This change will update the Android IoT device so that telemetry is sent every second.

    Ввод значения для интервала телеметрии

  6. В приложении вы получите уведомление, указывающее, успешно ли выполнен метод.The app will receive an acknowledgement indicating whether the method executed successfully or not.

    Подтверждение выполнения прямого метода

Очистка ресурсовClean up resources

Можно сохранить созданные ресурсы и повторно использовать их при выполнении задач в следующей рекомендуемой статье, если вы планируете перейти к ней.If you will be continuing to the next recommended article, you can keep the resources you've already created and reuse them.

Если нет, вы можете удалить ресурсы Azure, созданные в рамках этой статьи, чтобы избежать расходов.Otherwise, you can delete the Azure resources created in this article to avoid charges.

Важно!

Удаление группы ресурсов — процесс необратимый.Deleting a resource group is irreversible. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления.The resource group and all the resources contained in it are permanently deleted. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы.Make sure that you do not accidentally delete the wrong resource group or resources. Если вы создали Центр Интернета вещей в группе ресурсов, содержащей ресурсы, которые нужно сохранить, удалите только ресурс Центра Интернета вещей, не удаляя всю группу ресурсов.If you created the IoT Hub inside an existing resource group that contains resources you want to keep, only delete the IoT Hub resource itself instead of deleting the resource group.

Удаление группы ресурсов по имени:To delete a resource group by name:

  1. Войдите на портал Azure и щелкните Группы ресурсов.Sign in to the Azure portal and click Resource groups.

  2. Введите в текстовое поле Фильтровать по имени... имя группы ресурсов, содержащей Центр Интернета вещей.In the Filter by name... textbox, type the name of the resource group containing your IoT Hub.

  3. Справа от своей группы ресурсов в списке результатов щелкните ..., а затем выберите Удалить группу ресурсов.To the right of your resource group in the result list, click ... then Delete resource group.

    Delete

  4. Подтвердите операцию удаления группы ресурсов.You will be asked to confirm the deletion of the resource group. Еще раз введите имя группы ресурсов для подтверждения и нажмите кнопку Удалить.Type the name of your resource group again to confirm, and then click Delete. Через некоторое время группа ресурсов и все ее ресурсы будут удалены.After a few moments, the resource group and all of its contained resources are deleted.

Дополнительная информацияNext steps

В рамках этого краткого руководства вы вызвали прямой метод на устройстве из внутреннего приложения, а также ответили на этот вызов в приложении имитированного устройства.In this quickstart, you called a direct method on a device from a back-end application, and responded to the direct method call in a simulated device application.

Чтобы узнать, как маршрутизировать сообщения с устройства в облако в разные расположения в облаке, перейдите к следующему руководству.To learn how to route device-to-cloud messages to different destinations in the cloud, continue to the next tutorial.