# Luau arrive dans Analysis

> Découvrez Luau pour Analysis : traitez les mesures enregistrées, mettez à jour des entities et gérez les accès par des politiques, sans Analysis Token.

![Luau arrive dans Analysis](https://tago.io/og/fr/blog/introducing-luau-analysis-runtime.png)

Luau est désormais disponible pour Analysis dans TagoIO. Écrivez des scripts Luau qui lisent les données d'appareils enregistrées, calculent de nouvelles valeurs et sauvegardent les résultats grâce à des fonctions intégrées. Votre code s'exécute sur TagoIO, sans SDK à ajouter ni Analysis Token à gérer.

La dernière mesure d'un capteur ne suffit pas toujours. Vous pouvez avoir besoin de la moyenne des températures récentes, d'un cumul ou d'un état calculé à partir de plusieurs mesures. Luau est conçu pour ces petites tâches fréquentes qui exploitent des données déjà présentes dans TagoIO. Le script effectue le calcul ; Access Management contrôle les ressources auxquelles il peut accéder.

## Transformez les mesures enregistrées en valeurs utiles

Un capteur de serre enregistre des températures de 24, 26 et 28 °C. Une Analysis Luau peut lire ces mesures, calculer leur moyenne et enregistrer 26 °C sur l'appareil sous la variable `temperature_avg`, tout en conservant les mesures d'origine.

![Une Analysis Luau lit les températures enregistrées de 24, 26 et 28 °C, calcule leur moyenne de 26 °C et écrit temperature_avg sur l'appareil](https://tago.io/images/blog/introducing-luau-analysis-runtime/data-flow.svg)

Les fonctions intégrées `Devices` gèrent l'accès aux appareils et les opérations sur leurs données. `Entities` lit et écrit les lignes des entities, et `Analysis.list` trouve les Analysis autorisées par votre politique. Ces opérations ne demandent aucun client API distinct à configurer.

D'autres tâches utiles suivent le même principe :

- Calculer la consommation d'eau à partir des comptages d'impulsions enregistrés et sauvegarder le résultat en litres.
- Comparer les mesures récentes à un seuil et écrire une variable `status` sur l'appareil.
- Enregistrer une mesure calculée dans une ligne d'entity ou mettre à jour une ligne existante.
- Lire les paramètres de configuration d'un appareil et modifier les réglages d'un groupe d'appareils autorisé.

Utilisez un Payload Parser si vous avez seulement besoin de transformer le payload entrant d'un appareil. Choisissez une Analysis Luau si la tâche nécessite aussi des données enregistrées, des écritures supplémentaires ou des modifications des réglages de l'appareil.

## Exploitez les résultats de façon synchrone

Les appels Luau aux appareils et aux entities renvoient leurs résultats directement à votre script. Lisez les données, calculez une valeur et enregistrez-la dans cet ordre, sans écrire de chaînes de Promise ni de callbacks. Dans l'exemple de la serre, le calcul de la moyenne utilise le résultat de la lecture terminée, et l'écriture s'achève avant que le script ne continue.

Une exécution synchrone n'implique pas une latence nulle. La lecture des données et les calculs prennent du temps, et les déclenchements habituels d'Analysis hébergées ne renvoient pas le résultat du script à l'appelant.

**Mise à jour du 15 octobre 2026 :** les [Analysis Endpoints](https://tago.io/blog/introducing-analysis-endpoints) offrent aux Analysis Luau un échange HTTP synchrone entre requête et réponse. L'appelant attend la fin du script et reçoit sa réponse dans la même requête. Validez une entrée, calculez une valeur ou lisez les données d'un appareil, puis renvoyez le résultat dès que le script se termine, au lieu de demander à l'application de le récupérer plus tard.

## Comparez la vitesse des runtimes sur une même tâche

Comparaison du traitement de données de capteurs avec différents runtimes :

Temps d'exécution médian

| Runtime | 1 000 relevés | 100 000 relevés |
| --- | --- | --- |
| Luau 0.728 | 0,74 ms | 30,60 ms |
| Bun 1.4.2 | 19,21 ms | 27,49 ms |
| Deno 2.4.4 | 30,63 ms | 37,87 ms |
| Node.js 24.21.0 | 29,74 ms | 37,98 ms |
| Python 3.13 | 69,70 ms | 138,52 ms |

Chaque runtime utilise la version hébergée par TagoIO. Luau s'exécute directement dans TagoIO sans lancer de processus séparé : ses temps ne couvrent donc que le script. Les autres runtimes lancent un nouveau processus à chaque exécution, et ce démarrage représente l'essentiel de leur temps avec 1 000 relevés.

## Des règles d'accès, sans token

Une Analysis Luau reçoit ses permissions d'une [politique Access Management](https://docs.tago.io/docs/tagoio/analysis/luau-runtime#permissions), et non d'un Analysis Token. Ciblez l'Analysis directement ou par l'un de ses tags, puis autorisez les actions nécessaires sur les ressources concernées.

![Access Management autorise une Analysis Luau à lire et écrire sur le capteur de la serre tout en bloquant l'accès à un autre appareil, sans Analysis Token](https://tago.io/images/blog/introducing-luau-analysis-runtime/permissions.svg)

Pour calculer la moyenne de la serre, accordez les permissions de récupérer le capteur, de lire ses données et d'écrire la valeur calculée. Ces permissions ne donnent pas accès à un autre appareil. Toute lecture ou écriture sans la permission requise est bloquée.

## Gardez chaque script centré sur sa tâche

Luau s'exécute uniquement sur TagoIO. Il ne dispose ni d'accès sortant à Internet, ni de bibliothèques externes, ni d'accès aux fichiers, et ne peut pas envoyer directement d'e-mails, de SMS ou de notifications.

Choisissez Luau pour de petites tâches qui se limitent aux opérations intégrées sur les appareils, les entities et les Analysis, comme calculer la moyenne de mesures et enregistrer le résultat. Choisissez [Bun](https://tago.io/blog/introducing-bun-analysis-runtime) si le script nécessite une API externe, un package ou d'autres ressources TagoIO.

Si une valeur calculée doit déclencher une action externe, confiez cette étape à une Analysis auxiliaire en Deno, Node.js ou Python. Par exemple, le script de la serre peut lancer une Analysis de notification uniquement lorsque la moyenne dépasse un seuil. `Analysis.run` lance l'Analysis auxiliaire sans attendre qu'elle se termine et nécessite la permission **Run Analysis** sur la cible. Cette fonction ne peut pas lancer une autre Analysis Luau.

Les exécutions Luau ne sont pas décomptées de la [limite mensuelle Analysis Service](https://docs.tago.io/docs/tagoio/profiles/services/analysis-service). Les opérations sur les appareils et les entities restent soumises aux limites applicables aux services, aux ressources et à la fréquence des requêtes. Le runtime impose aussi des limites de durée d'exécution, de mémoire et de taille de payload ; consultez les [limites de Luau](https://docs.tago.io/docs/tagoio/analysis/luau-runtime#limits) pour dimensionner une tâche.

## Pour commencer

Créez une Analysis et préparez un appareil de test contenant des mesures numériques exprimées dans la même unité.

1. Dans [Admin](https://admin.tago.io), créez une Analysis et sélectionnez **Luau** (`luau-rt2026`) dans **Runtime**.
2. Configurez sa politique Access Management avant d'exécuter des opérations sur les appareils ou les entities.
3. Ouvrez le Script Editor et utilisez l'[exemple Luau](https://docs.tago.io/docs/tagoio/analysis/luau-runtime#writing-a-luau-analysis). Conservez les identifiants d'appareils et les réglages dans des variables d'environnement.
4. Enregistrez le script et cliquez sur **Run**. Examinez les valeurs enregistrées et la sortie de la console. Utilisez `print(...)` pour les logs ; les erreurs d'arguments indiquent l'option invalide.

Si vous migrez du code existant, lisez d'abord les [avertissements sur le changement de runtime](https://docs.tago.io/docs/tagoio/analysis/creating-analysis#runtime) : le passage à Luau supprime l'Analysis Token existant.

Consultez le [guide du runtime Luau](https://docs.tago.io/docs/tagoio/analysis/luau-runtime) pour connaître les fonctions prises en charge et les [notes de version du 16 septembre](https://changelog.tago.io/server/v10-4-0/) pour l'annonce.

[llms.txt](https://tago.io/llms.txt)
