Werte rein, Umschlag raus.
Mit dem Node-RED-Paket entfällt das Versiegeln von Hand: Dein Flow übergibt Werte, das Paket baut und sendet den Umschlag. andon out nimmt sie im Flow an, der Config-Node andon-view hält dahinter Schlüssel und Kacheln deiner Ansicht.
Keine Node-RED-Quelle? Wie du Dokument, Umschlag und Upload selbst baust, steht in der Referenz.

andon out meldet den letzten Upload.Im Flow und dahinter.
andon out im Flow
Hier hängst du deine Quellen an. msg.topic ist die Kachel-ID, msg.payload der Wert. Der Status unter dem Node zeigt den letzten Upload.
andon-view Config-Node
Steht nicht im Flow, sondern hinter andon out, so wie der Broker hinter einem MQTT-Node. Er hält View-ID, Schreibschlüssel und Inhaltsschlüssel aus der .env und die Kacheln aus der Vorlage. Er sammelt, prüft, verschlüsselt und lädt hoch.
So findest du ihn: andon out doppelklicken, dann den Stift neben View. Dort liegen .env importieren und Vorlage importieren. Alle Config-Nodes stehen auch im Menü unter Konfigurationsknoten.
Mehrere Ansichten: Jede Ansicht ist ein eigener andon-view mit eigener .env. Mehrere andon out dürfen dieselbe Ansicht füttern, ihre Werte gehen gemeinsam in einem Upload raus.

andon-view, geöffnet über den Stift neben View in andon out: oben .env importieren, darunter die Schlüssel, das Präfix für die Umgebung und die Vorlage.Installieren
In Node-RED unter Palette verwalten nach andon suchen und installieren. Ab Node-RED 3.0.
Ansicht anlegen
Im Konfigurator eine Ansicht anlegen, die .env herunterladen und den QR-Code mit der App scannen. Das Paket liefert das Beispiel mit vier fertigen Kacheln. Aus dem Konfigurator brauchst du nur die .env.
Beispiel importieren
In Node-RED: Menü → Import → Beispiele → node-red-andon → Andon basics. Der Flow landet im gerade offenen Tab. Ein zweites Beispiel, All tile kinds, hat eine Kachel jeder Art und zeigt jede Form, die sie nimmt.
Schlüssel eintragen
In andon out den Stift neben View, dann nur .env importieren. Eine Vorlage würde die vier Kacheln ersetzen, an die der Simulator sendet. Aktualisieren und Fertig.
Übernahme (Deploy)
andon out wird grün, die vier Kacheln laufen in der App ein.
// In front of andon out. Its dialog lists every // form each tile takes; "Insert example flow" // writes them all into a node like this one. // msg.topic is the tile ID from the view. node.send({ topic: 't_oee', payload: 79.3 }); // Text works too: "79.3" as MQTT delivers it. node.send({ topic: 't_status', payload: { value: 'Running', status: 'ok' } }); // A line or a bar over time: each number is appended. // msg.timestamp (ms or ISO) sets the time, // msg.series picks the series. node.send({ topic: 't_temp', payload: 180.4 }); // [time, value] pairs replace the series: node.send({ topic: 't_temp', payload: [ ['2026-10-03T08:00:00Z', 179.6], ['2026-10-03T08:01:00Z', 180.4] ] }); // Several tiles in one message, without a topic: node.send({ payload: { t_oee: 79.3, t_status: 'Running' } }); // Or a whole view document you built yourself; // it replaces the view's state: // node.send({ payload: myViewDocument }); return null;
Was jede Kachel nimmt, zeigt der Node.
Im Dialog nachsehen
andon out doppelklicken: Unter Kacheln steht jede Kachel deiner Vorlage mit allen Formen, die sie nimmt, jede mit einem Beispiel. Eine line etwa nimmt eine Zahl, eine Zahl mit msg.timestamp, Paare aus Zeit und Wert oder eine ganze Reihe.
Beispiel-Flow einfügen
Der Knopf darunter setzt einen Inject- und einen Function-Node vor andon out, fertig verbunden. Der Function-Node sendet alle 30 s einen Wert an jede Kachel, alle weiteren Formen stehen auskommentiert darunter. Der eingefügte Code ist englisch.
All tile kinds
Ein zweites Beispiel im Paket: eine Ansicht mit jeder Kachelart und genau diesem Function-Node. In Node-RED: Menü → Import → Beispiele → node-red-andon → All tile kinds, dann die .env importieren.
Unvollständig? Fehlt die .env, markiert Node-RED andon out schon vor der Übernahme als nicht konfiguriert. Fehlt die Vorlage, zeigt der Node nach der Übernahme „keine Vorlage“: Dann nimmt er nur ganze View-Dokumente.

andon out im Beispiel „Andon basics“: jede Kachel mit ihren Formen, darunter Beispiel-Flow einfügen.Was ein Wert bewirkt
| Kachel | msg.payload | Wirkung |
|---|---|---|
label | 79.3 · "Running" | ersetzt den Wert. Text, der wie eine Zahl aussieht, wird zur Zahl, wenn die Vorlage dort eine hat. |
gauge, progress, donut | 79.3 | ersetzt den Wert, bei donut die Zahl in der Mitte |
line, bar über die Zeit | 31.9 | wird als Punkt angehängt, mit der Zeit von jetzt oder aus msg.timestamp, in die Serie aus msg.series. Das geht nur bei einer Serie aus samples: Einer Serie im Raster aus stepSec und points fehlt die Zeit dafür. Der erste Wert ersetzt die Startpunkte der Vorlage. Behalten werden die letzten 60 Punkte, einstellbar unter Zeitreihen. |
line, bar über die Zeit | [["2026-10-03T08:00:00Z", 31.9], …] | Paare aus Zeit und Wert ersetzen die Serie aus msg.series, auch eine im Raster |
line, bar über die Zeit | { "series": [{ "name": "A", "start": …, "stepSec": 3600, "points": [12, 30] }] } | ersetzt alle Serien, als samples oder im Raster aus start, stepSec und points. Zeiten in UTC, wie toISOString() sie schreibt. |
bar mit Kategorien, pie, donut | [12, 7, 3] | ersetzt die Werte, einer je Kategorie, in der Serie aus msg.series |
bar mit Kategorien, pie, donut | { "categories": ["A", "B"], "series": [{ "name": "A", "values": [4, 7] }] } | ersetzt Kategorien und Werte zusammen |
bar mit Kategorien und einer Serie | { "series": [{ "name": "A", "values": [4, 7], "statuses": [null, "warning"] }] } | ein Urteil je Balken: ok, warning, critical oder null |
table | [["Press 1", 42.7], ["Press 2", null]] | ersetzt die Zeilen. Eine Zeile ist ein Array von Zellen oder ein Objekt mit cells und status. |
timeline | "fault" | beginnt ein Segment mit diesem Zustand, auf der Spur aus msg.lane. Derselbe Zustand noch einmal ändert nichts. Der erste ersetzt die Startsegmente der Vorlage. |
timeline | { "from": "2026-10-03T06:00:00Z", "to": "2026-10-03T14:00:00Z" } | verschiebt die Zeitachse. Was vor from liegt, wird abgeschnitten. |
| jede Kachel | { "value": 79.3, "status": "warning" } | setzt die genannten Felder, null entfernt eines |
gauge mit unpassendem Wert | "n/a" | wird abgelehnt und geht an den Catch-Node, mit einem Satz, was die Kachel nimmt. Die Ansicht bleibt, wie sie war. Das gilt für jede Kachel. |
Einstellungen im andon-view
| Feld | Vorgabe | Wirkung |
|---|---|---|
| Intervall | 30 s, mindestens 10 | Höchstens ein Upload je Intervall. Die erste Änderung nach einer Pause geht sofort raus, viele Werte werden ein Umschlag. |
| Veraltet nach | leer: dreimal das Intervall | Setzt staleAfterSec. Solange Werte kommen, auch unveränderte, geht nach der halben Zeit ein Heartbeat raus. Kommt nichts mehr, wird die Ansicht grau. |
| Geräte wecken | wenn sich ein Status ändert | Oder bei jedem Upload, oder nie. Jeder Weckruf kostet Akku. |
| Status aus Bands | aus, je Kachel | Leitet den Status aus den Bändern ab, statt ihn mit dem Wert zu senden. |
| Zeitreihen | 60 Punkte, kein Höchstalter | Behält die letzten n Punkte einer Reihe und nichts, was älter ist als das Höchstalter. 0 schaltet eine Grenze ab. |
| Key-Version | leer: 1 | Die Schlüsselversion kv, die in jeden Umschlag geht. Sie kommt aus der .env und steigt erst, wenn du im Konfigurator einen neuen Inhaltsschlüssel erzeugst. Leer heißt 1, damit der Wert auch aus der Umgebung kommen kann. |
| Write-Secret, Content-Key | aus der .env oder der Umgebung | Liegen verschlüsselt in den Credentials von Node-RED und fehlen in jedem Export. Setz dafür credentialSecret in der settings.js. Den Einladungsschlüssel verwirft der Import. |
| Aus der Umgebung | leer | Ein Präfix wie ANDON_: Was im Dialog leer ist, liest der View aus Umgebungsvariablen, mit denselben Namen wie in der .env des Konfigurators. Für ein Node-RED im Container, dessen Flow dann keine Schlüssel enthält. |
Bei 429 wartet das Paket auf Retry-After, bei Netzfehlern und 5xx verdoppelt es die Pause, beginnend beim Intervall, bis auf fünf Minuten. Ein 401, 404, 400 oder 413 stoppt die Uploads bis zur nächsten Nachricht.
Ansicht entwerfen. Koppeln. Verwalten.
Im Konfigurator stellst du die Kacheln zusammen und siehst sie wie auf dem iPhone, geprüft gegen das Schema. Dann legst du die Ansicht an, koppelst dein iPhone oder iPad per QR-Code und schickst einen ersten Test. Auch die Geräte verwaltest du dort. Der Inhaltsschlüssel verlässt deinen Browser nie.