Tous les produits
Search
Centre de documentation

IoT Platform:Envoyer des commandes depuis la Plateforme IoT vers les appareils

Dernière mise à jour :Aug 10, 2026

Une fois qu'un appareil a transmis des données à la Plateforme IoT, vous pouvez lui envoyer une commande afin de tester la messagerie descendante. Cette rubrique explique comment appeler l'opération Pub pour envoyer une commande depuis une application cloud vers un thermostat.

Prérequis

Le thermostat est connecté à la Plateforme IoT. Pour plus d'informations, consultez Connecter l'appareil à la Plateforme IoT et soumettre des données.

Préparer un environnement de développement

Dans cet exemple, nous développons un programme exemple qui appelle une opération API cloud pour envoyer des commandes à un appareil. Le projet amqp-demo réside sur le même serveur professionnel qu'un client AMQP (Advanced Message Queuing Protocol). Pour plus d'informations sur la configuration de l'environnement, consultez Préparer un environnement de développement.

Procédure

Remarque

Cet exemple utilise un topic personnalisé pour envoyer la commande. Vous pouvez également utiliser un topic spécifique au langage TSL (Thing Specification Language) pour envoyer des données TSL. Pour plus d'informations, consultez Qu'est-ce qu'un modèle TSL ?

  1. Ajoutez les dépendances suivantes au fichier amqp-demo/pom.xml afin d'importer les SDK cloud :

    • Dépendance Maven utilisée pour importer le SDK IoT Platform pour Java :

      <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-iot</artifactId>
          <version>7.41.0</version>
      </dependency>
    • Dépendance Maven utilisée pour importer le SDK Alibaba Cloud pour Java.

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.6.3</version>
      </dependency>
  2. Créez un fichier de classe nommé PubDemo.java dans le répertoire src/main/java/com.aliyun.iotx.demo et copiez-y l'exemple de code suivant.

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.google.gson.Gson;
    import com.aliyuncs.iot.model.v20180120.*;
    
    public class PubDemo {
    
         public static void main(String[] args) throws Exception {
    
             DefaultProfile profile = DefaultProfile.getProfile("${RegionId}", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    
             IAcsClient client = new DefaultAcsClient(profile);
    
             PubRequest request = new PubRequest();
             request.setIotInstanceId("iot-cn-******");
             request.setProductKey("a2******");
             request.setTopicFullName("/a2******/Device1/user/get");
             request.setMessageContent("eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=");
    
             try {
                 PubResponse response = client.getAcsResponse(request);
                 System.out.println(new Gson().toJson(response));
             } catch (ServerException e) {
                 e.printStackTrace();
             } catch (ClientException e) {
                 System.out.println("ErrCode:" + e.getErrCode());
                 System.out.println("ErrMsg:" + e.getErrMsg());
                 System.out.println("RequestId:" + e.getRequestId());
             }
        }
    }

    Dans des scénarios réels, vous devez adapter certains paramètres du code exemple ci-dessus. Le tableau suivant décrit ces paramètres :

    Paramètre

    Exemple

    Description

    RegionId

    ap-northeast-1

    Remplacez la variable ${RegionId} dans le fichier DefaultProfile.getProfile par l'ID de la région où vous avez activé la Plateforme IoT. Pour plus d'informations sur les ID de région Alibaba Cloud, consultez Régions prises en charge.

    TopicFullName

    /a2/Device1/user/get

    Le topic personnalisé vers lequel vous souhaitez publier le message.

    Dans cet exemple, le topic personnalisé /${productKey}/${deviceName}/user/get est utilisé.

    Remplacez ${productKey} par la valeur ProductKey du thermostat et ${deviceName} par Device1.

    Pour plus d'informations, consultez Utiliser des topics personnalisés pour la communication.

    ProductKey

    a2

    La valeur ProductKey du produit auquel appartient le thermostat.

    IotInstanceId

    iot-cn-

    L'ID de l'instance IoT_Test_Environment.

    Vous pouvez consulter l'ID de l'instance dans l'onglet Overview de la console IoT Platform.

    MessageContent

    eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=

    Le corps du message que vous souhaitez envoyer. Il est généré en convertissant le message original en données binaires, puis en appliquant un encodage Base64. Dans cet exemple, la valeur du paramètre MessageContent correspond au contenu du message “washingMode: 2, washingTime: 30” encodé.

  3. Si les informations suivantes s'affichent après l'exécution du fichier PubMessage.java , le message a bien été envoyé à l'appareil.

    {"requestId":"6EF6****-****-5***-***7-D2********48","success":true,"messageId":"170440***********"}
  4. Accédez à la page Instance Details de l'instance correspondante dans la console IoT Platform. Dans le volet de navigation de gauche, choisissez Maintenance > Device Log > Cloud run log. Dans l'onglet Cloud run log, consultez le journal lié à l'appel d'API de l'appareil.

    API调用日志

    Vous pouvez également consulter la valeur du paramètre MessageContent directement sur l'appareil.

    [1695199345.900][LK-0309] pub: /a2******/Device1/user/get
    
    [LK-030A] < 77 61 73 68 69 6E 67 4D  6F 64 65 3A 20 32 2C 20 | washingMode: 2, 
    [LK-030A] < 77 61 73 68 69 6E 67 54  69 6D 65 3A 20 33 30    | washingTime: 30