Tous les produits
Search
Centre de documentation

IoT Platform:Utiliser des topics personnalisés pour la communication

Dernière mise à jour :Aug 10, 2026

Découvrez comment les appareils utilisent des topics personnalisés pour échanger des messages avec IoT Platform et les serveurs métier via le modèle de publication/abonnement MQTT et l'abonnement côté serveur AMQP. Les topics se répartissent en trois catégories : topics système, topics du modèle TSL et topics personnalisés. Vous devez définir les topics personnalisés dans la console.

Informations générales

Dans cet exemple, un thermomètre électronique reçoit des instructions en s'abonnant à un topic personnalisé et transmet les données de température en publiant sur un autre topic. IoT Platform transfère les données vers un serveur utilisateur via un abonnement côté serveur AMQP. Le serveur appelle l'opération Pub pour configurer à distance la précision du thermomètre.

Custom topic communication

Préparer l'environnement de développement

Cet exemple utilise le SDK Java. Téléchargez et installez un environnement de développement Java depuis le site web officiel de Java.

Composants requis :

Créer un produit et un appareil

  1. Connectez-vous à la console IoT Platform.

  2. Sur la page Overview, recherchez l'instance à gérer et cliquez sur son ID ou son nom.

  3. Dans le volet de navigation de gauche, choisissez Devices > Products.

  4. Cliquez sur Create Product pour créer un produit de type thermomètre et récupérez la valeur Productkey, par exemple a1uzcH0****.

  5. Une fois le produit créé, cliquez sur View à côté du produit.

  6. Sur la page Product Details, cliquez sur l'onglet Topic Categories, puis sur Custom Topic pour ajouter une catégorie de topic personnalisé.

    Utiliser des topics personnalisés pour la communication.

    Dans cet exemple, les catégories de topics suivantes sont requises :

    • Topic permettant à l'appareil de publier des messages : /a1uzcH0****/${deviceName}/user/devmsg, avec l'autorisation Publish.

    • Topic permettant à l'appareil de s'abonner aux messages : /a1uzcH0****/${deviceName}/user/cloudmsg, avec l'autorisation Subscribe.

  7. Cliquez sur l'onglet Server-side Subscription, puis sur Create Subscription pour configurer l'abonnement côté serveur AMQP. Abonnez-vous aux messages Device Upstream Notification vers le Default Consumer Group.

    Les notifications Device Upstream Notification incluent les messages de topics personnalisés et du modèle TSL. Configurer l'abonnement côté serveur AMQP.

  8. Dans le volet de navigation de gauche, choisissez Devices > Devices. Ajoutez ensuite un appareil nommé device1 au produit de type thermomètre que vous avez créé. Récupérez les informations du certificat de l'appareil, y compris ProductKey, DeviceName et DeviceSecret.

Configurer l'appareil pour envoyer un message au serveur

La figure suivante illustre le processus d'envoi d'un message de l'appareil vers le serveur.

Custom topic communication

Configurez le serveur et l'appareil comme suit :

  • Connectez votre client AMQP à IoT Platform et configurez-le pour écouter les messages des appareils. Connecter un client AMQP à IoT Platform à l'aide du SDK pour Java.

    Important

    Le groupe de consommateurs du client AMQP doit se trouver dans la même instance IoT Platform que l'appareil.

  • Configurez le SDK de l'appareil pour connecter ce dernier à IoT Platform et lui permettre d'envoyer des messages.

    • Définissez les paramètres pour authentifier l'appareil.

      final String productKey = "a1uzcH0****";
      final String deviceName = "device1";
      final String deviceSecret = "uwMTmVAMnxB****";
      final String region = "cn-shanghai";
      final String iotInstanceId = "iot-2w****";

      Spécifiez les paramètres suivants :

      Parameter

      Example

      Description

      productKey

      a1uzcH0****

      Les informations du certificat de l'appareil. Vous pouvez consulter ces informations sur la page Device Details de la console IoT Platform.Afficher les détails de l'appareil.

      deviceName

      device1

      deviceSecret

      uwMTmVAMnxB****

      region

      cn-shanghai

      L'ID de région de votre instance IoT Platform. Régions et zones.

      iotInstanceId

      iot-2w****

      L'ID de l'instance à laquelle appartient l'appareil.

      Vous pouvez consulter l'ID de l'instance sur la page Overview de la console IoT Platform.

      • Si l'ID de l'instance est affiché, vous devez spécifier ce paramètre.

      • Si aucune page Overview ou aucun ID n'est généré pour votre instance, spécifiez une chaîne vide (iotInstanceId = "") pour le paramètre.

    • Initialisez la connexion avec les paramètres MQTT, de l'appareil et du modèle TSL.

      LinkKitInitParams params = new LinkKitInitParams();
      // Configure the MQTT connection parameters. Link SDK uses the MQTT protocol.
      IoTMqttClientConfig config = new IoTMqttClientConfig();
      config.productKey = productKey;
      config.deviceName = deviceName;
      config.deviceSecret = deviceSecret;
      config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";
      // Configure the device parameters.
      DeviceInfo deviceInfo = new DeviceInfo();
      deviceInfo.productKey = productKey;
      deviceInfo.deviceName = deviceName;
      deviceInfo.deviceSecret = deviceSecret;
      // Specify the initial status of the device.
      Map<String, ValueWrapper> propertyValues = new HashMap<String, ValueWrapper>();
      
      params.mqttClientConfig = config;
      params.deviceInfo = deviceInfo;
      params.propertyValues = propertyValues;

      Modifiez les paramètres suivants :

      Parameter

      Example

      Description

      config.channelHost

      config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";

      Le nom de domaine pour les connexions MQTT.

      • Ancienne instance publique : config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";.

      • Nouvelle instance publique et instance Enterprise Edition : config.channelHost = iotInstanceId + ".mqtt.iothub.aliyuncs.com:1883";.

    • Initialisez la connexion.

      //Connect and configure the callback function that is invoked after the connection is established.
      LinkKit.getInstance().init(params, new ILinkKitConnectListener() {
           @Override
           public void onError(AError aError) {
               System.out.println("Init error:" + aError);
           }
      
           // Implement the callback function.
           @Override
           public void onInitDone(InitResult initResult) {
               System.out.println("Init done:" + initResult);
           }
       });
    • Envoyez un message depuis l'appareil.

      Une fois l'appareil connecté, publiez un message sur le topic personnalisé en remplaçant la fonction onInitDone :

      @Override
       public void onInitDone(InitResult initResult) {
           // Specify the topic to which the message is published and the message content.
           MqttPublishRequest request = new MqttPublishRequest();
           request.topic = "/" + productKey + "/" + deviceName + "/user/devmsg";
           request.qos = 0;
           request.payloadObj = "{\"temperature\":35.0, \"time\":\"sometime\"}";
           // Publish the message and configure the callback functions that are used after the message is published.
           LinkKit.getInstance().publish(request, new IConnectSendListener() {
               @Override
               public void onResponse(ARequest aRequest, AResponse aResponse) {
                   System.out.println("onResponse:" + aResponse.getData());
               }
      
               @Override
               public void onFailure(ARequest aRequest, AError aError) {
                   System.out.println("onFailure:" + aError.getCode() + aError.getMsg());
               }
           });
       }

      Définissez les paramètres suivants :

      Parameter

      Example

      Description

      request.topic

      "/" + productKey + "/" + deviceName + "/user/devmsg"

      Le topic personnalisé sur lequel l'appareil dispose de l'autorisation Publish.

      request.payloadObj

      "{\"temperature\":35.0, \"time\":\"sometime\"}"

      Le contenu du message.

      Le serveur reçoit le message suivant :

      Message
      {payload={"temperature":35.0, "time":"sometime"},
      topic='/a1uzcH0****/device1/user/devmsg',
      messageId='1131755639450642944',
      qos=0,
      generateTime=1558666546105}

Configurer le serveur pour envoyer un message à l'appareil

La figure suivante illustre le processus d'envoi d'un message du serveur vers l'appareil.

Custom topic communication

  • Configurez le SDK de l'appareil pour s'abonner à un topic personnalisé.

    Pour l'authentification de l'appareil et la configuration de la connexion, réutilisez le code de la section Configurer l'appareil pour envoyer un message au serveur.

    Configurez l'appareil pour qu'il s'abonne au topic personnalisé :

    Abonnez-vous à un topic à l'aide du code suivant :

    // Implement the callback function.
    @Override
    public void onInitDone(InitResult initResult) {
        // Specify the topic to which the device subscribes.
        MqttSubscribeRequest request = new MqttSubscribeRequest();
        request.topic = "/" + productKey + "/" + deviceName + "/user/cloudmsg";
        request.isSubscribe = true;
        // Send a subscription request and configure the callback functions that are invoked after the subscription succeeds or fails.
        LinkKit.getInstance().subscribe(request, new IConnectSubscribeListener() {
            @Override
            public void onSuccess() {
                System.out.println("");
            }
    
            @Override
            public void onFailure(AError aError) {
    
            }
        });
    
        // Configure a listener for downstream messages.
        IConnectNotifyListener notifyListener = new IConnectNotifyListener() {
            // Configure the callback function that is used after the downstream messages are received.
            @Override
            public void onNotify(String connectId, String topic, AMessage aMessage) {
                System.out.println(
                    "received message from " + topic + ":" + new String((byte[])aMessage.getData()));
            }
    
            @Override
            public boolean shouldHandle(String s, String s1) {
                return false;
            }
    
            @Override
            public void onConnectStateChange(String s, ConnectState connectState) {
    
            }
        };
        LinkKit.getInstance().registerOnNotifyListener(notifyListener);
    }

    Définissez request.topic sur un topic personnalisé disposant de l'autorisation Subscribe.

  • Utilisez le SDK cloud pour appeler l'opération Pub afin de publier des messages vers l'appareil. Pub. Utiliser le SDK pour Java.

    • Définissez les paramètres pour authentifier l'appareil.

       String regionId = "cn-shanghai";
       String accessKey = "LTAI****";
       String accessSecret = "********";
       final String productKey = "a1uzcH0****";
       final String deviceName = "device1";
       final String iotInstanceId = "iot-2w****";

      Modifiez les paramètres suivants :

      Parameter

      Example

      Description

      accessKey

      LTAI****

      L'AccessKey ID et l'AccessKey Secret de votre compte Alibaba Cloud.

      Connectez-vous à la console IoT Platform, placez le pointeur sur l'image de profil, puis cliquez sur AccessKey Management pour obtenir l'AccessKey ID et l'AccessKey Secret.

      Remarque

      Si vous utilisez un utilisateur RAM, vous devez associer la stratégie d'autorisation AliyunIOTFullAccess à cet utilisateur. Cette stratégie permet à l'utilisateur RAM de gérer les ressources IoT Platform. Si vous n'associez pas la stratégie d'autorisation AliyunIOTFullAccess à l'utilisateur RAM, la connexion à IoT Platform échoue. Pour plus d'informations sur l'attribution d'autorisations à un utilisateur RAM, consultez la section Accès utilisateur RAM.

      accessSecret

      ********

      productKey

      a1uzcH0****

      Les informations du certificat de l'appareil. Vous pouvez consulter ces informations sur la page Device Details de la console IoT Platform.Afficher les détails de l'appareil.

      deviceName

      device1

      region

      cn-shanghai

      L'ID de région de votre instance IoT Platform. Régions et zones.

      iotInstanceId

      iot-2w****

      L'ID de l'instance à laquelle appartient l'appareil.

      Vous pouvez consulter l'ID de l'instance sur la page Overview de la console IoT Platform.

      • Si l'ID de l'instance est affiché, vous devez spécifier ce paramètre.

      • Si aucune page Overview ou aucun ID n'est généré pour votre instance, spécifiez une chaîne vide (iotInstanceId = "") pour le paramètre.

    • Configurez les paramètres de connexion.

      //Configure the client parameters.
      DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKey, accessSecret);
      IAcsClient client = new DefaultAcsClient(profile);
    • Configurez les paramètres de publication du message.

      PubRequest request = new PubRequest();
      request.setIotInstanceId(iotInstanceId);
      request.setQos(0);
      // Specify the topic to which the message is published.
      request.setTopicFullName("/" + productKey + "/" + deviceName + "/user/cloudmsg");
      request.setProductKey(productKey);
      // Configure the MessageContent parameter. The message content must be encoded in Base64. Otherwise, the message content is displayed as garbled characters.
      request.setMessageContent(Base64.encode("{\"accuracy\":0.001,\"time\":now}"));

      Configurez les paramètres selon vos besoins. Pub.

    • Publiez le message.

      try {
           PubResponse response = client.getAcsResponse(request);
           System.out.println("pub success?:" + response.getSuccess());
       } catch (Exception e) {
           System.out.println(e);
       }

      L'appareil reçoit :

      msg = [{"accuracy":0.001,"time":now}]

Annexe : Exemple de code

Important

Modifiez les paramètres en fonction de vos besoins métier.

Télécharger la démo Pub/Sub pour obtenir des exemples de code pour le SDK cloud et le SDK de l'appareil.

Connectez un client AMQP à IoT Platform à l'aide des guides SDK suivants :