Configurez un analyseur de routage pour envoyer les données d'appareil traitées vers Lindorm. Cet exemple utilise un sujet de communication basé sur le langage TSL (Thing Specification Language) comme sujet source.
Prérequis
Une source de données nommée DataSource a été créée et un sujet de communication TSL y a été ajouté. Pour plus d'informations, consultez la rubrique Ajouter une source de données.
Une instance Lindorm a été créée dans la console Lindorm, avec des paramètres configurés selon vos besoins métier. Seules les instances Lindorm en mode pay-as-you-go et subscription sont prises en charge.
Le SDK Java natif pour LindormTSDB est intégré. Une base de données temporelle, une table ainsi qu'un compte avec son mot de passe associé pour la gestion de la base ont été créés. Le stockage des données temporelles sur plusieurs instances Lindorm est configuré. Pour plus d'informations, consultez le tutoriel Utiliser le SDK Java natif pour se connecter à LindormTSDB et l'utiliser.
Contexte
Une fois la destination de données configurée, le système applique automatiquement les paramètres suivants pour router les données des appareils vers Lindorm via le moteur de règles d'IoT Platform.
IoT Platform occupe deux adresses IP du vSwitch auquel l'instance Lindorm est connectée. Le bloc CIDR IPv4 du vSwitch est ajouté à la liste d'autorisation de l'instance Lindorm.
Un groupe de sécurité géré est créé dans le VPC où l'instance Lindorm est déployée. Le nom par défaut du groupe de sécurité commence par sg-nsm-.
Dans cet exemple, les données suivantes sont écrites dans la base de données temporelle :
timestamp : appelle la fonction timestamp() pour obtenir l'horodatage correspondant au moment où l'appareil soumet les données.
tags : appelle la fonction
deviceName()pour récupérer le DeviceName. Le tag{"device_id": deviceName(), "region": "cn-shanghai"}est écrit dans la base de données.fields : utilise des expressions JSONPath pour extraire les valeurs des propriétés Temperature et Humidity soumises par l'appareil. Ces valeurs sont ensuite écrites dans la base de données.
Limites
Seule la nouvelle version de la fonctionnalité de routage des données prend en charge le routage vers Lindorm. Actuellement, seul le moteur de séries temporelles de Lindorm est pris en charge comme destination.
-
Régions prises en charge
Cette fonctionnalité est disponible uniquement dans certaines régions où IoT Platform est hébergée. Pour obtenir la liste détaillée des régions prises en charge, consultez la rubrique Disponibilité des fonctionnalités par région.
Votre instance Lindorm doit être déployée dans la même région que votre instance IoT Platform.
RemarqueDans la région Chine (Shanghai), cette fonctionnalité n'est pas disponible dans la zone de disponibilité B (cn-shanghai-b). Elle est disponible dans les zones de disponibilité F (cn-shanghai-f) et G (cn-shanghai-g).
Créer une destination de données
Connectez-vous à la console IoT Platform.
Sur la page Overview, repérez l'instance à gérer et cliquez sur son ID ou son nom.
Dans le volet de navigation de gauche, choisissez .
-
Sur la page Data Forwarding, cliquez sur Go to New Version en haut à droite.
RemarqueSi vous avez déjà effectué cette opération, vous êtes automatiquement redirigé vers la nouvelle version de la page Data Forwarding.
Cliquez sur l'onglet Data destination, puis sur Create data destination.
-
Dans la boîte de dialogue Create Data Destination, saisissez un nom pour la destination de données, par exemple DataPurpose. Configurez les autres paramètres, puis cliquez sur OK. Le tableau suivant décrit les paramètres.
Parameter
Description
Operation
Sélectionnez Store Data to ApsaraDB for Lindorm.
Authorize
Cliquez sur Authorize. Le système crée automatiquement un rôle et une politique autorisant IoT Platform à écrire des données dans Lindorm. Pour plus d'informations, consultez la rubrique AliyunServiceRoleForIoTRuleengineLindorm.
RemarqueSi IoT Platform est déjà autorisé, ignorez cette étape.
Region
La région où réside l'instance IoT Platform.
Engine Type
Sélectionnez Time Series Engine.
Lindorm Instance
L'instance Lindorm que vous avez créée dans un VPC.
Database
Le nom de la base de données destinée à recevoir les données. La base de données doit appartenir à l'instance Lindorm.
Table Name
Le nom de la table destinée à recevoir les données. La table doit appartenir à la base de données.
Account
Le nom du compte et le mot de passe pour la gestion de la base de données temporelle.
Pour plus d'informations sur les comptes de gestion de base de données et les mots de passe, consultez la rubrique User and permission management.
Password
Configurer et démarrer un analyseur
Créez un analyseur, par exemple DataParser. Pour plus d'informations, consultez la section Étape 1 : Créer un analyseur.
-
Sur la page Resolver Details, associez la source de données.
Dans l'assistant de configuration, sous Data Source, cliquez sur Associate Data Source.
Dans la boîte de dialogue, sélectionnez DataSource dans la liste déroulante Data Source et cliquez sur OK.
-
Sur la page Resolver Details, vous pouvez associer des destinations de données.
Dans l'assistant de configuration, cliquez sur Data Destination. Ensuite, dans l'angle supérieur droit de la liste Data Destination, cliquez sur Associate Data Destination.
Dans la boîte de dialogue qui s'affiche, sélectionnez DataPurpose dans la liste déroulante Data Destination et cliquez sur OK.
-
Dans la liste des destinations de données, repérez l'Data Destination ID et notez-le. Par exemple : 1000.
Vous aurez besoin de cet Data Destination ID dans le script d'analyse.
Sur la page parser details, cliquez sur l'onglet Parser Script.
-
Dans l'éditeur de code, saisissez un script. Pour savoir comment modifier un script, consultez la section Syntaxe des scripts.
Pour plus d'informations sur les paramètres de fonction, consultez la liste des fonctions.
// Call the payload() function to obtain the data that is submitted by a device and convert the data to JSON-formatted data. var data = payload("json"); // Filter the submitted temperature and humidity values. var h = data.items.Humidity.value; var t = data.items.Temperature.value; var fields = {"temperature":t, "humidity":h}; var tags = {"device_id": deviceName(), "region": "cn-shanghai"}; var timestamp = timestamp(); // Forward the submitted TSL data. writeLindorm(1000, timestamp, tags, fields);RemarqueSi le type de données du champ correspondant dans la table de la base de données Lindorm est Double, mais que l'appareil soumet les valeurs d'humidité sous forme d'INT, utilisez le code suivant pour convertir le champ en Double afin d'assurer le succès du routage des données :
varfields={ "temperature":t, "humidity":{ "type":"DOUBLE", "value":h } }; -
Cliquez sur Debugging. Dans la boîte de dialogue qui s'affiche, sélectionnez un produit et un appareil, spécifiez un sujet, puis saisissez les données de charge utile (payload) pour vérifier si le script s'exécute comme prévu.
La figure suivante présente les paramètres.

Le résultat suivant indique que le script a été exécuté :

Cliquez sur Publish.
Revenez à l'onglet Resolver de la page Data Forwarding et cliquez sur Start pour l'analyseur DataParser.
-
Simulez la soumission de données TSL par l'appareil et consultez le résultat du routage des données. Pour plus d'informations, consultez la rubrique Simulation d'appareil.
Une fois que les données simulées de l'appareil ont été routées vers la base de données temporelle Lindorm, vous pouvez appeler l'opération de requête d'un SDK LindormTSDB pour récupérer les données routées.