Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
188 lines (116 sloc) 8.82 KB
title description author manager ms.author ms.service services ms.devlang ms.topic ms.custom ms.date ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
快速入门:使用 Java 通过 Azure IoT 中心控制设备
本快速入门会运行两个示例 Java 应用程序。 一个为后端应用程序,可远程控制连接到中心的设备。 另一个应用程序可模拟连接到中心的可受远程控制的设备。
wesmc7777
philmea
wesmc
iot-hub
iot-hub
java
quickstart
mvc, seo-java-august2019, seo-java-september2019
06/21/2019
9fb110eff1d498b2b20952048759c76a2dac39f2
f176e5bb926476ec8f9e2a2829bda48d510fbed7
HT
zh-CN
09/04/2019
70306490

快速入门:使用 Java 控制连接到 Azure IoT 中心的设备

[!INCLUDE iot-hub-quickstarts-2-selector]

在本快速入门中,会使用直接方法通过Java 应用程序来控制连接到 Azure IoT 中心的模拟设备 。 可使用直接方法远程更改连接到 IoT 中心的设备的行为。 IoT 中心是一项 Azure 服务,可将大量遥测数据从 IoT 设备引入云,并从云管理设备。

本快速入门使用两个预先编写的 Java 应用程序:

  • 从后端应用程序调用的可响应直接方法的模拟设备应用程序。 为了接收直接方法调用,此应用程序会连接到 IoT 中心上特定于设备的终结点。

  • 后端应用程序,可在模拟设备上调用直接方法。 为了在设备上调用直接方法,此应用程序会连接到 IoT 中心上的服务端终结点。

[!INCLUDE cloud-shell-try-it.md]

如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

先决条件

本快速入门中运行的两个示例应用程序是使用 Java 编写的。 开发计算机上需要安装 Java SE 8。

可以从 Java 对 Azure 和 Azure Stack 的长期支持下载适用于多个平台的 Java SE 开发工具包 8。 请确保在“长期支持” 下选择“Java 8” 以获取 JDK 8 的下载。

可以使用以下命令验证开发计算机上 Java 的当前版本:

java -version

若要生成示例,需安装 Maven 3。 可从 Apache Maven 为多个平台下载 Maven。

可以使用以下命令验证开发计算机上 Maven 的当前版本:

mvn --version

运行以下命令将用于 Azure CLI 的 Microsoft Azure IoT 扩展添加到 Cloud Shell 实例。 IOT 扩展会将 IoT 中心、IoT Edge 和 IoT 设备预配服务 (DPS) 特定的命令添加到 Azure CLI。

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

如果尚未进行此操作,请从 https://github.com/Azure-Samples/azure-iot-samples-java/archive/master.zip 下载示例 Java 项目并提取 ZIP 存档。

创建 IoT 中心

如果已完成上一快速入门:将遥测数据从设备发送到 IoT 中心,则可以跳过此步骤。

[!INCLUDE iot-hub-include-create-hub]

注册设备

如果已完成上一快速入门:将遥测数据从设备发送到 IoT 中心,则可以跳过此步骤。

必须先将设备注册到 IoT 中心,然后该设备才能进行连接。 在本快速入门中,将使用 Azure Cloud Shell 来注册模拟设备。

  1. 在 Azure Cloud Shell 中运行以下命令,以创建设备标识。

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

    MyJavaDevice:所注册的设备的名称。 请按显示的方法使用 MyJavaDevice 。 如果为设备选择其他名称,则需要在本文中从头至尾使用该名称,并在运行示例应用程序之前在其中更新设备名称。

    az iot hub device-identity create \
      --hub-name YourIoTHubName --device-id MyJavaDevice
    
  2. 在 Azure Cloud Shell 中运行以下命令,以获取刚注册设备的_设备连接字符串_:

    YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

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

    记下如下所示的设备连接字符串:

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

    稍后会在快速入门中用到此值。

检索服务连接字符串

还需一个服务连接字符串,以便后端应用程序能够连接到 IoT 中心并检索消息 。 以下命令检索 IoT 中心的服务连接字符串:

YourIoTHubName:将下面的占位符替换为你为 IoT 中心选择的名称。

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

记下如下所示的服务连接字符串:

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

稍后会在快速入门中用到此值。 服务连接字符串与设备连接字符串不同。

侦听直接方法调用

模拟设备应用程序会连接到 IoT 中心上特定于设备的终结点,发送模拟遥测数据,并侦听中心的直接方法调用。 在本快速入门中,中心的直接方法调用告知设备对其发送遥测的间隔进行更改。 执行直接方法后,模拟设备会将确认发送回中心。

  1. 在本地终端窗口中,导航到示例 Java 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\simulated-device-2 文件夹。

  2. 在所选文本编辑器中打开 src/main/java/com/microsoft/docs/iothub/samples/SimulatedDevice.java 文件 。

    connString 变量的值替换为之前记下的设备连接字符串。 然后将更改保存到 SimulatedDevice.java 文件 。

  3. 在本地终端窗口中,运行以下命令以安装所需的库,并生成模拟设备应用程序:

    mvn clean package
    
  4. 在本地终端窗口中,运行以下命令,以便运行模拟设备应用程序:

    java -jar target/simulated-device-2-1.0.0-with-deps.jar
    

    以下屏幕截图显示了模拟设备应用程序将遥测数据发送到 IoT 中心后的输出:

    运行模拟设备

调用直接方法

后端应用程序会连接到 IoT 中心上的服务端终结点。 应用程序通过 IoT 中心对设备进行直接方法调用,并侦听确认。 IoT 中心后端应用程序通常在云中运行。

  1. 在另一个本地终端窗口中,导航到示例 Java 项目的根文件夹。 然后导航到 iot-hub\Quickstarts\back-end-application 文件夹 。

  2. 在所选文本编辑器中打开 src/main/java/com/microsoft/docs/iothub/samples/BackEndApplication.java 文件 。

    iotHubConnectionString 变量的值替换为以前记下的服务连接字符串。 然后将更改保存到 BackEndApplication.java 文件 。

  3. 在本地终端窗口中运行以下命令,以安装所需的库并生成后端应用程序:

    mvn clean package
    
  4. 在本地终端窗口中,运行以下命令,以便运行终端应用程序:

    java -jar target/back-end-application-1.0.0-with-deps.jar
    

    以下屏幕截图显示了应用程序对设备进行直接方法调用并接收确认后的输出:

    运行后端应用程序

    运行后端应用程序后,在运行模拟设备的控制台窗口中会出现一条消息,且其发送消息的速率也会发生变化:

    模拟客户端的变化

清理资源

[!INCLUDE iot-hub-quickstarts-clean-up-resources]

后续步骤

在本快速入门中,已从后端应用程序调用了设备上的直接方法,并在模拟设备应用程序中响应了直接方法调用。

若要了解如何将设备到云的消息路由到云中的不同目标,请继续学习下一教程。

[!div class="nextstepaction"] 教程:将遥测路由到不同的终结点进行处理

You can’t perform that action at this time.