Руководство по Реализация пространственной аналитики Интернета вещей с помощью Azure MapsTutorial: Implement IoT spatial analytics by using Azure Maps

В сценарии IoT зачастую фиксируются и отслеживаются соответствующие события, происходящие в пространстве и времени.In an IoT scenario, it's common to capture and track relevant events that occur in space and time. Примерами могут служить управление автопарком, отслеживание активов, приложения мобильности и "умного" города.Examples include fleet management, asset tracking, mobility, and smart city applications. В этом учебнике вы изучите решение, которое отслеживает передвижение арендованных автомобилей, используя API-интерфейсы Azure Maps.This tutorial guides you through a solution that tracks used car rental movement by using the Azure Maps APIs.

Изучив данный учебник, вы научитесь:In this tutorial you will:

  • Создавать учетную запись хранения Azure для записи данных отслеживания автомобилей.Create an Azure storage account to log car tracking data.
  • Передавать данные о геозоне в службу данных Azure Maps (предварительная версия) с помощью API отправки данных.Upload a geofence to the Azure Maps Data service (Preview) by using the Data Upload API.
  • Создавать центр в Центре Интернета вещей Azure и регистрировать устройства.Create a hub in Azure IoT Hub, and register a device.
  • Создавать функции в Функциях Azure, которая реализует бизнес-логику на основе пространственной аналитики Azure Maps.Create a function in Azure Functions, implementing business logic based on Azure Maps spatial analytics.
  • Подписываться на события телеметрии устройств Интернета вещей из функции Azure через службу "Сетка событий Azure".Subscribe to IoT device telemetry events from the Azure function via Azure Event Grid.
  • Фильтровать события телеметрии с помощью маршрутизации сообщений, предоставляемой Центром Интернета вещей.Filter the telemetry events by using IoT Hub message routing.

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

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

  2. Создайте учетную запись службы Azure Maps.Create an Azure Maps account.

  3. Получите первичный ключ подписки, который иногда называется первичным ключом или ключом подписки.Obtain a primary subscription key, also known as the primary key or the subscription key. Дополнительные сведения см. в статье Управление аутентификацией в Azure Maps.For more information, see manage authentication in Azure Maps.

  4. Создайте группу ресурсов.Create a resource group. В этом учебнике мы назовем нашу группу ресурсов ContosoRental, но можно выбрать любое имя.In this tutorial, we'll name our resource group ContosoRental, but you can choose whatever name you like.

  5. Скачайте проект C# rentalCarSimulation.Download the rentalCarSimulation C# project.

В этом учебнике используется приложение Postman, но вы можете выбрать другую среду разработки API.This tutorial uses the Postman application, but you can choose a different API development environment.

Вариант использования: отслеживание арендованных автомобилейUse case: rental car tracking

Допустим, компания по аренде автомобилей хочет регистрировать информацию о местоположении, пройденном расстоянии и рабочем состоянии своих транспортных средств.Let's say that a car rental company wants to log location information, distance traveled, and running state for its rental cars. Кроме того, она хочет сохранять эти сведения каждый раз, когда автомобиль покидает правильный авторизованный географический регион.The company also wants to store this information whenever a car leaves the correct authorized geographic region.

Арендованные автомобили оснащаются устройствами Интернета вещей, которые регулярно отправляют данные телеметрии в Центр Интернета вещей.The rental cars are equipped with IoT devices that regularly send telemetry data to IoT Hub. Данные телеметрии содержат текущее расположение и сведения о том, работает ли двигатель автомобиля.The telemetry includes the current location and indicates whether the car's engine is running. Схема расположения устройств соответствует схеме IoT Plug and Play для геопространственных данных.The device location schema adheres to the IoT Plug and Play schema for geospatial data. Схема телеметрии устройства для арендованного автомобиля выглядит примерно так как следующий код JSON:The rental car's device telemetry schema looks like the following JSON code:

{
    "data": {
        "properties": {
            "Engine": "ON"
        },
        "systemProperties": {
            "iothub-content-type": "application/json",
            "iothub-content-encoding": "utf-8",
            "iothub-connection-device-id": "ContosoRentalDevice",
            "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "iothub-connection-auth-generation-id": "636959817064335548",
            "iothub-enqueuedtime": "2019-06-18T00:17:20.608Z",
            "iothub-message-source": "Telemetry"
        },
        "body": {
            "location": {
                "type": "Point",
                "coordinates": [ -77.025988698005662, 38.9015330523316 ]
            }
        }
    }
}

В этом учебнике рассматривается отслеживание только одного автомобиля.In this tutorial, you only track one vehicle. После настройки служб Azure необходимо скачать проект C# rentalCarSimulation, чтобы запустить симулятор автомобиля.After you set up the Azure services, you need to download the rentalCarSimulation C# project to run the vehicle simulator. Весь процесс, от события к исполнению функций, приведен в следующих шагах:The entire process, from event to function execution, is summarized in the following steps:

  1. Устройство, которое находится в автомобиле, отправляет данные телеметрии в Центр Интернета вещей.The in-vehicle device sends telemetry data to IoT Hub.

  2. Если двигатель автомобиля работает, центр публикует данные телеметрии в Сетке событий.If the car engine is running, the hub publishes the telemetry data to Event Grid.

  3. Функция Azure срабатывает из-за подписки на события телеметрии устройства.An Azure function is triggered because of its event subscription to device telemetry events.

  4. Функция регистрирует координаты расположения устройства автомобиля, время события и идентификатор устройства.The function logs the vehicle device location coordinates, event time, and the device ID. Затем она использует API определения пространственной геозоны, чтобы определить, выехал ли автомобиль за пределы геозоны.It then uses the Spatial Geofence Get API to determine whether the car has driven outside the geofence. Если он находится за пределами геозоны, функция сохраняет данные о местоположении, полученные от события, в наш контейнер больших двоичных объектов.If it has traveled outside the geofence boundaries, the function stores the location data received from the event into a blob container. Кроме того, эта функция запрашивает обратное преобразование найденных адресов, чтобы перевести координаты местоположения в адрес улицы и сохранить его с остальными данными о расположении устройства.The function also queries the Search Address Reverse to translate the coordinate location to a street address, and stores it with the rest of the device location data.

На следующей схеме представлено обобщенное описание всей системы.The following diagram shows a high-level overview of the system.

Схема обзора системы.

На следующем рисунке представлена область геозоны, выделенная синим цветом.The following figure highlights the geofence area in blue. Маршрут арендованного автомобиля обозначен зеленой линией.The rental car's route is indicated by a green line.

Рисунок, на котором показан маршрут геозоны.

Создание учетной записи хранения AzureCreate an Azure storage account

Чтобы сохранить данные отслеживания нарушений автомобиля, создайте учетную запись хранения общего назначения версии 2 в группе ресурсов.To store car violation tracking data, create a general-purpose v2 storage account in your resource group. Если вы еще не создали группу ресурсов, следуйте указаниям в разделе Создание группы ресурсов.If you haven't created a resource group, follow the directions in create a resource group. Для выполнения инструкций в этом учебнике назовите группу ресурсов ContosoRental.In this tutorial, you'll name your resource group ContosoRental.

Чтобы создать учетную запись хранения, следуйте инструкциям в статье Создание учетной записи хранения Azure.To create a storage account, follow the instructions in create a storage account. Для прохождения этого учебника используйте имя учетной записи хранения contosorentalstorage, но вообще можно назвать ее как угодно.In this tutorial, name the storage account contosorentalstorage, but in general you can name it anything you like.

После успешного создания учетной записи хранения необходимо создать контейнер для хранения данных журнала.When you successfully create your storage account, you then need to create a container to store logging data.

  1. Перейдите к только что созданной учетной записи хранения.Go to your newly created storage account. В разделе Основные компоненты щелкните ссылку Контейнеры.In the Essentials section, select the Containers link.

    Снимок экрана с изображением контейнеров хранилища больших двоичных объектов.

  2. В верхнем левом углу щелкните + Контейнер.In the upper-left corner, select + Container. В правой части браузера отобразится панель.A panel appears on the right side of the browser. Присвойте контейнеру имя contoso-rental-logs и выберите Создать.Name your container contoso-rental-logs, and select Create.

    Снимок экрана с диалоговым окном создания контейнера BLOB-объектов.

  3. Перейдите в область Ключи доступа в учетной записи хранения и скопируйте значения полей Имя учетной записи хранения и Ключ в разделе Key1.Go to the Access keys pane in your storage account, and copy the Storage account name and the Key value in the key1 section. Нам понадобятся оба эти значения в разделе "Создание функции в службе "Функции Azure" и добавление подписки на службу "Сетка событий".You need both of these values in the "Create an Azure Function and add an Event Grid subscription" section.

    Снимок экрана страницы, используемой для копирования имени и ключа учетной записи хранения.

Отправка геозоныUpload a geofence

Далее можно использовать приложение Postman, чтобы отправить геозону в Azure Maps.Next, use the Postman app to upload the geofence to Azure Maps. Геозоны определяют авторизованное географическое расположение для арендованного автомобиля.The geofence defines the authorized geographical area for our rental vehicle. Геозоны будут использоваться в функции Azure, чтобы определить, переместился ли автомобиль за пределы области геозоны.You'll be using the geofence in your Azure function to determine whether a car has moved outside the geofence area.

Выполните следующие действия, чтобы отправить геозоны с помощью API отправки данных Azure Maps.Follow these steps to upload the geofence by using the Azure Maps Data Upload API:

  1. Откройте приложение POST и выберите New (Создать).Open the Postman app, and select New. В окне Create New (Создание) выберите Collection (Коллекция).In the Create New window, select Collection. Присвойте имя коллекции и нажмите кнопку Create (Создать).Name the collection and select Create.

  2. Чтобы создать запрос, нажмите кнопку Создать еще раз.To create the request, select New again. В окне Create New (Создание) выберите Request (Запрос) и введите имя запроса.In the Create New window, select Request, and enter a request name for the request. Выберите коллекцию, созданную на предыдущем шаге, а затем нажмите кнопку Сохранить.Select the collection you created in the previous step, and then select Save.

  3. Выберите HTTP-метод POST на вкладке построителя и введите следующий URL-адрес, чтобы отправить данные о геозоне в API отправки данных.Select the POST HTTP method in the builder tab, and enter the following URL to upload the geofence to the Data Upload API. Обязательно замените {subscription-key} ключом первичной подписки.Make sure to replace {subscription-key} with your primary subscription key.

    https://atlas.microsoft.com/mapData/upload?subscription-key={subscription-key}&api-version=1.0&dataFormat=geojson
    

    В URL-адрес значение geojson для параметра dataFormat в пути URL-адреса определяет формат отправляемых данных.In the URL path, the geojson value against the dataFormat parameter represents the format of the data being uploaded.

  4. Выберите Body > raw (Текст > необработанный) для формата входных данных и щелкните JSON в раскрывающемся списке.Select Body > raw for the input format, and choose JSON from the drop-down list. Откройте файл данных JSON и скопируйте JSON в раздел текста.Open the JSON data file, and copy the JSON into the body section. Нажмите кнопку Отправить.Select Send.

  5. Нажмите Send (Отправить) и дождитесь обработки запроса.Select Send and wait for the request to process. После выполнения запроса перейдите на вкладку Заголовки ответа.After the request completes, go to the Headers tab of the response. Скопируйте значение ключа Расположение, который является status URL.Copy the value of the Location key, which is the status URL.

    https://atlas.microsoft.com/mapData/operations/<operationId>?api-version=1.0
    
  6. Чтобы проверить состояние вызова API, создайте HTTP-запрос GET по status URL.To check the status of the API call, create a GET HTTP request on the status URL. Вам потребуется добавить первичный ключ подписки к URL-адресу для проверки подлинности.You'll need to append your primary subscription key to the URL for authentication. Запрос GET должен быть похож на следующий URL-адрес.The GET request should like the following URL:

    https://atlas.microsoft.com/mapData/<operationId>/status?api-version=1.0&subscription-key={subscription-key}
    
  7. Когда HTTP-запрос GET завершается успешно, он возвращает resourceLocation.When the GET HTTP request completes successfully, it returns a resourceLocation. resourceLocation содержит уникальное значение udid для переданного содержимого.The resourceLocation contains the unique udid for the uploaded content. Скопируйте udid для дальнейшего использования в этом руководстве.Copy this udid for later use in this tutorial.

    {
        "status": "Succeeded",
        "resourceLocation": "https://atlas.microsoft.com/mapData/metadata/{udid}?api-version=1.0"
    }
    

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

Центр Интернета вещей обеспечивает безопасный и надежный двунаправленный обмен данными между приложением Интернета вещей и управляемыми ими устройствами.IoT Hub enables secure and reliable bi-directional communication between an IoT application and the devices it manages. Для прохождения данного учебника необходимо получить информацию с устройства в автомобиле, чтобы определить его расположение.For this tutorial, you want to get information from your in-vehicle device to determine the location of the rental car. В этом разделе описано, как создать центр Интернета вещей в группе ресурсов ContosoRental.In this section, you create an IoT hub within the ContosoRental resource group. Этот центр будет отвечать за публикацию событий телеметрии устройства.This hub will be responsible for publishing your device telemetry events.

Примечание

Функция публикации событий телеметрии устройства в службу "Сетка событий" доступна в режиме общедоступной предварительной версии.The ability to publish device telemetry events on Event Grid is currently in preview. Она доступна во всех регионах, кроме следующих: восточная часть США, западная часть США, Западная Европа, Azure для государственных организаций, Azure для Китая (21Vianet) и Azure для Германии.This feature is available in all regions except the following: East US, West US, West Europe, Azure Government, Azure China 21Vianet, and Azure Germany.

Чтобы создать центр Интернета вещей в группе ресурсов ContosoRental, выполните действия, описанные в разделе Создание центра Интернета вещей.To create an IoT hub in the ContosoRental resource group, follow the steps in create an IoT hub.

Регистрация устройства в центре Интернета вещейRegister a device in your IoT hub

Устройства не могут подключиться к центру Интернета вещей, если они не зарегистрированы в реестре удостоверений центра.Devices can't connect to the IoT hub unless they're registered in the IoT hub identity registry. В данном случае вы создадите одно устройство с именем InVehicleDevice.Here, you'll create a single device with the name, InVehicleDevice. Чтобы создать и зарегистрировать устройство в центре Интернета вещей, выполните действия, описанные в разделе Регистрация нового устройства в центре Интернета вещей.To create and register the device within your IoT hub, follow the steps in register a new device in the IoT hub. Не забудьте скопировать основную строку подключения устройства.Make sure to copy the primary connection string of your device. Он понадобится вам позднее.You'll need it later.

Создание функции и добавление подписки на службу "Сетка событий"Create a function and add an Event Grid subscription

Функции Azure — это бессерверная служба вычислений, которая позволяет запускать небольшие фрагменты кода (функции) без необходимости явно подготавливать вычислительную инфраструктуру или управлять ею.Azure Functions is a serverless compute service that allows you to run small pieces of code ("functions"), without the need to explicitly provision or manage compute infrastructure. Дополнительные сведения см. в статье о службе Функции Azure.To learn more, see Azure Functions.

Функция активируется определенным событием.A function is triggered by a certain event. В данном случае вы создадите функцию, активируемую триггером Сетки событий.Here, you'll create a function that is triggered by an Event Grid trigger. Создайте связь между триггером и функцией, создав подписку на события для событий телеметрии устройства Центра Интернета вещей.Create the relationship between trigger and function by creating an event subscription for IoT Hub device telemetry events. При возникновении события телеметрии устройства наша функция будет вызываться как конечная точка и будет получать соответствующие данные для устройства, которое ранее было зарегистрировано в Центре Интернета вещей.When a device telemetry event occurs, your function is called as an endpoint, and receives the relevant data for the device you previously registered in IoT Hub.

Код скрипта на C#, который будет содержать наша функция, размещен здесь.Here's the C# script code that your function will contain.

Теперь настройте функцию Azure.Now, set up your Azure function.

  1. На панели мониторинга портала Azure щелкните Создать ресурс.In the Azure portal dashboard, select Create a resource. В поле поиска введите Приложение-функция.Type Function App in the search text box. Выберите Приложение-функция > Создать.Select Function App > Create.

  2. На странице создания приложения-функции присвойте имя приложению-функции.On the Function App creation page, name your function app. В разделе Группа ресурсов в раскрывающемся списке выберите ContosoRental.Under Resource Group, select ContosoRental from the drop-down list. Выберите .NET Core в качестве значения для параметра Стек среды выполнения.Select .NET Core as the Runtime Stack. В нижней части страницы нажмите кнопку Далее: Размещение > .At the bottom of the page, select Next: Hosting >.

    Снимок экрана страницы создания приложения-функции.

  3. Учетная запись хранилища — выберите учетную запись, которую вы создали на этапе создания учетной записи.For Storage account, select the storage account you created in Create an Azure storage account. Выберите Review + create (Просмотреть и создать).Select Review + create.

  4. Просмотрите данные о приложении-функции и щелкните Создать.Review the function app details, and select Create.

  5. После создания приложения необходимо добавить в него функцию.After the app is created, you add a function to it. Перейдите к приложению-функции.Go to the function app. Перейдите на панель Функции.Select the Functions pane. В верхней части страницы выберите + Добавить.At the top of the page, select + Add. Отобразится панель шаблона функции.The function template panel appears. Прокрутите панель вниз и выберите триггер Сетки событий Azure.Scroll down the panel, and select Azure Event Grid trigger.

    Важно!

    Шаблоны Триггер концентратора событий Azure и триггер Сетки событий Azure имеют похожие имена.The Azure Event Hub Trigger and the Azure Event Grid Trigger templates have similar names. Убедитесь, что выбран шаблон триггер для Сетки событий Azure.Make sure you select the Azure Event Grid Trigger template.

    Снимок экрана страницы создания функции.

  6. Присвойте функции имя.Give the function a name. В этом учебнике мы будем использовать имя GetGeoFunction, но в общем можно использовать любое имя.In this tutorial, you'll use the name, GetGeoFunction, but in general you can use any name you like. Выберите Создать функцию.Select Create function.

  7. В меню слева выберите область Code + Test (Код и тестирование).In the left menu, select the Code + Test pane. Скопируйте и вставьте скрипт C# в окно кода.Copy and paste the C# script into the code window.

    Снимок экрана страницы, на которой выполняется копирование и вставка кода в окно функции.

  8. В коде C# замените следующие параметры:In the C# code, replace the following parameters:

    • Замените значение SUBSCRIPTION_KEY первичным ключом подписки для учетной записи Azure Maps.Replace SUBSCRIPTION_KEY with your Azure Maps account primary subscription key.
    • Замените значение UDID идентификатором udid отправленной ранее геозоны в разделе Отправка геозоны.Replace UDID with the udid of the geofence you uploaded in Upload a geofence.
    • Функция CreateBlobAsync в скрипте создает большой двоичный объект для каждого события в учетной записи хранения данных.The CreateBlobAsync function in the script creates a blob per event in the data storage account. Замените заполнители ACCESS_KEY, ACCOUNT_NAME и STORAGE_CONTAINER_NAME значениями ключа доступа к учетной записи хранения, имени учетной записи и контейнера хранилища данных.Replace the ACCESS_KEY, ACCOUNT_NAME, and STORAGE_CONTAINER_NAME with your storage account's access key, account name, and data storage container. Эти значения были созданы при создании учетной записи хранения в соответствующем разделе.These values were generated when you created your storage account in Create an Azure storage account.
  9. В меню слева выберите область Интеграция.In the left menu, select the Integration pane. Выберите на схеме Триггер сетки событий.Select Event Grid Trigger in the diagram. Введите имя триггера, например eventGridEvent, и щелкните Создание подписки для Сетки событий.Type in a name for the trigger, eventGridEvent, and select Create Event Grid subscription.

    Снимок экрана страницы добавления подписки на события.

  10. Заполните сведения о подписке.Fill out the subscription details. Назовите подписку на событие.Name the event subscription. Для пункта Схема событий выберите Схема сетки событий.For Event Schema, select Event Grid Schema. Для пункта Topic Types (Типы разделов) выберите Azure IoT Hub Accounts (Учетные записи Центра Интернета вещей Azure).For Topic Types, select Azure IoT Hub Accounts. Выберите Группы ресурсов, а затем созданную для этого учебника группу ресурсов.For Resource Group, select the resource group you created at the beginning of this tutorial. Для пункта Ресурс выберите центр Интернета вещей, созданный при прохождении раздела "Создание центра Интернета вещей Azure".For Resource, select the IoT hub you created in "Create an Azure IoT hub." Для пункта Filter to Event Types (Фильтр по типам событий) выберите Device Telemetry (Телеметрия устройства).For Filter to Event Types, select Device Telemetry.

    Завершив выбор параметров, вы увидите, что значение для параметра Тип раздела изменится на Центр Интернета вещей.After choosing these options, you'll see the Topic Type change to IoT Hub. Для пункта System Topic Name (Имя системного раздела) можно использовать то же имя, что и для ресурса.For System Topic Name, you can use the same name as your resource. Наконец, в разделе Сведения о конечной точке нажмите Выбрать конечную точку.Finally, in the Endpoint details section, select Select an endpoint. Примите все параметры и нажмите Подтвердить выбор.Accept all settings and select Confirm Selection.

    Снимок экрана страницы создания подписки на события.

  11. Проверьте настройки.Review your settings. Убедитесь, что конечная точка указывает функцию, созданную в начале этого раздела.Make sure that the endpoint specifies the function you created in the beginning of this section. Нажмите кнопку создания.Select Create.

    Снимок экрана страницы подтверждения создания подписки на событие.

  12. Теперь вы снова находитесь на панели Изменить триггер.Now you're back at the Edit Trigger panel. Щелкните Сохранить.Select Save.

Фильтрация событий с помощью маршрутизации сообщений, предоставляемой Центром Интернета вещейFilter events by using IoT Hub message routing

При добавлении подписки службы "Сетка событий" в функцию Azure маршрут обмена сообщениями автоматически создается в указанном центре Интернета вещей.When you add an Event Grid subscription to the Azure function, a messaging route is automatically created in the specified IoT hub. Маршрутизация сообщений позволяет маршрутизировать различные типы данных к разным конечным точкам.Message routing allows you to route different data types to various endpoints. Вы можете, например, маршрутизировать сообщения телеметрии устройства, события жизненного цикла устройства и события изменения двойников устройств.For example, you can route device telemetry messages, device life-cycle events, and device twin change events. Дополнительные сведения см. в статье Использование маршрутизации сообщений Центра Интернета вещей.For more information, see Use IoT Hub message routing.

Снимок экрана страницы настройки маршрутизации сообщений в центре Интернета вещей.

В этом примере сценария необходимо получать сообщения только при перемещении автомобиля.In your example scenario, you only want to receive messages when the rental car is moving. Создайте запрос маршрутизации для фильтрации событий, в которых значение свойства Engine равно ON.Create a routing query to filter the events where the Engine property equals "ON". Чтобы создать запрос маршрутизации, выберите маршрут RouteToEventGrid и замените значение Запрос маршрутизации на строку "Engine='ON'" .To create a routing query, select the RouteToEventGrid route and replace the Routing query with "Engine='ON'". Затем нажмите кнопку Save (Сохранить).Then select Save. Теперь центр Интернета вещей будет публиковать только те события телеметрии устройств, в которых параметр Engine имеет значение ON.Now the IoT hub only publishes device telemetry where the engine is on.

Снимок экрана, на котором демонстрируется фильтрация маршрутизации сообщений.

Совет

Запросить сообщения, отправляемые с устройства Интернета вещей в облако, можно несколькими способами.There are various ways to query IoT device-to-cloud messages. Дополнительные сведения о синтаксисе см. в статье о маршрутизации сообщений с помощью Центра Интернета вещей.To learn more about message routing syntax, see IoT Hub message routing.

Отправка данных телеметрии в Центр Интернета вещейSend telemetry data to IoT Hub

Когда функция Azure работает, можно отправить данные телеметрии в центр Интернета вещей, который передаст их в Сетку событий.When your Azure function is running, you can now send telemetry data to the IoT hub, which will route it to Event Grid. Используйте приложение C# для имитации данных о местоположении, получаемых с устройства в арендованном автомобиле.Use a C# application to simulate location data for an in-vehicle device of a rental car. Чтобы запустить это приложение, на компьютере разработки необходимо установить пакет SDK для .NET Core версии 2.1.0 или более поздней.To run the application, you need the .NET Core SDK 2.1.0 or later on your development computer. Выполните эти действия, чтобы отправить имитированные данные телеметрии в центр Интернета вещей.Follow these steps to send simulated telemetry data to the IoT hub:

  1. Если вы еще не сделали этого, скачайте проект rentalCarSimulation на C#.If you haven't done so already, download the rentalCarSimulation C# project.

  2. Откройте файл simulatedCar.cs в любом текстовом редакторе и замените в нем значение connectionString тем, которое вы сохранили при регистрации устройства.Open the simulatedCar.cs file in a text editor of your choice, and replace the value of the connectionString with the one you saved when you registered the device. Сохраните изменения в файле.Save changes to the file.

  3. Убедитесь, что на компьютере установлена платформа .NET Core.Make sure you have .NET Core installed on your machine. В локальном окне терминала перейдите к корневой папке проекта C# и выполните следующие команды, чтобы установить необходимые пакеты для приложения имитированного устройства.In your local terminal window, go to the root folder of the C# project and run the following command to install the required packages for simulated device application:

    dotnet restore
    
  4. В том же окне терминала выполните команды, которые компилируют и запускают приложение имитации устройства в арендованном автомобиле:In the same terminal, run the following command to build and run the rental car simulation application:

    dotnet run
    

Теперь окно терминала должно содержать примерно такие данные:Your local terminal should look like the one below.

Снимок экрана вывода терминала.

Теперь вы можете открыть контейнер хранилища больших двоичных объектов и убедиться, что в нем созданы четыре двоичных объекта для расположений, в которых автомобиль находится за пределами геозоны.If you open the blob storage container now, you can see four blobs for locations where the vehicle was outside the geofence.

Снимок экрана страницы, с которой можно просмотреть большие двоичные объекты в контейнере.

На следующей карте показаны четыре точки обнаружения автомобилей за пределами геозоны.The following map shows four vehicle location points outside the geofence. Каждое расположение записывается в журнал через регулярные интервалы времени.Each location was logged at regular time intervals.

Снимок экрана с картой нарушений.

Знакомство с Azure Maps и Интернетом вещейExplore Azure Maps and IoT

Для изучения API-интерфейсов Azure Maps, используемых в этом учебнике, прочтите следующие статьи.To explore the Azure Maps APIs used in this tutorial, see:

Полный список API-интерфейсов Azure Maps вы найдете здесь:For a complete list of Azure Maps REST APIs, see:

Список устройств, сертифицированных для работы с Интернетом вещей в Azure, размещен на этой странице:To get a list of devices that are Azure certified for IoT, visit:

Дальнейшие действияNext steps

Дополнительные сведения о том, как отправлять данные телеметрии с устройства в облако или обратно, см. здесь:To learn more about how to send device-to-cloud telemetry, and the other way around, see: