Tous les produits
Search
Centre de documentation

IoT Platform:Propriétés, événements et services des appareils

Dernière mise à jour :Aug 12, 2026

Une fois le modèle TSL d'un produit défini, les appareils doivent utiliser le format Alink JSON pour signaler les propriétés et les événements. Côté serveur, ce même format Alink JSON permet de définir les propriétés et d'invoquer les services. Si vos appareils emploient un format personnalisé, configurez l'analyse des données pour effectuer la conversion.

Informations générales

Le format des données du modèle TSL (propriétés, événements et services) est décrit dans la rubrique Qu'est-ce qu'un modèle TSL ?.

Un appareil peut signaler ses données soit au format standard Alink JSON (recommandé), soit en mode transparent ou personnalisé. Vous devez choisir l'une de ces deux méthodes.

  • Format de données standard (Alink JSON) : l'appareil génère et signale les données au format Alink JSON défini par IoT Platform. Reportez-vous aux exemples de format présentés dans les sections suivantes.

  • Mode transparent ou personnalisé : l'appareil envoie des données brutes, telles qu'un flux binaire. Alibaba Cloud IoT Platform exécute alors le script d'analyse des données que vous avez soumis dans la console afin de convertir ces données brutes au format standard avant tout traitement. Le cloud renvoie ensuite les données au format Alink JSON standard. La réponse est enfin analysée puis transmise à l'appareil.TSL model data pass-through

Important
  • Lorsqu'une propriété du modèle TSL est définie comme float ou double, la valeur signalée doit comporter au moins une décimale (par exemple 10.0 plutôt que 10).

  • Les appareils ne peuvent signaler des propriétés et des événements que si la valeur time se situe dans les 24 heures à venir. Tout signalement hors de cette plage échoue.

  • L'ID du message (id) doit être unique par appareil et par jour, tant pour les messages montants que descendants.

    Pour les messages descendants, IoT Platform utilise le paramètre id afin d'associer la réponse de l'appareil à un message asynchrone, tout en garantissant son unicité. Pour les messages montants, c'est à l'appareil d'assurer l'unicité du paramètre id.

Signalement des propriétés par l'appareil

Le Diagramme du signalement des propriétés d'appareil dans le protocole Alink illustre le flux de signalement des propriétés.

Topic et format des données (mobile originated) :

  • Pass-through/custom

    Topic

    Data format

    Topic de requête : /sys/${productKey}/${deviceName}/thing/model/up_raw

    Les données de la requête correspondent au message brut signalé par l'appareil.

    Remarque
    • Les données transmises en mode transparent via le protocole MQTT (Message Queuing Telemetry Transport) sont au format hexadécimal.

    • Les données transparentes envoyées doivent inclure le paramètre method, dont la valeur doit correspondre à la méthode de requête définie dans le script d'analyse des données. Par exemple, dans l'exemple de script JavaScript, la valeur de ALINK_PROP_REPORT_METHOD est thing.event.property.post lorsqu'un appareil envoie des données de propriété vers le cloud.

    Exemple :

    0x00002233441232013fa00000

    Topic de réponse : /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    Le cloud renvoie les données au format suivant :

    • Exemple de réponse réussie

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "version": "1.0"
      }
    • Exemple de réponse en échec

      {
          "code": 6813,
          "data": {},
          "id": "123",
          "message": "topic illegal",
          "version": "1.0"
      }
  • Alink JSON

    Topic

    Data format

    Topic de requête : /sys/${productKey}/${deviceName}/thing/event/property/post

    Format des données de requête :

    {
        "id": "123",
        "version": "1.0",
        "sys":{
            "ack":0
        },
        "params": {
            "Power": {
                "value": "on",
                "time": 1524448722000
            },
            "WF": {
                "value": 23.6,
                "time": 1524448722000
            }
        },
        "method": "thing.event.property.post"
    }

    Topic de réponse : /sys/${productKey}/${deviceName}/thing/event/property/post_reply

    Le cloud renvoie les données au format suivant :

    • Exemple de réponse réussie

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "method": "thing.event.property.post",
          "version": "1.0"
      }
    • Exemple de réponse en échec

      {
          "code": 6813,
          "data": {},
          "id": "123",
          "message": "The format of result is error!",
          "method": "thing.event.property.post",
          "version": "1.0"
      }

Description des paramètres :

Tableau 1. Paramètres de requête

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil concerné.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

sys

Object

Paramètres des fonctionnalités étendues.

Remarque

Si vous utilisez un SDK côté appareil sans configurer les fonctionnalités étendues, ce paramètre est omis et les valeurs par défaut s'appliquent.

ack

Integer

Indique si le cloud doit renvoyer une réponse. Champ situé sous sys.

  • 1 : une réponse est renvoyée.

  • 0 : aucune réponse n'est renvoyée.

Important

Exemples d'utilisation du modèle Thing Specification Language.

En l'absence de configuration, ce paramètre est omis et une réponse est renvoyée par défaut.

method

String

Méthode de requête. Exemple : thing.event.property.post.

params

Object

Données de propriété à signaler. Dans cet exemple, l'appareil signale les propriétés Power (alimentation) et WF (courant de fonctionnement), chacune avec une valeur et un horodatage facultatif.

Si vous transmettez uniquement les valeurs des propriétés, il est inutile d'inclure les champs time et value. Voici un exemple du paramètre params :

"params": {
    "Power": "on",
    "WF": 23.6
}

Pour une propriété de module personnalisé, l'identifiant suit le format ${moduleIdentifier}:${propertyIdentifier} (séparé par un deux-points). Exemple :

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

time

Long

Horodatage UNIX du signalement de la propriété, exprimé en millisecondes UTC.

Facultatif. Ajoutez un horodatage lorsque l'ordre des messages est important.

  • Si le champ time est présent, IoT Platform l'utilise comme heure de signalement de la propriété.

  • Si le champ time est absent, IoT Platform génère automatiquement l'heure de signalement.

value

Object

Valeur de la propriété signalée.

Si vous n'incluez pas le champ time, vous pouvez omettre value et transmettre directement la valeur du paramètre.

Tableau 2. Paramètres de réponse

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil concerné.

code

Integer

Code d'état du résultat. Consultez la rubrique Codes généraux côté appareil.

Remarque

IoT Platform valide les propriétés signalées par rapport à la définition TSL du produit. Les propriétés qui échouent à la validation sont filtrées et un code d'erreur est renvoyé.

data

Object

Un objet vide est renvoyé en cas de succès de la requête.

message

String

Message de réponse. La valeur success est renvoyée lorsque la requête aboutit.

method

String

Méthode de requête associée à la réponse. Identique au paramètre method de la requête.

version

String

Numéro de version du protocole. Correspond au paramètre version de la requête.

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert de messages : Les propriétés signalées peuvent être transférées vers votre serveur ou d'autres produits cloud via l'abonnement côté serveur ou le transfert de données. Topics et formats de données : Signalement des propriétés d'appareil.

Définition des propriétés de l'appareil

Appelez l'opération API SetDeviceProperty ou SetDevicesProperty pour envoyer des instructions à un appareil afin de définir ses propriétés. Pour comprendre le mécanisme de définition des propriétés, consultez le Diagramme de définition des propriétés dans le protocole Alink.

Important

Une réponse réussie lors de la définition des propriétés indique seulement qu'IoT Platform a bien envoyé la requête, mais pas que l'appareil l'a exécutée. Après réception de la réponse du SDK de l'appareil, ce dernier doit signaler les nouvelles valeurs de propriété pour confirmer la modification. Reportez-vous à la section « Signalement des propriétés par l'appareil » ci-dessus.

Topic et format des données (mobile terminated) :

Data format (mobile terminated)

Request and response topics

Pass-through/custom

  • Topic de requête : /sys/${productKey}/${deviceName}/thing/model/down_raw

  • Topic de réponse : /sys/${productKey}/${deviceName}/thing/model/down_raw_reply

Alink JSON

  • Topic de requête : /sys/${productKey}/${deviceName}/thing/service/property/set

  • Topic de réponse : /sys/${productKey}/${deviceName}/thing/service/property/set_reply

Format des données de requête :

{
    "id": "123",
    "version": "1.0",
    "params": {
        "temperature": "30.5"
    },
    "method": "thing.service.property.set"
}

Format des données de réponse :

  • Exemple de réponse réussie

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "version": "1.0"
    }
  • Exemple de réponse en échec

    {
        "code": 9201,
        "data": {},
        "id": "123",
        "message": "device offLine",
        "version": "1.0"
    }

Description des paramètres :

Tableau 3. Paramètres de requête

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil concerné.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

params

Object

Paramètres de définition de la propriété. Dans l'exemple, la propriété est définie ainsi : { "temperature": "30.5" }.

Pour une propriété de module personnalisé, l'identifiant suit le format ${moduleIdentifier}:${propertyIdentifier} (séparé par un deux-points), par exemple { "test:temperature": "30.5" }.

method

String

Méthode de requête. Exemple : thing.service.property.set.

Tableau 4. Paramètres de réponse

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil concerné.

code

Integer

Code d'état du résultat. Consultez la rubrique Codes généraux côté appareil.

data

Object

Un objet vide est renvoyé en cas de succès de la requête.

message

String

Message de réponse. La valeur success est renvoyée lorsque la requête aboutit.

version

String

Numéro de version du protocole. Correspond au paramètre version de la requête.

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert de messages : Les résultats de définition des propriétés peuvent être transférés vers votre serveur ou d'autres produits cloud via l'abonnement côté serveur ou le transfert de données. Topics et formats de données : Résultats des instructions descendantes vers l'appareil.

Signalement d'événements par l'appareil

Le Diagramme du signalement d'événements d'appareil dans le protocole Alink illustre le flux de signalement des événements.

Topic et format des données (mobile originated) :

  • Pass-through/custom

    Topic

    Data format

    Topic de requête : /sys/${productKey}/${deviceName}/thing/model/up_raw

    Les données de la requête correspondent au message brut signalé par l'appareil.

    Remarque

    Les données pass-through doivent inclure le paramètre method. La valeur doit correspondre à la méthode de requête définie dans le script d'analyse des données. Par exemple, la valeur peut être thing.event.${tsl.event.identifier}.post.

    Exemple :

    0xff0000007b00

    Topic de réponse : /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    Le cloud retourne les données au format suivant :

    • Exemple de réponse réussie

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "version": "1.0"
      }
    • Exemple de réponse en échec

      {
          "code": 6813,
          "data": {},
          "id": "123",
          "message": "topic illegal",
          "version": "1.0"
      }
  • Alink JSON

    TSL model module

    Topic

    Data format

    Module par défaut

    • Topic de requête : /sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post

    • Topic de réponse : /sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post_reply

    En prenant le module de modèle TSL par défaut comme exemple, le format des données de requête Alink est le suivant :

    {
        "id": "123",
        "version": "1.0",
        "sys":{
            "ack":0
        },
        "params": {
            "value": {
                "Power": "on",
                "WF": "2"
            },
            "time": 1524448722000
        },
        "method": "thing.event.${tsl.event.identifier}.post"
    }

    Format des données de réponse Alink :

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.${tsl.event.identifier}.post",
        "version": "1.0"
    }

    Si la requête échoue, {} est retourné.

    Module personnalisé

    • Topic de requête : /sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:${tsl.event.identifier}/post

    • Topic de réponse : /sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:${tsl.event.identifier}/post_reply

Description des paramètres :

Tableau 5. Paramètres de la requête

Parameter

Type

Description

id

String

ID du message. Chaîne de chiffres dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

sys

Object

Paramètres de fonctionnalité étendue.

Remarque

Si vous utilisez un SDK côté appareil sans configurer les fonctionnalités étendues, ce paramètre est omis et les valeurs par défaut s'appliquent.

ack

Integer

Indique si le cloud retourne une réponse. Champ situé sous sys.

  • 1 : Retourne une réponse.

  • 0 : Aucune réponse retournée.

Important

Exemples d'utilisation du modèle Thing Specification Language.

Si ce paramètre n'est pas configuré, il est omis et une réponse est retournée par défaut.

method

String

Méthode de requête.

  • Module par défaut

    La valeur est thing.event.${tsl.event.identifier}.post.

  • Module personnalisé

    La valeur est thing.event.${tsl.functionBlockId}:${tsl.event.identifier}.post.

Remarque

${tsl.event.identifier} correspond à l'identifiant de l'événement défini dans le modèle TSL, et ${tsl.functionBlockId} est l'identifiant du module personnalisé. Ajouter un modèle TSL pour une fonctionnalité unique.

params

Object

Paramètres de sortie de l'événement signalé.

value

Object

Informations relatives aux paramètres de sortie de l'événement. L'exemple présente les informations pour deux paramètres : Power et WF (courant de fonctionnement).

{
    "Power": "on",
    "WF": "2"
}

time

Long

Horodatage UNIX auquel l'événement est signalé, en millisecondes UTC.

Ce champ est facultatif. Décidez d'inclure ou non un horodatage selon votre scénario métier. Si les messages sont fréquents et que vous devez déterminer leur ordre chronologique, nous vous recommandons d'inclure un horodatage.

  • Si vous incluez time, IoT Platform enregistre l'heure spécifiée comme heure de signalement de l'événement.

  • Si vous n'incluez pas time, IoT Platform génère et enregistre automatiquement l'heure de signalement de l'événement.

Tableau 6. Paramètres de la réponse

Parameter

Type

Description

id

String

ID du message. Chaîne de chiffres dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

code

Integer

Code d'état du résultat. Codes généraux côté appareil.

Remarque

IoT Platform valide les événements signalés par rapport à la définition TSL du produit. Les événements qui échouent à la validation sont filtrés et un code d'erreur est retourné.

data

Object

Si la requête réussit, un objet vide est retourné.

message

String

Message de réponse. Si la requête réussit, success est retourné.

method

String

Méthode de requête correspondant à la réponse. Identique au paramètre method dans les paramètres de la requête.

version

String

Numéro de version du protocole. Identique au paramètre version dans les paramètres de la requête.

Exemple de format Alink : Supposons qu'un événement alarm soit défini dans un produit. Sa description TSL est la suivante. Pour plus d'informations sur les paramètres, consultez Qu'est-ce qu'un modèle TSL ?.

{
    "schema": "https://iot-tsl.oss-cn-shanghai.aliyuncs.com/schema.json",
    "link": "/sys/${productKey}/airCondition/thing/",
    "profile": {
        "productKey": "${productKey}",
        "deviceName": "airCondition"
    },
    "events": [
        {
            "identifier": "alarm",
            "name": "alarm",
            "desc": "Fan alarm",
            "type": "alert",
            "required": true,
            "outputData": [
                {
                    "identifier": "errorCode",
                    "name": "Error code",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "255"
                        }
                    }
                }
            ],
            "method": "thing.event.alarm.post"
        }
    ]
}

Lorsque l'appareil signale l'événement, le format des données de requête Alink est le suivant :

{
    "id": "123",
    "version": "1.0",
    "params": {
        "value": {
            "errorCode": "error"
        },
        "time": 1524448722000
    },
    "method": "thing.event.alarm.post"
}

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert de messages : Les événements signalés peuvent être transférés vers votre serveur ou d'autres produits cloud via l'abonnement côté serveur ou le transfert de données. Topics et formats de données : Signalement d'événements d'appareil.

Invocation de service d'appareil (asynchrone)

IoT Platform prend en charge les invocations synchrones et asynchrones. Vous devez spécifier la méthode d'invocation lorsque vous définissez un service dans un modèle TSL. Pour comprendre le fonctionnement de l'invocation des services d'appareil, consultez le Diagramme d'invocation de service dans le protocole Alink.

  • Synchrone : Appelez l'opération d'API InvokeThingService ou InvokeThingsService. IoT Platform utilise revert-RPC (RRPC) pour transmettre la requête de manière synchrone. Le service doit être configuré pour une invocation synchrone, et IoT Platform s'abonne au topic RRPC correspondant. Qu'est-ce que RRPC ?.

  • Asynchrone : Appelez l'opération d'API InvokeThingService ou InvokeThingsService pour invoquer un service. IoT Platform transmet la requête de manière asynchrone, et l'appareil retourne le résultat de façon asynchrone. Dans ce cas, le service est configuré pour une invocation asynchrone, et IoT Platform s'abonne au topic de réponse asynchrone décrit dans cette section.

Topic et format des données (mobile terminated) :

Downlink data format

Request and response topics

Pass-through/custom

  • Topic de requête : /sys/${productKey}/${deviceName}/thing/model/down_raw

  • Topic de réponse : /sys/${productKey}/${deviceName}/thing/model/down_raw_reply

Alink JSON

  • Module par défaut

    • Topic de requête : /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}

    • Topic de réponse : /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}_reply

  • Module personnalisé

    • Topic de requête : /sys/${productKey}/${deviceName}/thing/service/${tsl.functionBlockId}:${tsl.service.identifier}

    • Topic de réponse : /sys/${productKey}/${deviceName}/thing/service/${tsl.functionBlockId}:${tsl.service.identifier}_reply

Format des données de requête Alink :

{
    "id": "123",
    "version": "1.0",
    "params": {
        "Power": "on",
        "WF": "2"
    },
    "method": "thing.service.${tsl.service.identifier}"
}

Format des données de réponse :

  • Exemple de réponse réussie :

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "version": "1.0"
    }
  • Exemple de réponse en échec :

    {
        "code": 9201,
        "data": {},
        "id": "123",
        "message": "device offLine",
        "version": "1.0"
    }

Description des paramètres :

Tableau 7. Paramètres de la requête

Parameter

Type

Description

id

String

ID du message. Chaîne de chiffres dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

params

Object

Paramètres d'invocation du service. Comprend l'identifiant du service et sa valeur. L'exemple montre deux paramètres : Power et WF (courant de fonctionnement).

{
    "Power": "on",
    "WF": "2"
}

method

String

Méthode de requête.

  • Module par défaut

    La valeur est thing.service.${tsl.service.identifier}.

  • Module personnalisé

    La valeur est thing.service.${tsl.functionBlockId}:${tsl.service.identifier}.

Remarque

${tsl.service.identifier} correspond à l'identifiant du service défini dans le modèle TSL, et ${tsl.functionBlockId} est l'identifiant du module personnalisé. Ajouter un modèle TSL pour une fonctionnalité unique.

Tableau 8. Paramètres de la réponse

Parameter

Type

Description

id

String

ID du message. Chaîne de chiffres dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

code

Integer

Code d'état du résultat. Codes généraux côté appareil.

data

Object

Informations de réponse.

La valeur du paramètre data dépend de la définition du modèle TSL. Si le service ne retourne aucun résultat, la valeur de data est vide. Si le service retourne un résultat, les données retournées respectent strictement la définition du service.

message

String

Message de réponse. Si la requête réussit, success est retourné.

version

String

Numéro de version du protocole. Identique au paramètre version dans les paramètres de la requête.

Exemple de format Alink : Supposons qu'un service nommé SetWeight soit défini dans un produit. Sa description TSL est la suivante :

{
    "schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json",
    "profile": {
        "productKey": "testProduct01"
    },
    "services": [
        {
            "outputData": [
                {
                    "identifier": "OldWeight",
                    "dataType": {
                        "specs": {
                            "unit": "kg",
                            "min": "0",
                            "max": "200",
                            "step": "1"
                        },
                        "type": "double"
                    },
                    "name": "OldWeight"
                },
                {
                    "identifier": "CollectTime",
                    "dataType": {
                        "specs": {
                            "length": "2048"
                        },
                        "type": "text"
                    },
                    "name": "CollectTime"
                }
            ],
            "identifier": "SetWeight",
            "inputData": [
                {
                    "identifier": "NewWeight",
                    "dataType": {
                        "specs": {
                            "unit": "kg",
                            "min": "0",
                            "max": "200",
                            "step": "1"
                        },
                        "type": "double"
                    },
                    "name": "NewWeight"
                }
            ],
            "method": "thing.service.SetWeight",
            "name": "Set weight",
            "required": false,
            "callType": "async"
        }
    ]
}

Lorsque le service est invoqué, le format des données de requête Alink est le suivant :

{
    "method": "thing.service.SetWeight",
    "id": "105917531",
    "params": {
        "NewWeight": 100.8
    },
    "version": "1.0"
}

Format des données de réponse Alink :

{
    "id": "105917531",
    "code": 200,
    "data": {
        "CollectTime": "1536228947682",
        "OldWeight": 100.101
    }
    "message": "success",
    "version": "1.0"
}

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert de messages : Les résultats d'invocation asynchrone peuvent être transférés vers votre serveur ou d'autres produits cloud via l'abonnement côté serveur ou le transfert de données. Topics et formats de données : Résultats d'instructions mobile terminated d'appareil.

Signalement de données par lots via une passerelle

Les passerelles peuvent signaler des propriétés et des événements par lots. Elles ont également la capacité de signaler, toujours par lots, les propriétés et événements de leurs sous-appareils.

Remarque
  • La limite est de 200 propriétés et 20 événements par envoi.

  • Les données peuvent concerner jusqu'à 20 sous-appareils simultanément.

Topic et format des données (mobile originated) :

  • Pass-through/custom

    Topic

    Data format

    Topic de requête : /sys/${productKey}/${deviceName}/thing/model/up_raw

    Les données de la requête correspondent au message brut signalé par l'appareil.

    Remarque

    Les données pass-through doivent inclure le paramètre method. Sa valeur doit correspondre à la méthode de requête définie dans le script d'analyse des données. Par exemple, la valeur peut être thing.event.property.pack.post.

    Exemple :

    0xff0000007b00

    Topic de réponse : /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    Le cloud renvoie les données au format suivant :

    • Exemple de réponse réussie

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "version": "1.0"
      }
    • Exemple de réponse en échec

      {
          "code": 6813,
          "data": {},
          "id": "123",
          "message": "topic illegal",
          "version": "1.0"
      }
  • Alink JSON

    Request and response topics

    Request and response data

    Topic de requête : /sys/${productKey}/${deviceName}/thing/event/property/pack/post

    Format des données de requête Alink :

    {
        "id": "123",
        "version": "1.0",
        "sys":{
            "ack":0
        },
        "params": {
            "properties": {
                "Power": {
                    "value": "on",
                    "time": 1524448722000
                },
                "WF": {
                    "value": { },
                    "time": 1524448722000
                }
            },
            "events": {
                "alarmEvent1": {
                    "value": {
                        "param1": "on",
                        "param2": "2"
                    },
                    "time": 1524448722000
                },
                "alertEvent2": {
                    "value": {
                        "param1": "on",
                        "param2": "2"
                    },
                    "time": 1524448722000
                }
            },
            "subDevices": [
                {
                    "identity": {
                        "productKey": "",
                        "deviceName": ""
                    },
                    "properties": {
                        "Power": {
                            "value": "on",
                            "time": 1524448722000
                        },
                        "WF": {
                            "value": { },
                            "time": 1524448722000
                        }
                    },
                    "events": {
                        "alarmEvent1": {
                            "value": {
                                "param1": "on",
                                "param2": "2"
                            },
                            "time": 1524448722000
                        },
                        "alertEvent2": {
                            "value": {
                                "param1": "on",
                                "param2": "2"
                            },
                            "time": 1524448722000
                        }
                    }
                }
            ]
        },
        "method": "thing.event.property.pack.post"
    }

    Topic de réponse : /sys/${productKey}/${deviceName}/thing/event/property/pack/post_reply

    Format des données de réponse Alink :

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.property.pack.post",
        "version": "1.0"
    }

    En cas d'échec de la requête, {} est renvoyé.

Description des paramètres :

Tableau 9. Paramètres de requête

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

sys

Object

Paramètres des fonctionnalités étendues.

Remarque

Si vous utilisez un SDK côté appareil sans configurer les fonctionnalités étendues, ce paramètre est omis et les valeurs par défaut s'appliquent.

ack

Integer

Indique si le cloud renvoie une réponse. Champ situé sous sys.

  • 1 : Une réponse est renvoyée.

  • 0 : Aucune réponse n'est renvoyée.

Important

Exemples d'utilisation du modèle Thing Specification Language.

Si ce paramètre n'est pas configuré, il est omis et une réponse est renvoyée par défaut.

params

Object

Paramètres de la requête.

properties

Object

Propriétés. Comprend l'identifiant de la propriété, sa valeur value, ainsi que l'horodatage time de génération.

Le paramètre time est facultatif. L'inclusion d'un horodatage dépend de votre scénario métier. Si les messages sont fréquents et que vous devez déterminer leur ordre chronologique, nous vous recommandons d'inclure cet horodatage.

Dans l'exemple, l'appareil signale des informations pour deux propriétés : Power et WF (courant de fonctionnement).

Pour une propriété de module personnalisé, le format de l'identifiant est ${moduleIdentifier}:${propertyIdentifier} (séparé par un deux-points). Exemple :

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

events

Object

Événements. Comprend l'identifiant de l'événement, ses paramètres de sortie value, ainsi que l'horodatage time de génération.

Le paramètre time est facultatif. L'inclusion d'un horodatage dépend de votre scénario métier. Si les messages sont fréquents et que vous devez déterminer leur ordre chronologique, nous vous recommandons d'inclure cet horodatage.

L'exemple montre le signalement de deux événements, alarmEvent1 et alarmEvent2, avec leurs paramètres correspondants param1 et param2.

Pour un événement de module personnalisé, le format de l'identifiant est ${moduleIdentifier}:${eventIdentifier} (séparé par un deux-points). Exemple :

"test:alarmEvent1": {
        "value": {
            "param1": "on",
            "param2": "2"
        },
        "time": 1524448722000
    }

subDevices

Object

Informations sur les sous-appareils.

productKey

String

ProductKey du produit auquel appartient le sous-appareil.

deviceName

String

Nom du sous-appareil.

method

String

Paramètre de requête. Valeur : thing.event.property.pack.post.

Tableau 10. Paramètres de réponse

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

code

Integer

Code de réponse. La valeur 200 indique un succès.

Remarque

Le système valide l'appareil, la topologie ainsi que les propriétés et événements signalés par rapport à la définition du modèle TSL du produit. Si l'une de ces vérifications échoue, le signalement des données échoue également.

data

Object

Un objet vide est renvoyé si la requête aboutit.

message

String

Message de réponse. La valeur success est renvoyée en cas de réussite de la requête.

method

String

Méthode de requête correspondant à la réponse. Identique au paramètre method de la requête.

version

String

Numéro de version du protocole. Identique au paramètre version de la requête.

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert de messages : Les données de modèle TSL par lots provenant des passerelles peuvent être transférées vers votre serveur ou d'autres produits cloud via abonnement côté serveur ou transfert de données. Avant le transfert, les messages destinés aux sous-appareils et à la passerelle sont scindés en messages individuels de propriété ou d'événement. Topics et formats de données : Signalement de propriété d'appareil et Signalement d'événement d'appareil.

Signalement de données historiques de modèle TSL

Topic et format des données (mobile originated) :

  • Topic de requête : /sys/${productKey}/${deviceName}/thing/event/property/history/post

  • Topic de réponse : /sys/${productKey}/${deviceName}/thing/event/property/history/post_reply

Format des données de requête Alink :

{
    "id": "123", 
    "version": "1.0",
    "sys":{
        "ack":0
    }, 
    "method": "thing.event.property.history.post", 
    "params": [
        {
            "identity": {
                "productKey": "", 
                "deviceName": ""
            }, 
            "properties": [
                {
                    "Power": {
                        "value": "on", 
                        "time": 1524448722000
                    }, 
                    "WF": {
                        "value": "3", 
                        "time": 1524448722000
                    }
                }, 
                {
                    "Power": {
                        "value": "on", 
                        "time": 1524448722000
                    }, 
                    "WF": {
                        "value": "3", 
                        "time": 1524448722000
                    }
                }
            ], 
            "events": [
                {
                    "alarmEvent": {
                        "value": {
                            "Power": "on", 
                            "WF": "2"
                        }, 
                        "time": 1524448722000
                    }, 
                    "alertEvent": {
                        "value": {
                            "Power": "off", 
                            "WF": "3"
                        }, 
                        "time": 1524448722000
                    }
                }
            ]
        }, 
        {
            "identity": {
                "productKey": "", 
                "deviceName": ""
            }, 
            "properties": [
                {
                    "Power": {
                        "value": "on", 
                        "time": 1524448722000
                    }, 
                    "WF": {
                        "value": "3", 
                        "time": 1524448722000
                    }
                }
            ], 
            "events": [
                {
                    "alarmEvent": {
                        "value": {
                            "Power": "on", 
                            "WF": "2"
                        }, 
                        "time": 1524448722000
                    }, 
                    "alertEvent": {
                        "value": {
                            "Power": "off", 
                            "WF": "3"
                        }, 
                        "time": 1524448722000
                    }
                }
            ]
        }
    ]
}

Format des données de réponse Alink :

  • Exemple de réponse réussie

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.property.history.post",
        "version": "1.0"
    }
  • Exemple de réponse en échec

    {
        "code": 5092,
        "data": {},
        "id": "123",
        "message": "property not found",
        "method": "thing.event.property.history.post",
        "version": "1.0"
    }

Description des paramètres :

Tableau 11. Paramètres de requête

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

sys

Object

Paramètres des fonctionnalités étendues.

Remarque

Si vous utilisez un SDK côté appareil sans configurer les fonctionnalités étendues, ce paramètre est omis et les valeurs par défaut s'appliquent.

ack

Integer

Indique si le cloud renvoie une réponse. Champ situé sous sys.

  • 1 : Une réponse est renvoyée.

  • 0 : Aucune réponse n'est renvoyée.

Important

Exemples d'utilisation du modèle Thing Specification Language.

Si ce paramètre n'est pas configuré, il est omis et une réponse est renvoyée par défaut.

method

String

Méthode de requête. Ce champ est statique. Valeur : thing.event.property.history.post.

params

Object

Paramètres de la requête.

identity

String

Informations d'identification de l'appareil propriétaire des données. Comprend les paramètres productKey et deviceName.

Remarque

Un appareil directement connecté ne peut signaler que ses propres données historiques de modèle TSL. Une passerelle peut signaler les données historiques de modèle TSL de ses sous-appareils. Lorsqu'une passerelle signale des données historiques pour un sous-appareil, le champ identity contient les informations de ce sous-appareil.

properties

Object

Propriétés. Comprend l'identifiant de la propriété, sa valeur value, ainsi que l'horodatage time de génération.

Dans l'exemple, l'appareil signale des informations historiques pour deux propriétés : Power et WF (courant de fonctionnement).

Pour une propriété de module personnalisé, le format de l'identifiant est ${moduleIdentifier}:${propertyIdentifier} (séparé par un deux-points). Exemple :

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

events

Object

Événements. Comprend l'identifiant de l'événement, ses paramètres de sortie value, ainsi que l'horodatage time de génération.

L'exemple montre le signalement d'informations historiques pour alarmEvent, avec ses paramètres correspondants Power et WF (courant de fonctionnement).

Pour un événement de module personnalisé, le format de l'identifiant est ${moduleIdentifier}:${eventIdentifier} (séparé par un deux-points). Exemple :

"test:alarmEvent": {
        "value": {
            "Power": "on", 
            "WF": "2"
        }, 
        "time": 1524448722000
    }
Tableau 12. Paramètres de réponse

Parameter

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil actuel.

code

Integer

Code d'état du résultat. Codes généraux côté appareil.

data

Object

Un objet vide est renvoyé si la requête aboutit.

message

String

Message de réponse. La valeur success est renvoyée en cas de réussite de la requête.

method

String

Méthode de requête correspondant à la réponse. Identique au paramètre method de la requête.

version

String

Numéro de version du protocole. Identique au paramètre version de la requête.

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert de messages : Les données historiques de modèle TSL peuvent être transférées vers votre serveur ou d'autres produits cloud via abonnement côté serveur ou transfert de données. Topics et formats de données : Signalement de propriété historique et Signalement d'événement historique.

Important

Lors du transfert de données historiques de modèle TSL d'un appareil, la plateforme crée des messages distincts pour les éléments répertoriés sous properties et events. Les données historiques de chaque propriété ou événement sont ensuite transférées séparément.

Signalement par lots de propriétés et d'événements d'appareil

Topic et format des données (mobile originated) :

  • Topic de requête : /sys/${productKey}/${deviceName}/thing/event/property/batch/post

  • Topic de réponse : /sys/${productKey}/${deviceName}/thing/event/property/batch/post_reply

Format des données de requête Alink :

{
    "id": "123", 
    "version": "1.0",
    "sys":{
        "ack":0
    }, 
    "method": "thing.event.property.batch.post", 
    "params": {
        "properties": {
            "Power": [
                {
                    "value": "on", 
                    "time": 1524448722000
                },
                {
                    "value": "off", 
                    "time": 1524448722001
                }
            ], 
            "WF": [
                {
                    "value": 3, 
                    "time": 1524448722000
                },
                {
                    "value": 4, 
                    "time": 1524448722009
                }
            ]
        }, 
        "events": {
            "alarmEvent": [
                {
                    "value": {
                        "Power": "on", 
                        "WF": "2"
                    }, 
                    "time": 1524448722000
                },
                {
                    "value": {
                        "Power": "on", 
                        "WF": "2"
                    }, 
                    "time": 1524448722000
                }
            ]
        }
    }
}

Format des données de réponse Alink :

  • Exemple de réponse réussie :

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.property.batch.post",
        "version": "1.0"
    }
  • Exemple de réponse en échec :

    {
        "code": 9201,
        "data": {},
        "id": "123",
        "message": "device offLine",
        "method": "thing.event.property.batch.post",
        "version": "1.0"
    }

Description des paramètres :

Tableau 13. Paramètres de la requête

Paramètre

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil concerné.

version

String

Numéro de version du protocole. La seule valeur valide est 1.0.

sys

Object

Paramètres des fonctionnalités étendues.

Remarque

Si vous utilisez un SDK côté appareil sans définir les fonctionnalités étendues, ce paramètre est omis et les valeurs par défaut s'appliquent.

ack

Integer

Indique si le cloud renvoie une réponse. Champ situé sous sys.

  • 1 : Une réponse est renvoyée.

  • 0 : Aucune réponse n'est renvoyée.

Important

Exemples d'utilisation du modèle Thing Specification Language.

En l'absence de configuration, ce paramètre est omis et une réponse est renvoyée par défaut.

method

String

Méthode de la requête. Il s'agit d'un champ statique. Valeur : thing.event.property.batch.post.

params

Object

Paramètres de la requête.

properties

Object

Propriétés. Comprend l'identifiant de la propriété, sa valeur value, ainsi que l'horodatage time correspondant à sa génération.

Dans cet exemple, l'appareil signale en lot les informations de deux propriétés : Power et WF (courant de fonctionnement).

Pour une propriété de module personnalisé, le format de l'identifiant est ${moduleIdentifier}:${propertyIdentifier} (séparé par un deux-points). Exemple :

"test:Power": {
        "value": "on",
        "time": 1524448722000
    }

events

Object

Événements. Comprend l'identifiant de l'événement, ses paramètres de sortie value, ainsi que l'horodatage time correspondant à sa génération.

Dans cet exemple, les informations en lot de l'événement alarmEvent sont signalées avec ses paramètres associés Power et WF (courant de fonctionnement).

Pour un événement de module personnalisé, le format de l'identifiant est ${moduleIdentifier}:${eventIdentifier} (séparé par un deux-points). Exemple :

"test:alarmEvent": {
        "value": {
            "Power": "on", 
            "WF": "2"
        }, 
        "time": 1524448722000
    }
Tableau 14. Paramètres de la réponse

Paramètre

Type

Description

id

String

ID du message. Chaîne numérique dont la valeur est comprise entre 0 et 4294967295. Chaque ID de message doit être unique pour l'appareil concerné.

code

Integer

Code d'état du résultat. Codes généraux côté appareil.

data

Object

Un objet vide est renvoyé lorsque la requête aboutit.

message

String

Message de réponse. La valeur success est renvoyée lorsque la requête aboutit.

method

String

Méthode de requête associée à la réponse. Elle correspond au paramètre method de la requête.

version

String

Numéro de version du protocole. Il correspond au paramètre version de la requête.

Codes d'erreur : Codes d'erreur reçus par les appareils.

Transfert des messages : Les données de modèle TSL en lot peuvent être transférées vers votre serveur via un abonnement côté serveur. Les données de propriétés et d'événements sont transférées sous forme de messages distincts. Topics et formats de données : Signalement en lot des propriétés depuis les appareils et Signalement en lot des événements depuis les appareils.

Références

Quelles sont les différences entre le signalement des propriétés, le signalement des données historiques et le signalement en lot des propriétés pour les modèles TSL ?.