Tous les produits
Search
Centre de documentation

IoT Platform:Syntaxe du script

Dernière mise à jour :Aug 10, 2026

Le parseur IoT Platform traite les données de messages complexes pour la communication entre les services cloud. Il extrait le contenu des messages, convertit les formats de données, traite les chaînes, les données JSON et les données binaires, puis transfère ces données vers d'autres services.

Informations générales

IoT Platform traite et transmet les données en fonction des formats définis dans les topics. Pour plus d'informations, consultez la rubrique Formats de données.

Le parseur utilise une syntaxe similaire à JavaScript. Vous pouvez rédiger des scripts basés sur cette syntaxe, mais toutes les fonctionnalités de JavaScript ne sont pas prises en charge. Les sections suivantes expliquent comment écrire un script.

Écriture d'un script

Pour écrire un script, procédez comme suit :

  1. Utilisez la fonction payload() pour extraire les données soumises par les appareils, puis convertissez-les au format JSON.

    var data = payload("json");
    Important

    Les données soumises que vous souhaitez analyser doivent être converties en tableaux JSON ou en données JSON imbriquées.

  2. Définissez un champ et attribuez-lui la valeur de propriété extraite du payload.

    • Pour plus d'informations sur la définition des champs à l'aide d'identifiants et la configuration des types de données, reportez-vous aux sections « Identifiants » et « Types de données ».

    • Utilisez des expressions JSONPath ou la fonction getOrNull() pour extraire les valeurs des champs. Pour en savoir plus, consultez les pages LanguageManual UDF et getOrNull().

      Par exemple, dans le script ci-dessous, utilisez getOrNull(data, "items", "Humidity", "value"); pour obtenir la valeur 25, data.items.Temperature.value pour obtenir la valeur 38, et data.iotId pour obtenir la valeur JCp9***.

    Important

    Lorsque vous utilisez le script pour extraire une valeur de champ spécifique à partir des données soumises par l'appareil :

    • Si l'identifiant du champ commence par un chiffre, vous devez impérativement utiliser la fonction getOrNull(). Les expressions JSONPath ne sont pas prises en charge. Par exemple, dans le script d'exemple, seule la fonction getOrNull(data, "items", "2Co", "value") permet d'obtenir la valeur 10 du champ 2Co. L'expression data.items.2Co.value n'est pas valide.

    • Si le champ n'existe pas dans les données soumises par l'appareil, l'un des scénarios suivants peut se produire :

      • Si vous utilisez la fonction getOrNull(), la valeur null est renvoyée et l'exécution du script se poursuit.

      • Si vous utilisez une expression JSONPath, une erreur de pointeur nul survient et l'exécution du script s'arrête.

    Vous pouvez également traiter les données ou effectuer des calculs selon vos besoins métier. Pour connaître la liste des opérateurs et des fonctions pris en charge, consultez les rubriques Opérateurs et Liste des fonctions.

  3. Utilisez des fonctions pour transférer les données.

    Pour plus d'informations, consultez la rubrique Fonctions de transfert de données vers les destinations.

    Utilisez également des instructions de contrôle pour définir des conditions de transfert de données. Dans l'exemple de script ci-dessous, l'instruction if définit une condition. Pour plus d'informations sur les instructions de contrôle prises en charge, reportez-vous à la section « Instructions de contrôle ».

Exemple de script

Voici un exemple de données de propriétés soumises :

{
    "deviceType": "CustomCategory",
    "iotId": "JCp9***",
    "requestId": "1626948228247",
    "checkFailedData": {

    },
    "productKey": "a1o***",
    "gmtCreate": 1626948134445,
    "deviceName": "Device1",
    "items": {
        "Temperature": {
            "value": 38,
            "time": 1626948134319
        },
        "Humidity": {
            "value": 25,
            "time": 1626948134319
        },
        "2Co": {
            "value": 10,
            "time": 1626948134319
        }
    }
}

Le script suivant analyse et traite les données soumises :

// Use the payload() function to obtain the data that is submitted by devices and convert the data to JSON-formatted data. 
var data = payload("json"); 
// Filter the submitted temperature and humidity values. 
var h = getOrNull(data, "items", "Humidity", "value");
var t = data.items.Temperature.value;
var c = getOrNull(data, "items", "2Co", "value");
// Configure a data forwarding rule. If the temperature value is greater than 38, the rule is triggered to send data to ApsaraDB RDS. 
// An ApsaraDB RDS table includes the following columns: id (auto-increment primary key), deviceName, temperature, humidity, 2Co, and time. You can call the writeRds() method and specify multiple <Column name>:<Value> pairs in the method to write the values to the specified columns. 
if (t > 38) { 
    writeRds(1000, {"deviceName":deviceName(), "temperature":t, "humidity":h, "2Co":c, "time":timestamp()});  
}

Identifiants

Les identifiants servent à définir des constantes, des variables et des champs personnalisés dans le script. Un identifiant peut contenir des lettres, des chiffres et des traits de soulignement (_), mais il ne peut pas commencer par un chiffre.

Les mots-clés et mots réservés suivants ne peuvent pas être utilisés comme identifiants :

  • Mots-clés : for, break, continue, if, else, true, false, var, new, null et return.

  • Mots réservés : breakdo, instanceof, typeof, case, catch, finally, void, switch, while, debugger, function, this, with, default, throw, delete, in, try, as, from, classenum, extends, super, const, export, import, await, implementslet, let, private, public, interface, package, protected, static et yield.

Types de données

Le script prend en charge les types de données suivants pour les constantes, les variables et les champs personnalisés : nombre, booléen, chaîne, octet, map et tableau.

Les constantes peuvent avoir la valeur null. Les types de constantes numériques pris en charge incluent les entiers décimaux, les entiers hexadécimaux et les nombres à virgule flottante.

Instructions de contrôle

IoT Platform prend en charge les instructions for et if...else. Les instructions for prennent en charge les mots-clés break et continue.

Important

Si vous utilisez une instruction for pour exécuter plusieurs fois une fonction de transfert de données, le nombre d'itérations ne doit pas dépasser 100. Pour plus d'informations sur les fonctions de transfert de données, consultez la rubrique Fonctions de transfert de données vers les destinations.

Opérateurs

  • Opérateurs logiques : && et ||.

    Dans les conditions logiques, une valeur null est évaluée comme fausse, tandis que toutes les autres valeurs sont évaluées comme vraies. Par exemple, null && "x" renvoie faux, et null || "x" renvoie vrai.

  • Opérateurs mathématiques : *, /, %, + et -.

    Seuls les types de données numériques sont pris en charge. L'utilisation d'autres types provoque une erreur.

  • Opérateurs de comparaison : >, =>, <, <=, == et !=. L'opérateur de comparaison == ne prend en charge que les valeurs numériques.

Commentaires

Le script prend en charge les commentaires multilignes (/* ${comments}*/) et les commentaires sur une seule ligne (// ${comments}).

Références

  • Pour consulter la liste des fonctions prises en charge, reportez-vous à la rubrique Liste des fonctions.

  • Pour découvrir d'autres exemples de configuration de scripts de parseur afin de transférer des données, consultez le répertoire Exemples de transfert de données.