Tous les produits
Search
Centre de documentation

IoT Platform:Structure de données ThingModelJson

Dernière mise à jour :Aug 20, 2026

Le paramètre ThingModelJson, utilisé dans certaines requêtes et réponses d'API de modèle TSL, représente la manière dont IoT Platform stocke en interne les définitions de fonctionnalités du modèle TSL. Cette structure diffère de la structure de données TSL et tous les champs sont triés par ordre alphabétique selon leur clé.

Pour connaître les limites relatives aux définitions de fonctionnalités TSL pour les produits et les appareils, consultez la rubrique Limites des définitions de fonctionnalités TSL pour les produits et les appareils.

Structure de données

Les modules TSL par défaut et personnalisés possèdent des structures de données différentes.

  • Module TSL par défaut

    {
      "_ppk":{
           "description":"test",
           "version":"159244410****"
      }
      "events":[],
      "productKey":"al12345****",
      "properties":[],
      "services":[],
      "functionBlocks":[{
          "productKey":"al12345****",
          "functionBlockId":"location0",
          "functionBlockName":"Location module 0"
        }]
    }
    Parameter Type Description
    productKey String ProductKey du produit auquel appartient le modèle TSL.
    _ppk String Informations de version du modèle TSL, contenant les champs suivants :
    • version : Numéro de version du modèle TSL. Ce paramètre n'est renvoyé que pour les modèles TSL publiés.
    • description : Description de la version du module TSL par défaut. Ce paramètre n'est renvoyé que pour les modèles TSL publiés.
    properties List Liste des propriétés du modèle TSL. Pour plus d'informations sur la structure de données des propriétés, consultez la section Spécification de la structure de données des propriétés.

    Utilisez extendConfig dans chaque structure de données de propriété pour définir les informations étendues. Pour plus d'informations, consultez la section Spécification de la structure de données extendConfig. Si une propriété ne comporte aucune information étendue, il n'est pas nécessaire de transmettre extendConfig.

    services List Liste des services du modèle TSL. Pour plus d'informations sur la structure de données des services, consultez la section Spécification du format de données des services.

    Utilisez extendConfig dans chaque structure de données de service pour définir les informations étendues. Pour plus d'informations, consultez la section Spécification de la structure de données extendConfig. Si un service ne comporte aucune information étendue, il n'est pas nécessaire de transmettre extendConfig.

    events List Liste des événements du modèle TSL. Pour plus d'informations sur la structure de données des événements, consultez la section Spécification du format de données des événements.

    Utilisez extendConfig dans chaque structure de données d'événement pour définir les informations étendues. Pour plus d'informations, consultez la section Spécifications de la structure de données extendConfig. Si un événement ne comporte aucune information étendue, il n'est pas nécessaire de transmettre extendConfig.

    functionBlocks List Liste des modules TSL personnalisés. Inclus uniquement si le produit comporte des modules personnalisés. Contient les champs suivants :
    • productKey : ProductKey du produit auquel appartient le modèle TSL.
    • functionBlockId : Identifiant unique du module TSL personnalisé au sein d'un produit.
    • functionBlockName : Nom du module TSL personnalisé.
  • Module TSL personnalisé

    {
      "productKey":"al12345****", 
      "identifier":"location0",
      "name":"Location module 0",
      "properties":[],
      "services":[],
      "events":[],
      "description":""
    }

    Le tableau suivant répertorie les paramètres de base d'un module TSL personnalisé. Pour les autres paramètres, reportez-vous aux descriptions du module TSL par défaut.

    Parameter Type Description
    identifier String

    Identifiant unique du module TSL personnalisé au sein d'un produit.

    L'identifiant peut comporter jusqu'à 30 caractères et contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits de soulignement (_).

    name String

    Nom du module TSL personnalisé.

    Le nom doit comporter entre 4 et 30 caractères et peut contenir des caractères chinois, japonais, des lettres anglaises, des chiffres et des traits de soulignement (_). Un caractère chinois ou japonais compte pour un seul caractère.

    description String Description du module, d'une longueur maximale de 100 caractères.

Structure de données des propriétés

Le tableau suivant répertorie les paramètres permettant de définir une propriété.

Important

Les paramètres

std

et

customFlag

sont obsolètes. Ils n'affectent pas les appels d'API existants et vous n'avez pas besoin de les spécifier pour les nouveaux appels.

Parameter Type Required Description
productKey String Oui ProductKey du produit auquel appartient le modèle TSL.
createTs Long Non Heure de création de la fonctionnalité, sous forme d'horodatage à 13 chiffres. Si vous ne spécifiez pas ce paramètre, le système en génère un. Les fonctionnalités sont triées par cet horodatage par ordre croissant.
Remarque Pour un modèle TSL existant, l'heure de création correspond à l'heure de la première modification du modèle TSL après sa publication.
identifier String Oui Identifiant unique de la propriété. Sa longueur maximale est de 50 caractères et il peut contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits de soulignement (_).
Remarque L'identifiant ne peut pas être un mot-clé réservé, tel que set, get, post, property, event, time ou value.
dataType String Oui Type de données de la propriété.

Valeurs valides : ARRAY, STRUCT, INT, FLOAT, DOUBLE, TEXT, DATE, ENUM et BOOL.

Les paramètres que vous devez spécifier varient en fonction du type de données. Pour plus d'informations, consultez les spécifications de données pour chaque type de données dans cette rubrique.

name String Oui Nom d'affichage de la propriété. Le nom peut comporter jusqu'à 30 caractères et contenir des caractères chinois, des lettres majuscules, des lettres minuscules, des chiffres, des traits d'union (-), des traits de soulignement (_) et des points (.). Il doit commencer par un caractère chinois, une lettre ou un chiffre. Un caractère chinois compte pour un seul caractère.
rwFlag String Oui Indique si la propriété est en lecture seule ou en lecture-écriture dans IoT Platform.
  • READ_WRITE : Lecture et écriture.
  • READ_ONLY : Lecture seule.
dataSpecs Object Non Si dataType est défini sur INT, FLOAT, DOUBLE, TEXT, DATE ou ARRAY, les spécifications de données sont stockées dans le paramètre dataSpecs. Pour des exemples, consultez les blocs de code ci-dessous ce tableau.
Remarque
  • Les spécifications de données s'appliquent à toutes les données, à l'exception des définitions des propriétés, des services, des événements et des paramètres.
  • Vous devez spécifier soit le paramètre dataSpecs, soit le paramètre dataSpecsList en fonction du type de données. Vous ne pouvez pas spécifier les deux.
dataSpecsList List Non Si dataType est défini sur ENUM, BOOL ou STRUCT, les spécifications de données sont stockées dans le paramètre dataSpecsList. Pour des exemples, consultez les blocs de code ci-dessous ce tableau.
Remarque
  • Les spécifications de données s'appliquent à toutes les données, à l'exception des définitions des propriétés, des services, des événements et des paramètres.
  • Vous devez spécifier soit le paramètre dataSpecs, soit le paramètre dataSpecsList en fonction du type de données. Vous ne pouvez pas spécifier les deux.
required Boolean Oui Indique si la propriété est obligatoire pour une catégorie standard.
  • true : Oui
  • false : Non
custom Boolean Oui Indique s'il s'agit d'une fonctionnalité personnalisée.
  • true : Oui
  • false : Non
  • Exemple de dataSpecs lorsque dataType est INT :

    {
      "dataSpecs": {
        "custom": true,
        "dataType": "INT",
        "defaultValue": "30",
        "max": "1440",
        "min": "0",
        "step": "10",
        "unit": "min"
      }
    }
  • Exemple de dataSpecs lorsque dataType est TEXT :

    {
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "id": 2412127,
        "length": 2048
      }
    }
  • Exemple de dataSpecs lorsque dataType est ARRAY :

    {
      "dataSpecs": {
        "childDataType": "INT",
        "custom": true,
        "dataType": "ARRAY",
        "size": 1
      }
    }
  • Exemple de dataSpecsList lorsque dataType est ENUM :

    {
      "dataSpecsList": [
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "true",
          "name": "Open",
          "value": 1
        },
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "false",
          "name": "Close",
          "value": 0
        }
      ]
    }
  • Exemple d'un élément dans dataSpecsList lorsque dataType est STRUCT :

    {
      "childDataType": "TEXT",
      "childName": "Card number",
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "length": 128
      },
      "dataType": "STRUCT",
      "identifier": "CardNo",
      "name": "NVR chip information"
    }

Format de données des services

Le tableau suivant répertorie les paramètres permettant de définir un service.

Parameter Type Required Description
productKey String Oui ProductKey du produit qui contient le modèle TSL.
createTs
Long
Non
Heure de création de la fonctionnalité, sous forme d'horodatage à 13 chiffres. Si vous ne spécifiez pas ce paramètre, le système en génère un. Les fonctionnalités sont triées par cet horodatage par ordre croissant.
Remarque Pour un modèle TSL existant, l'heure de création correspond à l'heure de la première modification du modèle TSL après sa publication.
identifier String Oui L'identifiant du service peut comporter jusqu'à 50 caractères et contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits de soulignement (_).
Remarque L'identifiant ne peut pas être un mot-clé réservé, tel que set, get, post, property, event, time ou value.
serviceName String Oui Le nom du service peut comporter jusqu'à 30 caractères et contenir des caractères chinois, des lettres majuscules et minuscules, des chiffres, des traits d'union (-), des traits de soulignement (_) et des points (.). Il doit commencer par un caractère chinois, une lettre ou un chiffre. Chaque caractère chinois compte pour un seul caractère.
inputParams List Non Liste des paramètres d'entrée. Pour plus de détails sur la structure de données, consultez la section Structure de données des paramètres d'entrée et de sortie.
outputParams List Non Liste des paramètres de sortie. Pour plus de détails sur la structure de données, consultez la section Structure de données des paramètres d'entrée et de sortie.
required Boolean Oui Indique si le service est obligatoire pour une catégorie standard.
  • true : Oui
  • false : Non
callType String Oui Type d'appel du service.
  • ASYNC : appel asynchrone
  • SYNC : appel synchrone
custom Boolean Oui Indique s'il s'agit d'une fonctionnalité personnalisée.
  • true : Oui
  • false : Non

Format des données d'événement

Le tableau suivant répertorie les paramètres permettant de définir un événement.

Parameter Type Required Description
productKey String Yes ProductKey du produit contenant le modèle TSL.
createTs
Long
No
Horodatage de création de la fonctionnalité, exprimé sous forme d'un timestamp à 13 chiffres. Si vous ne spécifiez pas ce paramètre, le système en génère un automatiquement. Les fonctionnalités sont triées par ordre croissant selon cet horodatage.
Remarque Pour un modèle TSL existant, l'heure de création correspond à la date de la première modification apportée au modèle après sa publication.
identifier String Yes Identifiant de l'événement. Sa longueur maximale est de 50 caractères et il peut contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits de soulignement (_).
Remarque L'identifiant ne doit pas être un mot clé réservé, tel que set, get, post, property, event, time ou value.
eventName String Yes Nom de l'événement. Il doit comporter au maximum 30 caractères et commencer par un caractère chinois, une lettre ou un chiffre. Il peut contenir des caractères chinois, des lettres majuscules, des lettres minuscules, des chiffres, des traits d'union (-), des traits de soulignement (_) et des points (.). Chaque caractère chinois compte pour un seul caractère.
eventType String Yes Type d'événement. Valeurs valides :
  • INFO_EVENT_TYPE : information
  • ALERT_EVENT_TYPE : alerte
  • ERROR_EVENT_TYPE : erreur
outputdata List No Paramètres de sortie de l'événement. Pour plus de détails sur la structure des données, consultez la section Structure des données des paramètres d'entrée et de sortie.
required Boolean Yes Indique s'il s'agit d'un événement obligatoire pour une catégorie standard. Valeurs valides :
  • true : Oui
  • false : Non
custom Boolean Yes Indique s'il s'agit d'une fonctionnalité personnalisée. Valeurs valides :
  • true : Oui
  • false : Non

Structure des paramètres d'entrée et de sortie

Le tableau suivant liste les champs utilisés pour définir les paramètres d'entrée et de sortie d'un service ou d'un événement.

Parameter Type Required Description
dataType String Yes Type de données du paramètre.

Valeurs valides : ARRAY, STRUCT, INT, FLOAT, DOUBLE, TEXT, DATE, ENUM et BOOL.

Pour les spécifications de données propres à chaque type, reportez-vous aux sections correspondantes de cette rubrique.

identifier String Yes Identifiant unique du paramètre. Sa longueur maximale est de 50 caractères et il peut contenir des lettres majuscules et minuscules, des chiffres ainsi que le caractère trait de soulignement (_).
Remarque L'identifiant ne doit pas être un mot clé réservé, tel que set, get, post, property, event, time ou value.
name String Yes Nom d'affichage du paramètre. Il peut comporter jusqu'à 30 caractères et inclure des caractères chinois, des lettres majuscules, des lettres minuscules, des chiffres, des traits d'union (-), des traits de soulignement (_) et des points (.). Le nom doit commencer par un caractère chinois, une lettre ou un chiffre. Chaque caractère chinois compte pour un seul caractère.
direction String Yes Indique si le paramètre est un paramètre d'entrée ou de sortie.
  • PARAM_INPUT : Paramètre d'entrée.
  • PARAM_OUTPUT : Paramètre de sortie.
paraOrder Integer Yes Numéro de séquence unique du paramètre, basé sur un index zéro.
dataSpecs Object No Si le dataType est un type simple tel que INT, FLOAT, DOUBLE, TEXT, DATE ou BOOL, les spécifications de données sont stockées dans le paramètre dataSpecs.
Remarque
  • Ces spécifications s'appliquent aux données du paramètre et non aux définitions d'autres composants TSL tels que les propriétés, les services ou les événements.
  • Vous devez spécifier soit le paramètre dataSpecs, soit le paramètre dataSpecsList en fonction du type de données. Vous ne pouvez pas spécifier les deux simultanément.
dataSpecsList List No Si le dataType est un type complexe tel que ENUM, ARRAY ou STRUCT, les spécifications de données sont stockées dans le paramètre dataSpecsList.
Remarque
  • Ces spécifications s'appliquent aux données du paramètre et non aux définitions d'autres composants TSL tels que les propriétés, les services ou les événements.
  • Vous devez spécifier soit le paramètre dataSpecs, soit le paramètre dataSpecsList en fonction du type de données. Vous ne pouvez pas spécifier les deux simultanément.
custom Boolean Yes Indique si le paramètre appartient à une fonctionnalité TSL personnalisée.
  • true : Oui
  • false : Non

Structure des données INT, FLOAT et DOUBLE

Si une fonctionnalité ou un paramètre possède un type de données INT, FLOAT ou DOUBLE, sa structure de données comprend les paramètres suivants.

Parameter Type Required Description
dataType String Yes Type de données. Valeurs valides : INT, FLOAT ou DOUBLE.
max String Yes Valeur maximale. Cette valeur doit respecter le type spécifié dans le paramètre dataType.

La valeur doit être transmise sous forme de string. Par exemple, si dataType est défini sur INT, utilisez "max":"200" au lieu de "max":200.

min String Yes Valeur minimale. Cette valeur doit respecter le type spécifié dans le paramètre dataType.

La valeur doit être transmise sous forme de string. Pour plus d'informations, consultez la description du paramètre max.

step String Yes Taille du pas, correspondant à l'incrément de la valeur. Cette valeur doit respecter le type spécifié dans le paramètre dataType.

La valeur doit être transmise sous forme de string. Pour plus d'informations, consultez la description du paramètre max.

precise String No Précision. Ce paramètre est utilisé uniquement pour les types de données FLOAT et DOUBLE.
defaultValue String No Valeur par défaut du paramètre.
unit String Yes Symbole de l'unité.
unitName String Yes Nom de l'unité.
custom Boolean Yes Indique s'il s'agit d'une fonctionnalité personnalisée.
  • true : Oui
  • false : Non

Structure des données DATE et TEXT

La structure de données pour les types DATE et TEXT comprend les paramètres suivants.

Parameter Type Required Description
dataType String Yes Type de données. Les valeurs valides sont DATE ou TEXT.
length Long Yes La longueur maximale des données est de 2 048 octets. Ce paramètre est obligatoire si dataType est défini sur TEXT.
defaultValue String No Valeur par défaut.
custom Boolean Yes Indique s'il s'agit d'une fonctionnalité personnalisée.
  • true : Oui
  • false : Non

Spécification des données ARRAY

Lorsque le type de données d'une fonctionnalité ou d'un paramètre est ARRAY, la spécification des données inclut les paramètres suivants.

Important

Les types de données

ARRAY

et

STRUCT

imbriqués prennent en charge au maximum deux niveaux d'imbrication récursive (parent et enfant).

Parameter Type Required Description
dataType String Yes La valeur doit être ARRAY.
size Long Yes Nombre d'éléments dans le tableau.
childDataType String Yes Type de données des éléments du tableau. Valeurs valides : STRUCT, INT, FLOAT, DOUBLE ou TEXT.
dataSpecs Object No Si le childDataType est un type non listé tel que INT, FLOAT, DOUBLE, TEXT, DATE ou ARRAY, utilisez ce paramètre dataSpecs pour définir la spécification des données.
Remarque
  • Les spécifications de données s'appliquent à toutes les données, à l'exception des définitions de propriété, de service, d'événement et de paramètre.
  • Vous devez spécifier soit le paramètre dataSpecs, soit le paramètre dataSpecsList en fonction du type de données enfant. Vous ne pouvez pas spécifier les deux simultanément.
dataSpecsList List No Si le childDataType est un type listé tel que ENUM, BOOL ou STRUCT, utilisez ce paramètre dataSpecsList pour définir la spécification des données.
Remarque
  • Les spécifications de données s'appliquent à toutes les données, à l'exception des définitions de propriété, de service, d'événement et de paramètre.
  • Vous devez spécifier soit le paramètre dataSpecs, soit le paramètre dataSpecsList en fonction du type de données enfant. Vous ne pouvez pas spécifier les deux simultanément.
custom Boolean Yes Indique si la fonctionnalité est personnalisée.
  • true : Oui
  • false : Non

Types ENUM et BOOL

Si une fonctionnalité ou un paramètre est de type BOOL ou ENUM, sa structure de données inclut les paramètres suivants.

Parameter Type Required Description
dataType String Yes La valeur doit être BOOL ou ENUM.
name String Yes Le nom de l'élément ENUM. Le nom peut comporter jusqu'à 20 caractères et doit commencer par un caractère chinois, une lettre anglaise ou un chiffre. Il peut contenir des caractères chinois, des lettres anglaises, des chiffres, des traits de soulignement (_) et des tirets (-). Chaque caractère chinois compte pour un seul caractère.
value Integer Yes La valeur enum.
custom Boolean Yes Indique s'il s'agit d'une fonctionnalité personnalisée.
  • true : la fonctionnalité est personnalisée.
  • false : la fonctionnalité n'est pas personnalisée.

Structure de données Struct

Lorsque le type de données d'une fonctionnalité ou d'un paramètre est struct, sa structure de données inclut les paramètres suivants.

Important
  • Les paramètres childSpecsDTO et childEnumSpecsDTO sont obsolètes. Cela n'affecte pas les appels API existants. Pour les nouveaux appels, ne transmettez pas ces paramètres. Utilisez plutôt le paramètre dataSpecsList.

  • Lorsque les types de données array et struct sont imbriqués, jusqu'à deux niveaux d'imbrication récursive (parent et enfant) sont pris en charge.

Parameter Type Required Description
dataType String Yes La valeur doit être struct.
identifier String Yes L'identifiant du sous-paramètre dans la structure struct. Il peut contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits de soulignement (_). La longueur maximale est de 50 caractères.
Remarque L'identifiant ne peut être aucun des mots réservés suivants : set, get, post, property, event, time ou value.
name String Yes Le nom du sous-paramètre dans la structure struct. Le nom doit commencer par un caractère chinois, une lettre ou un chiffre. Il peut contenir des caractères chinois, des lettres majuscules, des lettres minuscules, des chiffres, des tirets (-), des traits de soulignement (_) et des points (.). La longueur maximale est de 30 caractères. Chaque caractère chinois compte pour un seul caractère.
Remarque childNameCe paramètre a la même définition et n'est actuellement pas utilisé.
childDataType String No Le type de données du sous-paramètre dans la structure struct.

Valeurs valides : INT, FLOAT, DOUBLE, TEXT, DATE, ENUM, BOOL.

childName String Yes Le nom du sous-paramètre dans la structure struct. Le nom doit commencer par un caractère chinois, une lettre ou un chiffre. Il peut contenir des caractères chinois, des lettres majuscules, des lettres minuscules, des chiffres, des tirets (-), des traits de soulignement (_) et des points (.). La longueur maximale est de 30 caractères. Chaque caractère chinois compte pour un seul caractère.
dataSpecs Object No

Les spécifications de données pour les types de données non listés (dataType) tels que INT, FLOAT, DOUBLE, TEXT, DATE et ARRAY sont stockées dans dataSpecs.

Remarque
  • Les spécifications de données font référence à toutes les définitions de données autres que les définitions des propriétés, des services, des événements et des paramètres.
  • dataSpecsdataSpecsListVous devez fournir une valeur pour l'un ou l'autre, mais pas pour les deux. Utilisez le paramètre correspondant au type de données.
dataSpecsList List No dataTypeENUMBOOLSTRUCTdataSpecsListSi le type de données d'un sous-paramètre est un type de liste (tel que ENUM, BOOL ou STRUCT), ses spécifications de données sont stockées dans le paramètre dataSpecsList.
Remarque
  • Les spécifications de données font référence à toutes les définitions de données autres que les définitions des propriétés, des services, des événements et des paramètres.
  • dataSpecsdataSpecsListVous devez fournir une valeur pour l'un ou l'autre, mais pas pour les deux. Utilisez le paramètre correspondant au type de données.
custom Boolean Yes Indique s'il s'agit d'une fonctionnalité personnalisée.
  • true : Oui
  • false : Non

Structure de données extendConfig

Dans la structure de données de chaque propriété, événement ou service, utilisez extendConfig pour définir les informations étendues qui mappent les protocoles de communication des appareils au modèle TSL standard.

Remarque

configCode

Le champ dans la réponse est un identifiant unique que le système génère pour les informations étendues d'une seule fonctionnalité.

IoT Platform prend en charge les informations étendues pour les appareils utilisant les protocoles Modbus, OPC UA ou les protocoles de passerelle personnalisés. Les spécifications de données diffèrent selon le protocole :

Type Modbus

Modbus prend en charge les informations étendues uniquement pour les propriétés.

Remarque

L'exemple suivant inclut tous les paramètres possibles pour démontrer la structure de

extendConfig

. Les paramètres réels dépendent de votre cas d'utilisation.

{
  "identifier":"extend1",
  "writeFunctionCode":0,
  "writeOnly":0,
  "registerAddress":"0xFE",
  "operateType":"coilStatus",
  "scaling":0.1,
  "pollingTime":1000,
  "trigger":1,
  "bitMask":128,
  "originalDataType":{
     "type":"uint64",
     "specs":{
        "swap":0,
        "reverseRegister":0}
  }
}
Parameter Type Description
identifier String Un identifiant unique pour la propriété au sein du produit.
registerAddress String L'adresse du registre. La valeur doit commencer par 0x et se situer dans la plage 0x0 à 0xFFFF. Par exemple, 0xFE.
operateType String Le type d'opération. Les valeurs valides incluent :
  • coilStatus : état de la bobine
  • inputStatus : entrée discrète
  • holdingRegister : registre de maintien
  • inputRegister : registre d'entrée
writeFunctionCode Integer Le code de fonction pour les opérations d'écriture. Les valeurs valides dépendent du operateType spécifié.
  • coilStatus :
    • 5 : lecture et écriture (lecture : 0x01, écriture : 0x05)
    • 15 : lecture et écriture (lecture : 0x01, écriture : 0x0F)
    • 0 : lecture seule (lecture : 0x01)
  • inputStatus : 0 : lecture seule (lecture : 0x02)
  • holdingRegister :
    • 6 : lecture et écriture (lecture : 0x03, écriture : 0x06)
    • 16 : lecture et écriture (lecture : 0x03, écriture : 0x10)
    • 0 : lecture seule (lecture : 0x03)
  • inputRegister : 0 : lecture seule (lecture : 0x04)
writeOnly Integer Indique si l'opération est en écriture seule.
  • 0 : Pas en écriture seule.
    • Si writeFunctionCode n'est pas 0 (indiquant lecture et écriture), une valeur de 0 signifie que les opérations de lecture et d'écriture sont prises en charge.
    • Si writeFunctionCode est 0 (indiquant lecture seule), writeOnly doit être 0.
  • 1 : Écriture seule.

    Uniquement lorsque writeFunctionCode n'est pas 0 (indiquant lecture et écriture), writeOnly peut être 1 pour indiquer la prise en charge de l'écriture seule.

scaling Number Le facteur d'échelle. La valeur ne peut pas être 0.

Ce paramètre ne s'applique pas aux types de données string ou bool.

pollingTime Integer L'intervalle de collecte, en millisecondes (ms). Si ce paramètre n'est pas spécifié, l'intervalle de collecte par défaut de l'appareil est utilisé.
trigger Integer La méthode de rapport des données. 1 : Rapporte les données périodiquement. 2 : Rapporte les données lors d'un changement.
bitMask Integer Un paramètre spécifique au type de données bool.

Le masque. Valeurs valides : 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 et 32768. Ces valeurs correspondent à 1<<(0 à 15).

originalDataType Object Le type de données d'origine.
type String Le type de données d'origine. La valeur doit être l'un des types de base suivants : int16, uint16, int32, uint32, int64, uint64, float, double, string, bool ou données personnalisées (renvoie les données hexadécimales dans l'ordre big-endian).
specs Object Paramètres spécifiques à certains types de données.
registerCount Integer Un paramètre spécifique aux types de données string et personnalisés.

Le nombre de registres.

swap Integer Un paramètre pour tous les types de données sauf string et personnalisé.

Indique s'il faut échanger les octets de poids fort et de poids faible au sein d'un registre 16 bits (par exemple, byte1byte2 devient byte2byte1).

  • 0 : Ne pas échanger.
  • 1 : Échanger.
reverseRegister Integer Un paramètre pour tous les types de données sauf string et personnalisé.
Indique s'il faut inverser l'ordre des registres 16 bits au sein des données 32 bits (par exemple, byte1byte2byte3byte4 devient byte3byte4byte1byte2).
  • 0 : Ne pas inverser.
  • 1 : Inverser.

Type OPC UA

OPC UA prend en charge les informations étendues pour les propriétés, les services et les événements.

{
  "identifier":"extend2",
  "displayName":"Action",
  "inputData":[
    {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2 
    }
  ],
  "outputData":[
     {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2
    }
  ]
}
Parameter Type Description
identifier String Un identifiant unique pour la propriété, le service ou l'événement au sein d'un produit.
displayName String Le nom d'affichage. Ce paramètre est requis pour les propriétés et les événements, mais facultatif pour les services.
inputData List Les paramètres de données d'entrée.
outputData List Les paramètres de données de sortie.
identifier String Un identifiant unique pour un paramètre d'entrée ou de sortie au sein du produit.
index Integer Un index unique pour le paramètre au sein de sa liste parente (inputData ou outputData).

Type personnalisé

Le type personnalisé prend en charge les informations étendues pour les propriétés, les services et les événements.

{
  "identifier":"xxx",
  "customize":{}
}
Parameter Type Description
identifier String Un identifiant unique pour la propriété, le service ou l'événement au sein d'un produit.
customize Object Données personnalisées définies par l'utilisateur au format objet JSON.

Validation

Vous pouvez utiliser json-schema pour valider les paramètres d'entrée dans ThingModelJson.

Pour la définition du schéma, consultez schema.json.

L'exemple suivant montre comment effectuer la validation :

  • Pour télécharger la bibliothèque json-schema, ajoutez la dépendance suivante à votre projet Maven.

    <dependency>
        <groupId>com.github.everit-org.json-schema</groupId>
        <artifactId>org.everit.json.schema</artifactId>
        <version>1.11.0</version>
    </dependency>
  • Exemple de code :

    package com.aliyun.iot.thingmodel;
    import java.io.InputStream;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Arrays;
    import org.everit.json.schema.Schema;
    import org.everit.json.schema.ValidationException;
    import org.everit.json.schema.loader.SchemaLoader;
    import org.json.JSONObject;
    import org.json.JSONTokener;
    /**
     * @author: ***
     * @date: 2020-01-14 15:11
     */
    public class ThingModelJsonValidator {
        public static void main(String[] args) throws Exception {
            try (InputStream inputStream = new URL("https://iotx-thing-model-schema.oss-ap-southeast-1.aliyuncs.com/schema.json").openStream()) {
                JSONObject rawSchema = new JSONObject(new JSONTokener(inputStream));
                Schema schema = SchemaLoader.load(rawSchema);
                long start = System.currentTimeMillis();
                JSONObject object = new JSONObject();
                String jsonStr = "{\n"
                        + "\t\t\t\"productKey\": \"a1Q1Yrc****\",\n"
                        + "\t\t\t\"name\": \"Alert event\",\n"
                        + "\t\t\t\"identifier\": \"alarmEvent\",\n"
                        + "\t\t\t\"eventName\": \"Alert event\",\n"
                        + "\t\t\t\"eventType\": \"ALERT_EVENT_TYPE\",\n"
                        + "\t\t\t\"outputData\": [\n"
                        + "\t\t\t\t{\n"
                        + "\t\t\t\t\t\"paraOrder\": 0,\n"
                        + "\t\t\t\t\t\"direction\": \"PARAM_OUTPUT\",\n"
                        + "\t\t\t\t\t\"dataSpecsList\": [\n"
                        + "\t\t\t\t\t\t{\n"
                        + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\t\t\"name\": \"Anti-detachment alert\",\n"
                        + "\t\t\t\t\t\t\t\"value\": 0\n"
                        + "\t\t\t\t\t\t},\n"
                        + "\t\t\t\t\t\t{\n"
                        + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\t\t\"name\": \"Anti-detachment alert resolved\",\n"
                        + "\t\t\t\t\t\t\t\"value\": 1\n"
                        + "\t\t\t\t\t\t}\n"
                        + "\t\t\t\t\t],\n"
                        + "\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\"identifier\": \"alarmType\",\n"
                        + "\t\t\t\t\t\"name\": \"Alert type\",\n"
                        + "\t\t\t\t\t\"index\": 0,\n"
                        + "\t\t\t\t\t\"custom\": true\n"
                        + "\t\t\t\t}\n"
                        + "\t\t\t],\n"
                        + "\t\t\t\"outputParams\": [\n"
                        + "\t\t\t\t{\n"
                        + "\t\t\t\t\t\"index\": 0,\n"
                        + "\t\t\t\t\t\"identifier\": \"alarmType\"\n"
                        + "\t\t\t\t}\n"
                        + "\t\t\t],\n"
                        + "\t\t\t\"custom\": true\n"
                        + "\t\t}";
                object.put("properties", new ArrayList<>());
                object.put("services", new ArrayList<>());
                object.put("events", Arrays.asList(com.alibaba.fastjson.JSONObject.parseObject(jsonStr)));
                object.put("productKey", "a1Q1Yrc****");
                schema.validate(object); // throws a ValidationException if this object is invalid
                System.out.println(System.currentTimeMillis() - start);
            }
            catch (ValidationException exception) {
                System.out.println(exception);
            }
        }
    }

Rédaction de ThingModelJson

Utilisez Visual Studio Code pour rédiger ThingModelJson avec la prise en charge de la saisie semi-automatique.

  1. Accédez au site Web officiel de Visual Studio Code pour télécharger et installer la dernière version de Visual Studio Code.

  2. Ouvrez Visual Studio Code, cliquez sur le bouton Settings

    设置

    dans le coin inférieur gauche, puis sélectionnez

    .

  3. Dans l'onglet User Settings, choisissez Extensions > JSON. Sous Schemas, cliquez sur Edit in settings.json, ajoutez la configuration suivante et enregistrez le fichier.

     "json.schemas": [{
            "fileMatch": ["/.json"],
            "url": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    }]

    Après avoir enregistré la configuration, des invites de saisie semi-automatique apparaissent lorsque vous définissez un modèle d'objet.

    "$schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    ""
      events
      functionBlockId
      functionBlockName
      functionBlocks
      properties
      services