La fonctionnalité de transfert de données du moteur de règles d'IoT Platform vous permet de transférer les données d'un topic spécifié vers d'autres topics ou vers d'autres services Alibaba Cloud. Cette rubrique explique comment configurer une règle de transfert de données. Pour ce faire, suivez les étapes ci-dessous : créez une règle, rédigez une instruction SQL pour le traitement des données, spécifiez une destination de transfert, puis définissez une destination pour les messages d'erreur en cas d'échec du transfert.
Procédure
Connectez-vous à la console IoT Platform.
Sur la page Overview, repérez l'instance que vous souhaitez 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 Create Rule.
ImportantSi la page Data Forwarding de la dernière version s'affiche, cliquez sur Back to Previous Version dans le coin supérieur droit de la page. Lorsque la page Data Forwarding de la version précédente apparaît, cliquez sur Create Rule.
-
Configurez les paramètres, puis cliquez sur OK. Le tableau suivant décrit les paramètres.
Parameter
Description
Rule Name
Le nom de la règle de transfert de données. Il doit comporter entre 1 et 30 caractères et peut contenir des lettres, des chiffres, des traits de soulignement (_) et des traits d'union (-).
Data Type
Le format des données à traiter par la règle. Les valeurs valides sont : JSON et Binary.
Remarque-
La fonctionnalité de transfert de données traite les données en fonction des topics. Vous devez sélectionner le format des données présentes dans les topics que vous souhaitez traiter.
-
Si vous sélectionnez Binary, la règle ne peut pas être utilisée pour traiter les messages provenant des topics de communication de base ou des topics de communication Thing Specification Language (TSL). La règle ne peut pas non plus être utilisée pour transférer des données vers Tablestore (OTS) ou ApsaraDB RDS.
Rule Description
La description de la règle.
-
-
Une fois la règle créée, la page rule details s'affiche. Rédigez une instruction SQL pour traiter les messages, spécifiez une destination de transfert de données, puis indiquez la destination vers laquelle les messages d'erreur seront envoyés.
-
Cliquez sur Write SQL Statement pour rédiger une instruction SQL. Celle-ci sert à traiter les champs des messages.
Pour plus d'informations sur la rédaction d'instructions SQL, consultez les rubriques Instructions SQL et Fonctions.
Parameter
Description
Rule Query Expression
L'instruction SQL. Elle est générée automatiquement en fonction des valeurs que vous spécifiez pour les paramètres Field, Topic et Conditions (Optional).
Field
Le champ du message à traiter. Ce paramètre suit le mot-clé SELECT de l'instruction SQL.
Par exemple, si vous saisissez deviceName() as deviceName, le champ deviceName du message est sélectionné. Pour plus d'informations sur les fonctions utilisables dans le champ, consultez la rubrique Functions.
RemarqueLes données des topics de communication de base et des topics de communication TSL sont au format Alink JSON. Avant d'être transférées vers le moteur de règles, les données sont analysées en fonction du modèle TSL correspondant. Pour plus d'informations sur l'analyse des données, consultez la rubrique Procédure de transfert de données. Pour connaître les formats des données analysées, reportez-vous à la rubrique Formats de données. Lors de la rédaction d'une instruction SQL, spécifiez les champs en fonction du format des données analysées.
Topic
Le topic source du message à traiter. Ce paramètre suit le mot-clé FROM de l'instruction SQL. Pour plus d'informations sur les topics disponibles, consultez le tableau Topics ci-dessous.
ImportantSi vous définissez le paramètre Data Type de la règle sur Binary, définissez ce paramètre sur Custom.
Condition
La condition de déclenchement de la règle. Ce paramètre suit le mot-clé WHERE de l'instruction SQL.
Tableau 1. Topics Topic
Description
References
Custom
Le topic utilisé pour transférer des données dans des formats personnalisés. Le format de ce topic est identique à celui d'un topic personnalisé. Format : /${productKey}/${deviceName}/user/${TopicShortName}.
${TopicShortName} spécifie une catégorie de topic personnalisé, qui correspond au suffixe du topic personnalisé.
La valeur peut contenir des caractères génériques, notamment des signes plus (+) et des dièses (#).
-
Tous les équipements (+) : indique tous les appareils du produit spécifié.
-
/user/# : indique tous les topics de l'appareil spécifié.
Device Status Change Notification
Le topic utilisé pour transférer les notifications lorsque le statut d'un appareil passe de en ligne à hors ligne (et vice versa). Format : /as/mqtt/status/${productKey}/${deviceName}.
TSL Data Reporting
Les topics suivants sont fournis :
-
/${productKey}/${deviceName}/thing/event/property/post : ce topic est utilisé pour transférer les propriétés de l'appareil.
-
/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post : ce topic est utilisé pour transférer les événements de l'appareil.
-
/${productKey}/${deviceName}/thing/property/batch/post : ce topic est utilisé pour transférer les propriétés de l'appareil par lots.
-
/${productKey}/${deviceName}/thing/event/batch/post : ce topic est utilisé pour transférer les événements de l'appareil par lots.
-
/${productKey}/${deviceName}/thing/downlink/reply/message : ce topic est utilisé pour transférer les messages qu'un appareil renvoie en réponse aux commandes d'IoT Platform.
Les topics suivants sont utilisés pour soumettre les données brutes de l'appareil :
-
/sys/${productKey}/${deviceName}/thing/event/property/post: ce topic est utilisé pour soumettre les propriétés de l'appareil. -
/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/postet/sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:{tsl.event.identifier}/post: ces topics sont utilisés pour soumettre les événements de l'appareil. -
/sys/${productKey}/${deviceName}/thing/event/property/batch/post: ce topic est utilisé pour soumettre les propriétés et les événements de l'appareil par lots.
Device Changes Throughout Lifecycle
Le topic utilisé pour transférer les messages lors de la création, de la suppression, de la désactivation ou de l'activation d'un appareil. Format :
/${productKey}/${deviceName}/thing/lifecycle.Sub-Device Data Report Detected by Gateway
Le topic utilisé pour soumettre et transférer les informations relatives à un nouveau sous-appareil lorsqu'une passerelle le détecte. Ce topic est spécifique aux passerelles. Format : /${productKey}/${deviceName}/thing/list/found
Device Topological Relation Changes
Le topic utilisé pour transférer les notifications lorsque les relations topologiques entre les sous-appareils et la passerelle sont créées ou supprimées. Ce topic est spécifique aux passerelles. Format : /${productKey}/${deviceName}/thing/topo/lifecycle.
/sys/${productKey}/${deviceName}/thing/topo/change: ce topic est utilisé pour soumettre les données de l'appareil.Notifier les passerelles des changements de relations topologiques
Device tag change
Le topic utilisé pour transférer les messages lorsque les tags d'appareil sont modifiés. Format : /${productKey}/${deviceName}/thing/deviceinfo/update.
/sys/${productKey}/${deviceName}/thing/deviceinfo/update: ce topic est utilisé pour soumettre les données de l'appareil.TSL Historical Data Reporting
Les topics suivants sont fournis :
-
/${productKey}/${deviceName}/thing/event/property/history/post: ce topic est utilisé pour transférer les propriétés historiques. -
/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/history/post: ce topic est utilisé pour transférer les événements historiques.
/sys/${productKey}/${deviceName}/thing/event/property/history/post: ce topic est utilisé pour soumettre les données TSL historiques.Device status notification
Les topics suivants sont fournis :
-
/${productKey}/${deviceName}/ota/upgrade : ce topic est utilisé pour transférer les résultats de mise à jour over-the-air (OTA).
-
/${productKey}/${deviceName}/ota/progress/post : ce topic est utilisé pour transférer la progression des mises à jour.
Les topics précédents correspondent au topic suivant : /ota/device/progress/${productKey}/${deviceName}. Ce topic est utilisé pour soumettre la progression de la mise à jour.
Submit a module version number
Le topic utilisé pour transférer les messages lorsque le numéro de version d'un module OTA d'un appareil change. Format : /${productKey}/${deviceName}/ota/version/post.
Le topic précédent correspond au topic suivant : /ota/device/inform/${productKey}/${deviceName}. Ce topic est utilisé pour soumettre le numéro de version d'un module OTA.
Batch status notification
Le topic vers lequel IoT Platform envoie des messages lorsque le statut d'un lot de mise à jour OTA change. Format : /${productKey}/${packageId}/${jobId}/ota/job/status.
Job Event
/sys/uid/${uid}/distribution/${jobId}/lifecycle: le topic utilisé pour transférer les notifications lorsque le statut d'une tâche d'appareil change.RemarqueLe nom de la tâche de migration d'instance est identique au nom du produit dont vous souhaitez migrer les données.
Soumettre les données de statut des tâches de migration de données pour les instances
-
-
Dans la section Digital twin node property changes, cliquez sur Forward Data pour spécifier une destination de transfert de données. Pour plus d'informations sur la configuration de la fonctionnalité de transfert de données, consultez les rubriques associées dans le répertoire Exemples de transfert de données.
RemarqueVous pouvez créer jusqu'à 10 opérations de transfert de données par règle.
En cas d'échec du transfert de données dû à des exceptions dans le service cloud de destination, IoT Platform effectue l'une des opérations suivantes :
Lorsqu'IoT Platform transfère des données vers des services cloud tels que Message Queue for Apache RocketMQ, ApsaraDB RDS et ApsaraDB for Lindorm, l'accès à ces services peut échouer en raison de modifications des ressources. Dans ce cas, IoT Platform arrête le transfert de données et fait passer le statut de la règle concernée à Add Operation. Vous devez spécifier une nouvelle destination pour le transfert de données.
Pour les autres exceptions, IoT Platform effectue trois tentatives avec des intervalles de 1 seconde, 3 secondes et 10 secondes. La politique de nouvelle tentative peut varier selon le scénario. Si toutes les tentatives échouent, le message est ignoré. Si votre activité exige une fiabilité élevée des messages, vous pouvez ajouter une opération d'erreur et transférer les messages d'erreur vers d'autres services cloud.
-
Dans la section Forward Error Data, cliquez sur Abnormal. Configurez ensuite les paramètres afin de transférer les messages d'erreur vers la destination spécifiée après l'échec de toutes les tentatives.Add Error Operation
ImportantVous ne pouvez ajouter qu'une seule opération de gestion des erreurs par règle.
Une opération normale et une opération de gestion des erreurs ne peuvent pas transférer des messages vers la même destination. Par exemple, il est impossible de transférer simultanément les données normales et les données d'erreur vers OTS.
Si le transfert d'un message d'erreur échoue, aucune nouvelle tentative n'est effectuée.
Des messages d'erreur sont générés uniquement si le moteur de règles échoue à transférer les données en raison de problèmes liés à d'autres services cloud.
Si le transfert d'un message vers un service cloud échoue, IoT Platform tente de le transférer à nouveau. En cas d'échec de la nouvelle tentative, un message d'erreur est transféré selon l'opération d'erreur que vous avez spécifiée pour le transfert de données.
Exemple de message d'erreur :
{ "ruleName":"", "topic":"", "productKey":"", "deviceName":"", "messageId":"", "base64OriginalPayload":"", "failures":[ { "actionType":"OTS", "actionRegion":"cn-shanghai", "actionResource":"table1", "errorMessage":"" }, { "actionType":"RDS", "actionRegion":"cn-shanghai", "actionResource":"instance1/table1", "errorMessage":"" } ] }Le tableau suivant décrit les paramètres des messages d'erreur.
|
**Parameter**
|
**Description**
| | --- | --- | |
ruleName
|
Le nom de la règle de surveillance.
| |
topic
|
Le topic source du message.
| |
productKey
|
Le ProductKey du produit.
| |
deviceName
|
Le DeviceName de l'appareil.
| |
messageId
|
L'ID du message envoyé par IoT Platform.
| |
base64OriginalPayload
|
Les données brutes encodées en Base64.
| |
failures
|
Les détails de l'erreur. Plusieurs erreurs peuvent se produire.
| |
actionType
|
Le type de l'opération ayant échoué.
| |
actionRegion
|
La région où l'erreur s'est produite.
| |
actionResource
|
Le service de destination dans lequel l'erreur s'est produite.
| |
errorMessage
|
Le message d'erreur.
|
-
-
Accédez à la page . Repérez la règle que vous avez configurée et cliquez sur Data Forwarding dans la colonne Actions. Une fois la règle activée, les données sont transférées conformément à celle-ci.
Vous pouvez également effectuer des opérations spécifiques sur la règle. Le tableau suivant décrit ces opérations.
Operation
Description
View
Cliquez sur Start dans la colonne Actions pour accéder à la page Data Forwarding Rule. Modifiez ensuite les paramètres de la règle. Par exemple, vous pouvez changer ou supprimer le topic source de données ou la destination de transfert de données.
Delete
Cliquez sur Delete dans la colonne Actions pour supprimer la règle.
ImportantVous ne pouvez pas supprimer une règle dont le statut est Running.
Stopped
Cliquez sur Stop dans la colonne Actions pour désactiver la règle.
AvertissementSi une ou plusieurs de vos applications doivent utiliser les données d'appareil transférées via une règle, mais que cette règle est supprimée ou désactivée, ou que la destination de transfert de données de la règle est supprimée, vos services peuvent devenir indisponibles. Cela risque d'interrompre votre activité. Agissez avec prudence.
Étapes suivantes
Sur la page View, vous pouvez consulter le statut de la règle, vérifier si une destination de transfert de données est configurée et s'assurer que les données sont correctement transférées vers la destination prévue.