# Luau für Analysis ist da

> Luau für Analysis: gespeicherte Gerätemesswerte verarbeiten, Entities aktualisieren und den Zugriff über Richtlinien steuern, ohne ein Analysis Token zu verwalten.

![Luau für Analysis ist da](https://tago.io/og/de/blog/introducing-luau-analysis-runtime.png)

Luau ist jetzt für Analysis in TagoIO verfügbar. Schreiben Sie Luau-Skripte, die gespeicherte Gerätedaten lesen, neue Werte berechnen und die Ergebnisse mit integrierten Hilfsfunktionen speichern. Ihr Code läuft auf TagoIO, ohne dass Sie ein SDK einbinden oder ein Analysis Token verwalten müssen.

Der letzte Messwert eines Sensors reicht nicht immer aus. Vielleicht benötigen Sie den Durchschnitt der letzten Temperaturmessungen, eine laufende Summe oder einen Status, der aus mehreren Messwerten berechnet wird. Luau ist für solche kleinen, häufigen Aufgaben gedacht, die mit bereits in TagoIO gespeicherten Daten arbeiten. Das Skript übernimmt die Berechnung; Access Management bestimmt, auf welche Ressourcen es zugreifen darf.

## Gespeicherte Messwerte in nützliche Werte umwandeln

Ein Sensor im Gewächshaus zeichnet Temperaturen von 24, 26 und 28 °C auf. Eine Luau-Analysis kann diese Datensätze lesen, ihren Durchschnitt berechnen und 26 °C als `temperature_avg` beim Gerät speichern. Die ursprünglichen Messwerte bleiben erhalten.

![Eine Luau-Analysis liest gespeicherte Temperaturen von 24, 26 und 28 °C, berechnet den Durchschnitt von 26 °C und schreibt temperature_avg in das Gerät](https://tago.io/images/blog/introducing-luau-analysis-runtime/data-flow.svg)

Die integrierten `Devices`-Funktionen übernehmen den Gerätezugriff und die Datenoperationen. `Entities` liest und schreibt Entity-Zeilen, und `Analysis.list` findet die Analyses, auf die Ihre Richtlinie den Zugriff erlaubt. Für diese Operationen müssen Sie keinen separaten API-Client konfigurieren.

Weitere nützliche Aufgaben folgen demselben Muster:

- Den Wasserverbrauch aus gespeicherten Impulszählerständen berechnen und das Ergebnis in Litern speichern.
- Aktuelle Messwerte mit einem Schwellenwert vergleichen und eine Variable `status` in das Gerät schreiben.
- Einen berechneten Messwert in einer Entity-Zeile speichern oder eine bestehende Zeile aktualisieren.
- Konfigurationsparameter von Geräten lesen und Einstellungen für eine freigegebene Gerätegruppe aktualisieren.

Verwenden Sie einen Payload Parser, wenn Sie nur eingehende Geräte-Payloads umwandeln müssen. Wählen Sie eine Luau-Analysis, wenn Sie dafür auch gespeicherte Daten benötigen, weitere Werte schreiben oder Geräteeinstellungen ändern müssen.

## Ergebnisse synchron verarbeiten

Die Geräte- und Entity-Aufrufe von Luau geben ihre Ergebnisse direkt an Ihr Skript zurück. Lesen Sie die Daten, berechnen Sie einen Wert und speichern Sie ihn nacheinander, ohne Promise-Ketten oder Callbacks zu schreiben. Im Gewächshausbeispiel verwendet die Durchschnittsberechnung die vollständig gelesenen Daten. Auch der Schreibvorgang ist abgeschlossen, bevor das Skript fortfährt.

Synchrone Ausführung bedeutet nicht, dass es keine Latenz gibt. Daten zu lesen und Berechnungen auszuführen braucht weiterhin Zeit. Außerdem geben die üblichen Trigger für gehostete Analyses das Skriptergebnis nicht an den Aufrufer zurück.

**Aktualisierung vom 15. Oktober 2026:** [Analysis Endpoints](https://tago.io/blog/introducing-analysis-endpoints) ermöglichen einer Luau-Analysis einen synchronen HTTP-Ablauf aus Anfrage und Antwort. Der Aufrufer wartet auf das Skript und erhält dessen Antwort innerhalb derselben Anfrage. Validieren Sie eine Eingabe, berechnen Sie einen Wert oder lesen Sie Gerätedaten und geben Sie das Ergebnis zurück, sobald das Skript fertig ist. Die Anwendung muss es nicht später separat abrufen.

## Runtime-Geschwindigkeit bei gleicher Arbeitslast vergleichen

Ein Vergleich der Verarbeitung von Sensordaten mit verschiedenen Runtimes:

Mediane Ausführungszeit

| Runtime | 1.000 Messwerte | 100.000 Messwerte |
| --- | --- | --- |
| 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 |

Jede Runtime nutzt die Version, die TagoIO hostet. Luau läuft direkt in TagoIO, ohne einen eigenen Prozess zu starten, daher umfassen seine Zeiten nur das Skript. Die anderen Runtimes starten bei jeder Ausführung einen neuen Prozess, und bei 1.000 Messwerten macht dieser Start den Großteil ihrer Zeit aus.

## Zugriffsregeln ohne Token

Eine Luau-Analysis erhält ihre Berechtigungen über eine [Access Management-Richtlinie](https://docs.tago.io/docs/tagoio/analysis/luau-runtime#permissions), nicht über ein Analysis Token. Legen Sie die Analysis direkt oder über eines ihrer Tags als Ziel fest und erlauben Sie dann die benötigten Aktionen auf den vorgesehenen Ressourcen.

![Access Management erlaubt einer Luau-Analysis, den Gewächshaussensor zu lesen und zu beschreiben, und sperrt den Zugriff auf ein anderes Gerät, ohne Analysis Token](https://tago.io/images/blog/introducing-luau-analysis-runtime/permissions.svg)

Für den Durchschnitt im Gewächshaus erlauben Sie, den Sensor abzurufen, seine Daten zu lesen und den berechneten Wert zu schreiben. Das gewährt keinen Zugriff auf ein anderes Gerät. Lese- oder Schreibvorgänge ohne die erforderliche Berechtigung werden blockiert.

## Jedes Skript auf eine Aufgabe begrenzen

Luau läuft ausschließlich auf TagoIO. Es hat keinen ausgehenden Internetzugriff, keine externen Bibliotheken und keinen Dateizugriff. E-Mails, SMS oder Benachrichtigungen kann es nicht direkt versenden.

Wählen Sie Luau für kleine Aufgaben, die sich mit den integrierten Geräte-, Entity- und Analysis-Operationen erledigen lassen, etwa Messwerte zu mitteln und das Ergebnis zu speichern. Wählen Sie [Bun](https://tago.io/blog/introducing-bun-analysis-runtime), wenn das Skript eine externe API, ein Paket oder andere TagoIO-Ressourcen benötigt.

Soll ein berechneter Wert eine externe Reaktion auslösen, führen Sie diesen Schritt in einer separaten Hilfs-Analysis mit Deno, Node.js oder Python aus. Das Gewächshausskript kann beispielsweise nur dann eine Hilfs-Analysis für Benachrichtigungen starten, wenn der Durchschnitt einen Schwellenwert überschreitet. `Analysis.run` startet die Hilfs-Analysis, ohne auf ihren Abschluss zu warten, und benötigt die Berechtigung **Run Analysis** für das Ziel. Eine weitere Luau-Analysis kann es nicht starten.

Luau-Ausführungen werden nicht auf das monatliche [Analysis Service-Limit](https://docs.tago.io/docs/tagoio/profiles/services/analysis-service) angerechnet. Geräte- und Entity-Operationen unterliegen weiterhin den geltenden Service-, Ressourcen- und Ratenlimits. Die Runtime begrenzt außerdem Ausführungszeit, Arbeitsspeicher und Payload-Größe. Berücksichtigen Sie die [Luau-Limits](https://docs.tago.io/docs/tagoio/analysis/luau-runtime#limits), wenn Sie den Umfang einer Aufgabe planen.

## Erste Schritte

Beginnen Sie mit einer neuen Analysis und einem Testgerät, das numerische Messwerte in derselben Einheit enthält.

1. Erstellen Sie im [Admin](https://admin.tago.io) eine Analysis und wählen Sie unter **Runtime** die Option **Luau** (`luau-rt2026`).
2. Konfigurieren Sie die zugehörige Access Management-Richtlinie, bevor Sie Geräte- oder Entity-Operationen ausführen.
3. Öffnen Sie den Script Editor und verwenden Sie das [Luau-Beispiel](https://docs.tago.io/docs/tagoio/analysis/luau-runtime#writing-a-luau-analysis). Speichern Sie Geräte-IDs und Einstellungen in Umgebungsvariablen.
4. Speichern Sie das Skript und klicken Sie auf **Run**. Prüfen Sie die gespeicherten Werte und die Ausgabe in der Console. Verwenden Sie `print(...)` für Logs; bei Argumentfehlern wird die ungültige Option angegeben.

Wenn Sie bestehenden Code migrieren, lesen Sie zuerst die [Warnhinweise zum Wechsel der Runtime](https://docs.tago.io/docs/tagoio/analysis/creating-analysis#runtime): Beim Wechsel zu Luau wird das vorhandene Analysis Token entfernt.

Die [Anleitung zur Luau-Runtime](https://docs.tago.io/docs/tagoio/analysis/luau-runtime) beschreibt die unterstützten Funktionen. Die Ankündigung finden Sie in den [Versionshinweisen vom 16. September](https://changelog.tago.io/server/v10-4-0/).

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