Introduzione ai dispositivi gemelli (Java)Get started with device twins (Java)

I dispositivi gemelli sono documenti JSON nei quali vengono archiviate informazioni sullo stato dei dispositivi (metadati, configurazioni e condizioni).Device twins are JSON documents that store device state information (metadata, configurations, and conditions). L'hub IoT rende permanente un dispositivo gemello per ogni dispositivo che si connette.IoT Hub persists a device twin for each device that connects to it.

Nota

Le funzionalità descritte in questo articolo sono disponibili solo nel livello Standard dell'hub IoT.The features described in this article are only available in the standard tier of IoT hub. Per altre informazioni sui livelli Basic e Standard dell'hub IoT, vedere come scegliere il livello corretto dell'hub IoT.For more information about the basic and standard IoT Hub tiers, see How to choose the right IoT Hub tier.

Usare i dispositivi gemelli per:Use device twins to:

  • Archiviare i metadati dei dispositivi dal back-end della soluzione.Store device metadata from your solution back end.
  • Segnalare informazioni sullo stato corrente, come funzionalità disponibili e condizioni (ad esempio, il metodo di connettività usato) dall'app per dispositivi.Report current state information such as available capabilities and conditions (for example, the connectivity method used) from your device app.
  • Sincronizzare lo stato dei flussi di lavoro a esecuzione prolungata (come gli aggiornamenti del firmware e della configurazione) tra un'app per dispositivi e un'app di back-end.Synchronize the state of long-running workflows (such as firmware and configuration updates) between a device app and a back-end app.
  • Eseguire query sui metadati, la configurazione o lo stato dei dispositivi.Query your device metadata, configuration, or state.

I dispositivi gemelli sono progettati per la sincronizzazione e per l'esecuzione di query sulle configurazioni e le condizioni dei dispositivi.Device twins are designed for synchronization and for querying device configurations and conditions. Altre informazioni su quando usare i dispositivi gemelli sono reperibili in Informazioni sui dispositivi gemelli.More information on when to use device twins can be found in Understand device twins.

I dispositivi gemelli vengono archiviati in un hub IoT e contengono gli elementi seguenti.Device twins are stored in an IoT hub and contain:

  • Tag: metadati dei dispositivi accessibili solo dal back-end della soluzionetags, device metadata accessible only by the solution back end;
  • Proprietà desiderate: oggetti JSON modificabili dal back-end della soluzione e osservabili dall'app per dispositividesired properties, JSON objects modifiable by the solution back end and observable by the device app; and
  • Proprietà segnalate: oggetti JSON modificabili dall'app per dispositivi e leggibili dal back-end della soluzionereported properties, JSON objects modifiable by the device app and readable by the solution back end. I tag e le proprietà non possono contenere matrici, ma gli oggetti possono essere annidati.Tags and properties cannot contain arrays, but objects can be nested.

Il back-end della soluzione può anche eseguire query sui dispositivi gemelli in base a tutti i dati sopra indicati.Additionally, the solution back end can query device twins based on all the above data. Vedere Informazioni sui dispositivi gemelli per altre informazioni sui dispositivi gemelli e Linguaggio di query per hub IoT per informazioni sull'esecuzione di query.Refer to Understand device twins for more information about device twins, and to the IoT Hub query language reference for querying.

Questa esercitazione illustra come:This tutorial shows you how to:

  • Creare un'app back-end che aggiunge tag a un dispositivo gemello e un'app per dispositivo simulato che segnala il proprio canale di connettività come proprietà segnalata nel dispositivo gemello.Create a back-end app that adds tags to a device twin, and a simulated device app that reports its connectivity channel as a reported property on the device twin.
  • Eseguire query sui dispositivi dall'app back-end con filtri sui tag e sulle proprietà creati in precedenza.Query devices from your back-end app using filters on the tags and properties previously created.

In questa esercitazione vengono create due app console Java:In this tutorial, you create two Java console apps:

  • add-tags-query, un'app back-end .Java che aggiunge tag ed effettua query sui dispositivi gemelli.add-tags-query, a Java back-end app that adds tags and queries device twins.
  • simulated-device, un'app per dispositivi Java che si connette all'hub IoT e segnala la condizione di connettività usando una proprietà segnalata.simulated-device, a Java device app that connects to your IoT hub and reports its connectivity condition using a reported property.

Nota

L'articolo Azure IoT SDK riporta informazioni sui componenti Azure IoT SDK che consentono di compilare le app back-end e per dispositivi.The article Azure IoT SDKs provides information about the Azure IoT SDKs that you can use to build both device and back-end apps.

Per completare questa esercitazione, sono necessari:To complete this tutorial, you need:

Creare un hub IoTCreate an IoT hub

Creare un hub IoT per connettere l'app per dispositivo simulato.Create an IoT hub for your simulated device app to connect to. La procedura seguente illustra come completare questa attività usando il portale di Azure.The following steps show you how to complete this task by using the Azure portal.

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Selezionare Crea una risorsa > Internet delle cose > Hub IoT.Select Create a resource > Internet of Things > IoT Hub.

    Indice del portale di Azure

  3. Nel riquadro Hub IoT immettere le informazioni seguenti per l'hub IoT:In the IoT hub pane, enter the following information for your IoT hub:

    • Sottoscrizione: scegliere la sottoscrizione da usare per creare questo hub IoT.Subscription: Choose the subscription that you want to use to create this IoT hub.

    • Gruppo di risorse: creare un gruppo di risorse per ospitare l'hub IoT o usarne uno esistente.Resource group: Create a resource group to host the IoT hub or use an existing one. Per altre informazioni, vedere l'articolo su come usare i gruppi di risorse per gestire le risorse di Azure.For more information, see Use resource groups to manage your Azure resources.

    • Area: selezionare la località più vicina.Region: Select the closest location to you.

    • Nome: creare un nome per l'hub IoT.Name: Create a name for your IoT hub. Se il nome immesso è disponibile, viene visualizzato un segno di spunta verde.If the name you enter is available, a green check mark appears.

    Importante

    L'hub IoT sarà individuabile pubblicamente come endpoint DNS, quindi evitare di indicare informazioni riservate nell'assegnazione del nome.The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

    Finestra delle informazioni di base hub IoT

  4. Selezionare Next: Size and scale (Avanti: Dimensioni e scalabilità) per continuare a creare l'hub IoT.Select Next: Size and scale to continue creating your IoT hub.

  5. Scegliere un valore per Piano tariffario e livello di scalabilità.Choose your Pricing and scale tier. Per questo articolo selezionare il livello F1 - Gratuito se ancora disponibile nella sottoscrizione.For this article, select the F1 - Free tier if it's still available on your subscription. Per altre informazioni, vedere la pagina relativa a piano tariffario e livello di scalabilità.For more information, see the Pricing and scale tier.

    Finestra per specificare dimensioni e scalabilità dell'hub IoT

  6. Selezionare Rivedi e crea.Select Review + create.

  7. Esaminare le informazioni sull'hub IoT e quindi fare clic su Crea.Review your IoT hub information, then click Create. La creazione dell'hub IoT può richiedere alcuni minuti.Your IoT hub might take a few minutes to create. È possibile monitorare lo stato di avanzamento nel riquadro Notifiche.You can monitor the progress in the Notifications pane.

  8. Quando il nuovo hub IoT è pronto, fare clic sul suo riquadro nel portale di Azure per aprire la finestra delle proprietà.When your new IoT hub is ready, click its tile in the Azure portal to open its properties window. Ora che è stato creato un hub IoT, individuare le informazioni importanti che consentono di connettere dispositivi e applicazioni all'hub IoT.Now that you have created an IoT hub, locate the important information that you use to connect devices and applications to your IoT hub. Fare clic su Criteri di accesso condivisi.Click Shared access policies.

  9. In Criteri di accesso condivisi selezionare il criterio iothubowner.In Shared access policies, select the iothubowner policy. Copiare il valore di Stringa di connessione---Chiave primaria dell'hub IoT per usarlo in seguito.Copy the IoT Hub Connection string---primary key to use later. Per altre informazioni, vedere Controllo di accesso nella "Guida per gli sviluppatori dell'hub IoT".For more information, see Access control in the "IoT Hub developer guide."

    Criteri di accesso condivisi

Creare un'identità del dispositivoCreate a device identity

In questa sezione si usa il portale di Azure per creare un'identità del dispositivo nel registro delle identità dell'hub IoT.In this section, you use the Azure portal to create a device identity in the identity registry in your IoT hub. Un dispositivo non può connettersi all'hub IoT a meno che non abbia una voce nel registro di identità.A device cannot connect to IoT hub unless it has an entry in the identity registry. Per altre informazioni, vedere la sezione "Registro di identità" della Guida per gli sviluppatori dell'hub IoT.For more information, see the "Identity registry" section of the IoT Hub developer guide. Usare il pannello Dispositivi IoT nel portale per generare un ID dispositivo e una chiave univoci per il dispositivo per consentirne l'identificazione nell'hub IoT.Use the IoT Devices panel in the portal to generate a unique device ID and key for your device to use to identify itself to IoT Hub. Gli ID dispositivo fanno distinzione tra maiuscole e minuscole.Device IDs are case-sensitive.

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Selezionare Tutte le risorse e trovare la risorsa hub IoT.Select All resources and find your IoT hub resource.

  3. Dopo aver aperto la risorsa hub IoT, fare clic sullo strumento Dispositivi IoT e quindi su Aggiungi nella parte superiore.When your IoT hub resource is opened, click the IoT Devices tool, and then click Add at the top.

    Creare l'identità del dispositivo nel portale

  4. Specificare un nome per il nuovo dispositivo, ad esempio myDeviceId e fare clic su Salva.Provide a name for your new device, such as myDeviceId, and click Save. In questo modo viene creata una nuova identità del dispositivo per l'hub IoT.This action creates a new device identity for your IoT hub.

    Importante

    L'ID dispositivo può essere visibile nei log raccolti per il supporto tecnico e la risoluzione dei problemi, quindi evitare di indicare informazioni riservate nell'assegnazione del nome.The device ID may be visible in the logs collected for customer support and troubleshooting, so make sure to avoid any sensitive information while naming it.

    Aggiungere un nuovo dispositivo

  5. Nell'elenco dei dispositivi fare clic sul dispositivo appena creato e copiare la Stringa di connessione - chiave primaria.In the device list, click the newly created device and copy the Connection string---primary key to use later.

    Stringa di connessione del dispositivo

Nota

Il registro di identità dell'hub IoT archivia solo le identità del dispositivo per abilitare l'accesso sicuro all'hub.The IoT Hub identity registry only stores device identities to enable secure access to the IoT hub. Archivia gli ID dispositivo e le chiavi da usare come credenziali di sicurezza e un flag di attivazione/disattivazione che consente di disabilitare l'accesso per un singolo dispositivo.It stores device IDs and keys to use as security credentials, and an enabled/disabled flag that you can use to disable access for an individual device. Se l'applicazione deve archiviare altri metadati specifici del dispositivo, dovrà usare un archivio specifico dell'applicazione.If your application needs to store other device-specific metadata, it should use an application-specific store. Per altre informazioni, vedere la Guida per gli sviluppatori dell'hub IoT.For more information, see IoT Hub developer guide.

Creare l'app di servizioCreate the service app

In questa sezione si crea a un'app Java che aggiunge i metadati della posizione come tag al dispositivo gemello nell'hub IoT associato a myDeviceId.In this section, you create a Java app that adds location metadata as a tag to the device twin in IoT Hub associated with myDeviceId. L'app esegue innanzitutto una query dell'hub IoT per i dispositivi che si trovano negli Stati Uniti, quindi per i dispositivi che segnalano una connessione di rete tramite cellulare.The app first queries IoT hub for devices located in the US, and then for devices that report a cellular network connection.

  1. Nel computer di sviluppo creare una cartella vuota denominata iot-java-twin-getstarted.On your development machine, create an empty folder called iot-java-twin-getstarted.

  2. Nella cartella iot-java-twin-getstarted creare un progetto Maven denominato add-tags-query eseguendo questo comando al prompt dei comandi.In the iot-java-twin-getstarted folder, create a Maven project called add-tags-query using the following command at your command prompt. Si noti che si tratta di un lungo comando singolo:Note this is a single, long command:

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=add-tags-query -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

  3. Al prompt dei comandi passare alla cartella add-tags-query.At your command prompt, navigate to the add-tags-query folder.

  4. In un editor di testo aprire il file pom.xml nella cartella add-tags-query e aggiungere la dipendenza seguente al nodo dependencies.Using a text editor, open the pom.xml file in the add-tags-query folder and add the following dependency to the dependencies node. Questa dipendenza consente di usare il pacchetto iot-service-client nell'app per comunicare con l'hub IoT:This dependency enables you to use the iot-service-client package in your app to communicate with your IoT hub:

    <dependency>
      <groupId>com.microsoft.azure.sdk.iot</groupId>
      <artifactId>iot-service-client</artifactId>
      <version>1.7.23</version>
      <type>jar</type>
    </dependency>
    

    Nota

    È possibile cercare la versione più recente di iot-service-client usando la ricerca di Maven.You can check for the latest version of iot-service-client using Maven search.

  5. Aggiungere il nodo build seguente dopo il nodo dependencies.Add the following build node after the dependencies node. Questa configurazione indica a Maven di usare Java 1.8 per compilare l'app:This configuration instructs Maven to use Java 1.8 to build the app:

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
      </plugins>
    </build>
    
  6. Salvare e chiudere il file pom.xml.Save and close the pom.xml file.

  7. Aprire il file add-tags-query\src\main\java\com\mycompany\app\App.java in un editor di testo.Using a text editor, open the add-tags-query\src\main\java\com\mycompany\app\App.java file.

  8. Aggiungere al file le istruzioni import seguenti:Add the following import statements to the file:

    import com.microsoft.azure.sdk.iot.service.devicetwin.*;
    import com.microsoft.azure.sdk.iot.service.exceptions.IotHubException;
    
    import java.io.IOException;
    import java.util.HashSet;
    import java.util.Set;
    
  9. Aggiungere le variabili a livello di classe seguenti alla classe App .Add the following class-level variables to the App class. Sostituire {youriothubconnectionstring} con la stringa di connessione dell'hub IoT indicata nella sezione Creare un hub IoT:Replace {youriothubconnectionstring} with your IoT hub connection string you noted in the Create an IoT Hub section:

    public static final String iotHubConnectionString = "{youriothubconnectionstring}";
    public static final String deviceId = "myDeviceId";
    
    public static final String region = "US";
    public static final String plant = "Redmond43";
    
  10. Aggiornare la firma del metodo main affinché includa la clausola throws:Update the main method signature to include the following throws clause:

    public static void main( String[] args ) throws IOException
    
  11. Aggiungere il codice seguente al metodo main per creare gli oggetti DeviceTwin e DeviceTwinDevice.Add the following code to the main method to create the DeviceTwin and DeviceTwinDevice objects. L'oggetto DeviceTwin gestisce la comunicazione con l'hub IoT.The DeviceTwin object handles the communication with your IoT hub. L'oggetto DeviceTwinDevice rappresenta un dispositivo gemello con le relative proprietà e tag:The DeviceTwinDevice object represents the device twin with its properties and tags:

    // Get the DeviceTwin and DeviceTwinDevice objects
    DeviceTwin twinClient = DeviceTwin.createFromConnectionString(iotHubConnectionString);
    DeviceTwinDevice device = new DeviceTwinDevice(deviceId);
    
  12. Aggiungere il blocco try/catch seguente al metodo main:Add the following try/catch block to the main method:

    try {
      // Code goes here
    } catch (IotHubException e) {
      System.out.println(e.getMessage());
    } catch (IOException e) {
      System.out.println(e.getMessage());
    }
    
  13. Per aggiornare i tag del dispositivo gemello region e plant nel dispositivo gemello, aggiungere il codice seguente nel blocco try:To update the region and plant device twin tags in your device twin, add the following code in the try block:

    // Get the device twin from IoT Hub
    System.out.println("Device twin before update:");
    twinClient.getTwin(device);
    System.out.println(device);
    
    // Update device twin tags if they are different
    // from the existing values
    String currentTags = device.tagsToString();
    if ((!currentTags.contains("region=" + region) && !currentTags.contains("plant=" + plant))) {
      // Create the tags and attach them to the DeviceTwinDevice object
      Set<Pair> tags = new HashSet<Pair>();
      tags.add(new Pair("region", region));
      tags.add(new Pair("plant", plant));
      device.setTags(tags);
    
      // Update the device twin in IoT Hub
      System.out.println("Updating device twin");
      twinClient.updateTwin(device);
    }
    
    // Retrieve the device twin with the tag values from IoT Hub
    System.out.println("Device twin after update:");
    twinClient.getTwin(device);
    System.out.println(device);
    
  14. Per eseguire una query sui dispositivi gemelli nell'hub IoT, aggiungere il codice seguente al blocco try dopo il codice aggiunto nel passaggio precedente.To query the device twins in IoT hub, add the following code to the try block after the code you added in the previous step. Il codice esegue due query.The code runs two queries. Ogni query restituisce un massimo di 100 dispositivi:Each query returns a maximum of 100 devices:

    // Query the device twins in IoT Hub
    System.out.println("Devices in Redmond:");
    
    // Construct the query
    SqlQuery sqlQuery = SqlQuery.createSqlQuery("*", SqlQuery.FromType.DEVICES, "tags.plant='Redmond43'", null);
    
    // Run the query, returning a maximum of 100 devices
    Query twinQuery = twinClient.queryTwin(sqlQuery.getQuery(), 100);
    while (twinClient.hasNextDeviceTwin(twinQuery)) {
      DeviceTwinDevice d = twinClient.getNextDeviceTwin(twinQuery);
      System.out.println(d.getDeviceId());
    }
    
    System.out.println("Devices in Redmond using a cellular network:");
    
    // Construct the query
    sqlQuery = SqlQuery.createSqlQuery("*", SqlQuery.FromType.DEVICES, "tags.plant='Redmond43' AND properties.reported.connectivityType = 'cellular'", null);
    
    // Run the query, returning a maximum of 100 devices
    twinQuery = twinClient.queryTwin(sqlQuery.getQuery(), 3);
    while (twinClient.hasNextDeviceTwin(twinQuery)) {
      DeviceTwinDevice d = twinClient.getNextDeviceTwin(twinQuery);
      System.out.println(d.getDeviceId());
    }
    
  15. Salvare e chiudere il file add-tags-query\src\main\java\com\mycompany\app\App.javaSave and close the add-tags-query\src\main\java\com\mycompany\app\App.java file

  16. Compilare l'app add-tags-query e correggere eventuali errori.Build the add-tags-query app and correct any errors. Al prompt dei comandi passare alla cartella add-tags-query ed eseguire il comando seguente:At your command prompt, navigate to the add-tags-query folder and run the following command:

    mvn clean package -DskipTests

Creare un'app per dispositiviCreate a device app

In questa sezione si crea un'app console Java che imposta un valore di proprietà restituito che viene inviato all'IoT Hub.In this section, you create a Java console app that sets a reported property value that is sent to IoT Hub.

  1. Nella cartella iot-java-twin-getstarted creare un progetto Maven denominato simulated-device usando il comando seguente nel prompt dei comandi.In the iot-java-twin-getstarted folder, create a Maven project called simulated-device using the following command at your command prompt. Si noti che si tratta di un lungo comando singolo:Note this is a single, long command:

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=simulated-device -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

  2. Al prompt dei comandi passare alla cartella simulated-device.At your command prompt, navigate to the simulated-device folder.

  3. In un editor di testo aprire il file pom.xml nella cartella simulated-device e aggiungere le dipendenze seguenti al nodo dependencies.Using a text editor, open the pom.xml file in the simulated-device folder and add the following dependencies to the dependencies node. Questa dipendenza consente di usare il pacchetto iot-device-client nell'app per comunicare con l'hub IoT:This dependency enables you to use the iot-device-client package in your app to communicate with your IoT hub:

    <dependency>
      <groupId>com.microsoft.azure.sdk.iot</groupId>
      <artifactId>iot-device-client</artifactId>
      <version>1.3.32</version>
    </dependency>
    

    Nota

    È possibile cercare la versione più recente di iot-device-client usando la ricerca di Maven.You can check for the latest version of iot-device-client using Maven search.

  4. Aggiungere il nodo build seguente dopo il nodo dependencies.Add the following build node after the dependencies node. Questa configurazione indica a Maven di usare Java 1.8 per compilare l'app:This configuration instructs Maven to use Java 1.8 to build the app:

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
      </plugins>
    </build>
    
  5. Salvare e chiudere il file pom.xml.Save and close the pom.xml file.

  6. Aprire il file simulated-device\src\main\java\com\mycompany\app\App.java in un editor di testo.Using a text editor, open the simulated-device\src\main\java\com\mycompany\app\App.java file.

  7. Aggiungere al file le istruzioni import seguenti:Add the following import statements to the file:

    import com.microsoft.azure.sdk.iot.device.*;
    import com.microsoft.azure.sdk.iot.device.DeviceTwin.*;
    
    import java.io.IOException;
    import java.net.URISyntaxException;
    import java.util.Scanner;
    
  8. Aggiungere le variabili a livello di classe seguenti alla classe App .Add the following class-level variables to the App class. Sostituzione di {youriothubname} con il nome dell'hub IoT e di {yourdevicekey} con il valore della chiave del dispositivo generato nella sezione Creare un'identità del dispositivo:Replacing {youriothubname} with your IoT hub name, and {yourdevicekey} with the device key value you generated in the Create a device identity section:

    private static String connString = "HostName={youriothubname}.azure-devices.net;DeviceId=myDeviceID;SharedAccessKey={yourdevicekey}";
    private static IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
    private static String deviceId = "myDeviceId";
    

    Questa app di esempio usa la variabile protocol quando crea un'istanza di un oggetto DeviceClient.This sample app uses the protocol variable when it instantiates a DeviceClient object.

  9. Al metodo main aggiungere il codice seguente:Add the following code to the main method to:

    • Creare un client del dispositivo per comunicare con l'IoT Hub.Create a device client to communicate with IoT Hub.
    • Creare un Device oggetto per archiviare le proprietà dispositivi gemelli.Create a Device object to store the device twin properties.

      DeviceClient client = new DeviceClient(connString, protocol);
      
      // Create a Device object to store the device twin properties
      Device dataCollector = new Device() {
      // Print details when a property value changes
      @Override
      public void PropertyCall(String propertyKey, Object propertyValue, Object context) {
        System.out.println(propertyKey + " changed to " + propertyValue);
      }
      };
      
  10. Aggiungere il codice seguente al metodo main per creare una proprietà segnalata connectivityType e inviarla all'IoT Hub:Add the following code to the main method to create a connectivityType reported property and send it to IoT Hub:

    try {
      // Open the DeviceClient and start the device twin services.
      client.open();
      client.startDeviceTwin(new DeviceTwinStatusCallBack(), null, dataCollector, null);
    
      // Create a reported property and send it to your IoT hub.
      dataCollector.setReportedProp(new Property("connectivityType", "cellular"));
      client.sendReportedProperties(dataCollector.getReportedProp());
    }
    catch (Exception e) {
      System.out.println("On exception, shutting down \n" + " Cause: " + e.getCause() + " \n" + e.getMessage());
      dataCollector.clean();
      client.close();
      System.out.println("Shutting down...");
    }
    
  11. Alla fine del metodo main aggiungere il codice seguente.Add the following code to the end of the main method. Attendere che il tasto Invio consenta all'IoT Hub di segnalare lo stato delle operazioni del dispositivo gemello:Waiting for the Enter key allows time for IoT Hub to report the status of the device twin operations:

    System.out.println("Press any key to exit...");
    
    Scanner scanner = new Scanner(System.in);
    scanner.nextLine();
    
    dataCollector.clean();
    client.close();
    
  12. Salvare e chiudere il file simulated-device\src\main\java\com\mycompany\app\App.java.Save and close the simulated-device\src\main\java\com\mycompany\app\App.java file.

  13. Compilare l'app simulated-device e correggere eventuali errori.Build the simulated-device app and correct any errors. Al prompt dei comandi passare alla cartella simulated-device ed eseguire il comando seguente:At your command prompt, navigate to the simulated-device folder and run the following command:

    mvn clean package -DskipTests

Eseguire le appRun the apps

A questo punto è possibile eseguire le app console.You are now ready to run the console apps.

  1. Al prompt dei comandi nella cartella add-tags-query eseguire il comando seguente per eseguire l'app del servizio add-tags-query:At a command prompt in the add-tags-query folder, run the following command to run the add-tags-query service app:

    mvn exec:java -Dexec.mainClass="com.mycompany.app.App"

    App del servizio hub IoT Java per aggiornare i valori dei tag ed eseguire query di dispositivo

    È possibile visualizzare i tag plant e region aggiunti al dispositivo gemello.You can see the plant and region tags added to the device twin. Solo la prima query restituisce il dispositivo, non la seconda.The first query returns your device, but the second does not.

  2. Al prompt dei comandi nella cartella simulated-device eseguire il comando seguente per aggiungere la proprietà segnalata connectivityType al dispositivo gemello:At a command prompt in the simulated-device folder, run the following command to add the connectivityType reported property to the device twin:

    mvn exec:java -Dexec.mainClass="com.mycompany.app.App"

    Il client del dispositivo aggiunge la proprietà segnalata **connectivityType**

  3. Al prompt dei comandi nella cartella add-tags-query eseguire il comando seguente per eseguire l'app del servizio add-tags-query una seconda volta:At a command prompt in the add-tags-query folder, run the following command to run the add-tags-query service app a second time:

    mvn exec:java -Dexec.mainClass="com.mycompany.app.App"

    App del servizio hub IoT Java per aggiornare i valori dei tag ed eseguire query di dispositivo

    Ora che il dispositivo ha inviato la proprietà connectivityType all'hub IoT, la seconda query restituisce il dispositivo.Now your device has sent the connectivityType property to IoT Hub, the second query returns your device.

Passaggi successiviNext steps

In questa esercitazione è stato configurato un nuovo hub IoT nel Portale di Azure ed è stata quindi creata un'identità del dispositivo nel registro di identità dell'hub IoT.In this tutorial, you configured a new IoT hub in the Azure portal, and then created a device identity in the IoT hub's identity registry. Sono stati aggiunti i metadati del dispositivo come tag da un'app back-end ed è stata scritta un'app per dispositivo per segnalare le informazioni sulla connettività del dispositivo nel dispositivo gemello.You added device metadata as tags from a back-end app, and wrote a device app to report device connectivity information in the device twin. Si è anche appreso come effettuare una query delle informazioni del dispositivo gemello usando il linguaggio di query simile a SQL dell'hub IoT.You also learned how to query the device twin information using the SQL-like IoT Hub query language.

Per altre informazioni, vedere le risorse seguenti:Use the following resources to learn how to:

  • Per inviare dati di telemetria dai dispositivi, vedere l'esercitazione Introduzione all'hub IoT.Send telemetry from devices with the Get started with IoT Hub tutorial.
  • Per controllare i dispositivi in modo interattivo, ad esempio per attivare un ventilatore da un'app controllata dall'utente, vedere l'esercitazione Usare metodi diretti.Control devices interactively (such as turning on a fan from a user-controlled app) with the Use direct methods tutorial.