Tous les produits
Search
Centre de documentation

IoT Platform:Utiliser les fonctionnalités avancées

Dernière mise à jour :Aug 09, 2026

Cette rubrique explique comment configurer le kit SDK IoT as Bridge pour utiliser les fonctionnalités avancées. Vous pouvez spécifier les chemins d'accès aux fichiers de configuration et enregistrer dynamiquement les passerelles. Vous pouvez également appeler les opérations encapsulées dans le kit SDK IoT as Bridge pour soumettre des données du langage de spécification des objets (TSL), soumettre des propriétés ou des événements, définir des propriétés et appeler des services.

Spécifier les chemins d'accès aux fichiers de configuration

Par défaut, le fichier de configuration d'une passerelle est application.conf, et le fichier de configuration du mappage des certificats d'appareil est devices.conf.

Le kit SDK IoT as Bridge vous permet de spécifier des chemins d'accès personnalisés. Avant d'appeler la méthode bootstrap(), appelez la méthode ConfigFactory.init() pour spécifier le chemin d'accès à un fichier de configuration. Vous pouvez également créer une instance et implémenter les méthodes en fonction de vos besoins métier.

Exemple de code :

private static DeviceConfigManager selfDefineDeviceConfigManager = new DeviceConfigManager() {
    @Override
    public DeviceIdentity getDeviceIdentity(String originalIdentity) {
        return devicesMap.get(originalIdentity);
    }

    @Override
    public String getOriginalIdentity(String productKey, String deviceName) {
        return null;
    }
};
BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
ConfigFactory.init(ConfigFactory.getBridgeConfigManager("application-self-define.conf"),selfDefineDeviceConfigManager);
bridgeBootstrap.bootstrap();

Enregistrer dynamiquement les passerelles

Lorsque vous déployez des passerelles sur un grand nombre de serveurs, le processus de déploiement devient complexe si vous devez spécifier différentes passerelles pour différents serveurs. Vous pouvez configurer le fichier de configuration de passerelle application.conf pour enregistrer dynamiquement les passerelles.

Vous devez spécifier les paramètres productKey et popClientProfile d'une passerelle dans le fichier de configuration. Ensuite, le kit SDK IoT as Bridge appelle une opération API d'IoT Platform pour enregistrer la passerelle et utilise l'adresse MAC du serveur de passerelle comme nom d'appareil (DeviceName) de la passerelle.

Remarque
  • Pour enregistrer dynamiquement les passerelles, il suffit de configurer le fichier de configuration de la passerelle. Pour obtenir un exemple de code, consultez Utiliser les fonctionnalités de base.

  • Tous les champs du paramètre popClientprofile doivent être spécifiés. Si une adresse MAC a déjà été utilisée comme nom d'appareil (DeviceName) d'un appareil existant, cet appareil est utilisé comme passerelle.

  • Les paramètres deviceName et deviceSecret doivent rester vides. Si vous avez déjà spécifié les informations d'une passerelle, celle-ci ne peut pas être enregistrée dynamiquement.

  • Nous vous recommandons d'utiliser des appareils de test dédiés pour le débogage. Évitez de déboguer les programmes sur des machines locales afin de prévenir tout impact potentiel sur l'environnement de production.

    Si vous déboguez les programmes sur plusieurs machines locales, les adresses MAC de ces machines sont enregistrées en tant que noms de passerelle. Les passerelles sont associées à tous les appareils spécifiés dans le fichier devices.conf.

Tableau 1. Paramètres

Paramètre

Obligatoire

Description

productKey

Oui

La clé ProductKey du produit auquel la passerelle appartient.

subDeviceConnectMode

Non

Le type de la passerelle.

  • Si ce paramètre est défini sur 3, une passerelle de grande taille est créée. Un maximum de 500 000 appareils peuvent se connecter à la passerelle.

  • Si ce paramètre n'est pas spécifié, une passerelle de petite taille est créée. Un maximum de 1 500 appareils peuvent se connecter à la passerelle.

Les passerelles de grande et de petite taille utilisent des politiques différentes pour déconnecter les appareils. Pour plus d'informations, consultez la section Déconnecter un appareil d'IoT Platform de la rubrique « Utiliser les fonctionnalités de base ».

http2Endpoint

Oui

L'endpoint de la passerelle HTTP/2. L'endpoint est utilisé pour établir une connexion persistante entre la passerelle et IoT Platform via le protocole HTTP/2.

Format de l'endpoint :

  • Instances Enterprise Edition : https://${IotInstanceId}.http2.iothub.aliyuncs.com:443.

    Remplacez ${IotInstanceId} par l'ID de l'instance que vous avez achetée.

    Par exemple, si l'ID de l'instance est iot-cn-g06kwb**, l'endpoint est https://iot-cn-g06kwb**.http2.iothub.aliyuncs.com:443.

  • Instances publiques : Le format de l'endpoint pour les instances publiques de la nouvelle version diffère de celui des instances publiques de la version précédente.

    • Les instances publiques de la nouvelle version utilisent le même format d'endpoint que les instances Enterprise Edition.

    • Instances publiques de la version précédente : https://${productKey}.iot-as-http2.${RegionId}.aliyuncs.com:443.

      Remplacez ${productKey} par la clé ProductKey du produit auquel votre passerelle appartient.

      Remplacez ${RegionId} par l'ID de la région dans laquelle réside votre service IoT Platform. Pour plus d'informations sur les ID de région, consultez Régions et zones.

      Par exemple, si la clé ProductKey d'une passerelle est a1abcab** et que l'instance publique se trouve dans la région Chine (Shanghai), l'endpoint est https://a1abcab**.iot-as-http2.cn-shanghai.aliyuncs.com:443.

    Pour plus d'informations sur les instances IoT Platform, consultez Présentation.

authEndpoint

Oui

L'endpoint du service de vérification des appareils.

Format de l'endpoint :

  • Instances Enterprise Edition : https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge.

    Remplacez ${IotInstanceId} par l'ID de l'instance que vous avez achetée.

    Par exemple, si l'ID de l'instance est iot-cn-g06kwb**, l'endpoint est https://iot-cn-g06kwb**.auth.iothub.aliyuncs.com/auth/bridge.

  • Instances publiques : Le format de l'endpoint pour les instances publiques de la nouvelle version diffère de celui des instances publiques de la version précédente.

    • Les instances publiques de la nouvelle version utilisent le même format d'endpoint que les instances Enterprise Edition.

    • Instances publiques de la version précédente : https://iot-auth.${RegionId}.aliyuncs.com/auth/bridge.

      Remplacez ${RegionId} par l'ID de la région dans laquelle réside votre service IoT Platform. Pour plus d'informations sur les ID de région, consultez Régions et zones.

      Par exemple, si une instance se trouve dans la région Chine (Shanghai), l'endpoint est https://iot-auth.cn-shanghai.aliyuncs.com/auth/bridge.

popClientProfile

Oui

Si vous spécifiez ce paramètre, le kit SDK IoT as Bridge appelle automatiquement une opération d'IoT Platform pour créer une passerelle.

Le tableau suivant décrit les champs de popClientProfile.

Tableau 2. popClientProfile

Champ

Obligatoire

Description

accessKey

Oui

L'ID AccessKey de votre compte Alibaba Cloud.

Connectez-vous à la console IoT Platform, placez le pointeur sur votre photo de profil, puis cliquez sur AccessKey Management. Sur la page Paire de clés AccessKey, vous pouvez créer ou afficher des paires de clés AccessKey.

accessSecret

Oui

Le secret AccessKey de votre compte Alibaba Cloud.

name

Oui

L'ID de la région à laquelle la passerelle appartient.

Pour plus d'informations sur les ID de région, consultez Régions et zones.

region

Oui

product

Oui

Le nom du produit. Définissez la valeur sur Iot.

endpoint

Oui

L'endpoint de l'API dans la région spécifiée. La valeur doit être spécifiée au format iot.${RegionId}.aliyuncs.com.

Remplacez ${RegionId} par l'ID de la région dans laquelle réside votre service IoT Platform. Pour plus d'informations sur les ID de région, consultez Régions et zones.

Par exemple, si votre service IoT Platform réside dans la région Chine (Shanghai), l'endpoint est iot.cn-shanghai.aliyuncs.com.

L'exemple de code suivant montre comment configurer une passerelle de petite taille. Dans cet exemple, une instance Enterprise Edition est utilisée.

// The sendpoint of services.
http2Endpoint = "https://${IotInstanceId}.http2.iothub.aliyuncs.com:443"
authEndpoint = "https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge"

// The parameters of the bridge.
productKey = ${YourProductKey}

popClientProfile = {
    accessKey = ${YourAliyunAccessKey}
    accessSecret = ${YourAliyunAccessSecret}
    name = cn-shanghai
    region = cn-shanghai
    product = Iot
    endpoint = iot.cn-shanghai.aliyuncs.com
}

Appeler des opérations pour soumettre des données TSL

Le kit SDK IoT as Bridge encapsule les opérations de soumission de données. Appelez l'opération reportProperty pour soumettre des propriétés, l'opération fireEvent pour soumettre des événements et l'opération updateDeviceTag pour mettre à jour des tags. Un appareil peut utiliser ces opérations pour signaler des propriétés, signaler des événements et mettre à jour des tags d'appareil.

Remarque
  • Avant d'appeler les opérations reportProperty et fireEvent, vous devez définir des propriétés et des événements dans la console IoT Platform. Connectez-vous à la console IoT Platform et accédez à la page de détails d'un produit. Vous pouvez ensuite définir des propriétés et des événements dans l'onglet Define Feature. Pour plus d'informations, consultez Ajouter manuellement un modèle TSL.

  • Si un tag existe déjà lorsque vous appelez l'opération updateDeviceTag, la valeur du tag est mise à jour. Pour afficher les tags existants, accédez à la page de détails d'un appareil dans la console IoT Platform. Si un tag n'existe pas, IoT Platform le crée automatiquement.

Exemple de code :

TslUplinkHandler tslUplinkHandler = new TslUplinkHandler();
// Submit a property. 
// The testProp property is defined. 
String requestId = String.valueOf(random.nextInt(1000));
// The timestamp is not included in the submitted property data. 
tslUplinkHandler.reportProperty(requestId, originalIdentity, "testProp", random.nextInt(100));
// The timestamp is included in the submitted property data. 
//tslUplinkHandler.reportProperty(requestId, originalIdentity, "testProp", random.nextInt(100), System.currentTimeMillis());

// Submit an event. 
// The testEvent event is defined. 
requestId = String.valueOf(random.nextInt(1000));
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("testEventParam", 123);
// The timestamp is not included in the submitted event data. 
tslUplinkHandler.fireEvent(originalIdentity, "testEvent", ThingEventTypes.INFO, params);
// The timestamp is included in the submitted event data.
//tslUplinkHandler.fireEvent(originalIdentity, "testEvent", ThingEventTypes.INFO, params, System.currentTimeMillis());

// Update a device tag. 
// The key of the tag is set to testDeviceTag. 
requestId = String.valueOf(random.nextInt(1000));
tslUplinkHandler.updateDeviceTag(requestId, originalIdentity, "testDeviceTag", String.valueOf(random.nextInt(1000)));

Le tableau suivant décrit les paramètres.

Paramètre

Description

requestId

L'ID de la requête.

originalIdentity

L'identifiant d'origine de l'appareil.

testProp

L'identifiant de la propriété. Dans cet exemple, l'identifiant de la propriété définie est testProp. La propriété testProp est soumise à IoT Platform.

random.nextInt(100)

La valeur de la propriété. Lors de la définition d'une propriété, vous pouvez définir une plage de valeurs. Dans cet exemple, random.nextInt(100) indique un entier aléatoire inférieur à 100.

testEvent

L'identifiant de l'événement. Dans cet exemple, l'identifiant de l'événement défini est testEvent. L'événement testEvent est soumis à IoT Platform.

ThingEventTypes.INFO

Le type de l'événement. ThingEventTypes spécifie le type d'événement. Une valeur de INFO indique que le type d'événement est INFO.

Dans cet exemple, le type d'événement est défini sur INFO lorsque l'événement testEvent est défini dans la console IoT Platform.

Si le type d'événement est ERROR, définissez ce paramètre sur ThingEventTypes.ERROR.

params

Les paramètres de sortie de l'événement. Les identifiants, les types de données et les plages de valeurs des paramètres de sortie sont définis dans la console IoT Platform. Dans cet exemple, l'identifier du paramètre de sortie est testEventParam, et la valeur est 123.

testDeviceTag

La clé du tag. Le type de données est une chaîne. Dans cet exemple, la clé est testDeviceTag. Définissez la clé du tag en fonction des règles de configuration des clés de tag et de vos besoins métier. Pour plus d'informations, consultez Tags.

String.valueOf(random.nextInt(1000))

La valeur du tag. Le type de données est une chaîne. Dans cet exemple, String.valueOf(random.nextInt(1000)) indique un entier aléatoire inférieur à 1 000. Définissez la valeur du tag en fonction des règles de configuration des valeurs de tag et de vos besoins métier. Pour plus d'informations, consultez Tags.

System.currentTimeMillis()

L'horodatage du système. Spécifiez un horodatage UNIX représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC (Temps universel coordonné).

Appeler des opérations pour soumettre plusieurs propriétés et événements à la fois

Le kit SDK IoT as Bridge encapsule les opérations permettant de soumettre plusieurs propriétés et événements simultanément. Créez un objet BatchPostEventPropertyMessage et appelez les méthodes addProperty() et addEvent() pour ajouter des données de propriété et d'événement. Ensuite, créez un objet TslUplinkHandler et appelez la méthode BatchPostEventPropertyMessage() pour soumettre les données.

Remarque

Avant d'appeler les opérations reportProperty et fireEvent, vous devez définir des propriétés et des événements dans la console IoT Platform. Connectez-vous à la console IoT Platform et accédez à la page de détails d'un produit. Vous pouvez ensuite définir des propriétés et des événements dans l'onglet Define Feature. Pour plus d'informations, consultez Ajouter manuellement un modèle TSL.

Exemple de code :

TslUplinkHandler tslUplinkHandler = new TslUplinkHandler();
// Submit multiple properties and events at a time.
String requestId = String.valueOf(random.nextInt(1000));
long startTime = System.currentTimeMillis() - 3000;

// Create a message to submit data.
BatchPostEventPropertyMessage batchPostEventPropertyMessage = new BatchPostEventPropertyMessage();
Map<String, Object> aiEventParams = new HashMap<>();
aiEventParams.put("EventContent", "hello world");
batchPostEventPropertyMessage
    .addProperty("PowerConsumption", 1000, startTime)
    .addProperty("PowerConsumption", 123, startTime + 1000)
    .addProperty("LightAdjustLevel", 23, startTime)
    .addProperty("LightAdjustLevel", 44, startTime + 1000)
    .addProperty("LightAdjustLevel", 47, startTime + 2000)
    .addEvent("AIEvent", aiEventParams, startTime);
batchPostEventPropertyMessage.setId(requestId);

// Submit the data.
tslUplinkHandler.batchPostEventPropertyMessage(originalIdentity, batchPostEventPropertyMessage);

Le tableau suivant décrit les paramètres.

Paramètre

Description

requestId

L'ID de la requête.

startTime

Les horodatages des propriétés et des événements à soumettre. Spécifiez un horodatage UNIX représentant le nombre de millisecondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC. Vous pouvez spécifier une valeur personnalisée pour ce paramètre en fonction de vos besoins métier.

aiEventParams

Les informations relatives à l'événement.

PowerConsumption

Les identifiants des propriétés. Dans cet exemple, les identifiants des propriétés définies incluent PowerConsumption et LightAdjustLevel. Les valeurs des deux propriétés à différents moments sont soumises.

LightAdjustLevel

AIEvent

L'identifiant de l'événement. Dans cet exemple, l'identifiant de l'événement défini est AIEvent. L'événement AIEvent est soumis à IoT Platform.

originalIdentity

L'identifiant d'origine de l'appareil.

Appeler des opérations pour définir des propriétés et appeler des services

Le kit SDK IoT as Bridge encapsule l'opération PropertySetHandler pour définir des propriétés et l'opération ServiceInvokeHandler pour appeler des services. Un appareil peut utiliser ces opérations pour recevoir des commandes d'IoT Platform afin de mettre à jour les données.

Exemple de code :

BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
// Set properties.
bridgeBootstrap.setPropertySetHandler(new PropertySetHandler() {
    @Override
    public void onPropertySet(PropertySetMessage msg) {
        log.info("on property set, {}", msg.getParams());
        // If you call the replySuccess() method, the SDK sends the /property/set_reply message to IoT Platform. The response code is 200.
        msg.replySuccess();
        // If you call the replyFail() method, the SDK sends the /property/set_reply message to IoT Platform. You can specify the response code based on your business requirements.
        //msg.replyFail(400);
    }
});

// Call services.
bridgeBootstrap.setServiceInvokeHandler(new ServiceInvokeHandler() {
    @Override
    public void onServiceInvoke(ServiceInvokeMessage message) {
        log.info("on service invoke, {}", message.getParams());
        // If you call the replySuccess() method, the SDK sends the /service/{service.identifier}_reply message to IoT Platform. The response code is 200.
        message.replySuccess();
        // If you call the replyFail() method, the SDK sends the /service/{service.identifier}_reply message to IoT Platform. You can specify the response code based on your business requirements.
        //msg.replyFail(400);
    }
});