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.

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_rawLes 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_METHODestthing.event.property.postlorsqu'un appareil envoie des données de propriété vers le cloud.
Exemple :
0x00002233441232013fa00000Topic de réponse :
/sys/${productKey}/${deviceName}/thing/model/up_raw_replyLe 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/postFormat 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_replyLe 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 :
|
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.
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 : |
|
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 :
Pour une propriété de module personnalisé, l'identifiant suit le format
|
|
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.
|
|
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. |
|
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 |
|
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.
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 |
|
|
Alink JSON |
|
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 :
|
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 : Pour une propriété de module personnalisé, l'identifiant suit le format |
|
method |
String |
Méthode de requête. Exemple : |
|
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 |
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_rawLes données de la requête correspondent au message brut signalé par l'appareil.
RemarqueLes 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 :
0xff0000007b00Topic de réponse :
/sys/${productKey}/${deviceName}/thing/model/up_raw_replyLe 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 :
|
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.
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.
Remarque
|
|
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).
|
|
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.
|
|
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, |
|
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 |
|
|
Alink JSON |
|
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 :
|
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).
|
|
method |
String |
Méthode de requête.
Remarque
|
|
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, |
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.
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_rawLes données de la requête correspondent au message brut signalé par l'appareil.
RemarqueLes 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 :
0xff0000007b00Topic de réponse :
/sys/${productKey}/${deviceName}/thing/model/up_raw_replyLe 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/postFormat 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_replyFormat 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 :
|
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.
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
|
|
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
|
|
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 : |
|
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 |
|
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/postTopic 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 :
|
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.
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 : |
|
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
|
|
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
|
|
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 |
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.
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/postTopic 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 :
|
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.
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 : |
|
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
|
|
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
|
|
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 |
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.