Scripting
Skript-Typen
Peakboard verwendet Lua als Skriptsprache. Jedes Skript ist einem der folgenden Skript-Typen zugeordnet, der bestimmt, wann das Skript ausgeführt wird. Im Explorer erscheinen sie als Ordner unter [Scripts].
![Die Skript-Typen unter [Scripts] im Explorer](/assets/images/scripting/types/script-types-01-scripts-tree.png)
Von oben nach unten sind das [Timer] (1), [Functions] (2), [Global events] (3), [On screen activation] (4), [After data reload] (5) und [For controls] (6) – jeder wird im Folgenden beschrieben.
Timer
Ein Timer-Skript hat einen Namen (1), einen Modus (2) und ein Intervall in Millisekunden (3). Der Modus bestimmt, wie es feuert:
- Endless – wiederholt sich unbegrenzt im angegebenen Intervall.
- Once – feuert einmal nach Ablauf des Intervalls und stoppt dann.
- Manual – feuert nicht automatisch, sondern wird aus einem Lua-Skript gestartet. Nach dem Start feuert er einmalig nach dem konfigurierten Intervall als Verzögerung.
- On schedule – feuert gemäß einem Zeitplan aus Wochentag und Uhrzeit.

Funktionen
Hier definierst du wiederverwendbare Lua-Funktionen. Jedes Skript (Timer, Event, Aktivierungsskript …) läuft in einem eigenen, isolierten Gültigkeitsbereich – eine in einem Skript geschriebene Funktion kann also nicht aus einem anderen Skript aufgerufen werden. Eine unter [Functions] definierte Funktion ist der Mechanismus, um Logik über alle Skripte hinweg zu teilen und doppelten Code zu vermeiden: einmal schreiben, überall mit MeineFunktion() aufrufen.
Wenn du unter [Functions] eine Funktion hinzufügst, öffnet sich zuerst der Dialog [Edit function script settings]:

- Function name (1) – der Name, unter dem die Funktion aus Lua aufgerufen wird, z.B.
FormatTemperature(). - Return type (2) – was die Funktion zurückgibt: None, String, Number oder Boolean.
- Parameters (3) – über den [+]-Button fügst du beliebig viele Parameter hinzu. Jeder Parameter hat einen Namen und einen Datentyp (String, Number, Boolean) und steht im Funktionskörper als lokale Variable zur Verfügung. Optional lässt sich ein Parameter über einen Constraint einschränken.
- Shared function (4) – stellt die Funktion als REST-Endpunkt unter
https://[Peakboard Box IP]:40405/api/functions/<name>bereit, sodass sie von außerhalb der Anwendung aufgerufen werden kann. [Allow untyped] lockert zusätzlich die Parametertypisierung für diesen API-Aufruf.
Bestätige mit [OK], um den Skript-Editor zu öffnen und den Lua-Körper zu schreiben. Die Parameter stehen als lokale Variablen zur Verfügung; mit return gibst du das Ergebnis zurück. Anschließend rufst du die Funktion aus jedem anderen Skript auf:
-- ohne Parameter
UpdateDashboard()
-- mit Parametern und Rückgabewert
local label = FormatTemperature(21.5)
Globale Events
Globale Events gelten für die gesamte Anwendung und reagieren auf Eingaben oder Systemzustände. Das e-Objekt im Skript enthält den ereignisspezifischen Kontext. Beim Hinzufügen eines globalen Events wählst du dessen Typ aus der Liste, die in fünf Blöcke gegliedert ist:

Swipe (1)
Wird ausgelöst, wenn der Benutzer auf dem Touchscreen nach oben, unten, links oder rechts wischt. Der Wisch-Effekt kann alternativ auch mit der Maus erzeugt werden. Diese Events tragen keine Kontextdaten.
Tastatur- & Bildschirmeingabe (2)
- Key pressed – wird bei jedem einzelnen Tastendruck ausgelöst.
e.keyist der virtuelle Tastencode,e.modifierdie Modifier-Taste; mite.handled = trueunterbindest du die weitere Verarbeitung. Nützlich für Eingaben über einen Presenter, eine Tastatur oder ein ähnliches Gerät. - Text input – sammelt alle eingegebenen Zeichen, bis Enter/Return gedrückt wird, und feuert dann einmalig mit dem vollständigen Text in
e.text. Ideal für Barcode-Scanner und RFID-Leser, die Zeichen gefolgt von Enter senden. Mitpeakboard.clearinput()leerst du den Puffer vor einem Scan. - Screen clicked – wird ausgelöst, wenn der Screen selbst außerhalb eines Controls geklickt oder getippt wird.
Script error (3)
Wird ausgelöst, wenn ein Lua-Skriptfehler auftritt, sodass du zentral darauf reagieren kannst.
Reload of data source failed (4)
Wird ausgelöst, wenn die Aktualisierung einer Datenquelle fehlschlägt. e.datasourcename und e.errormessage beschreiben den Fehler.
Call incoming / started / ended / Dial signal received (5)
VoIP/SIP-Telefonie-Events. Sie liefern den Remote-Endpunkt, den Anrufer und – beim Dial-Signal – das empfangene DTMF-Signal.
Bei Bildschirmaktivierung
Ein hier definiertes Skript wird jedes Mal ausgeführt, wenn der entsprechende Screen aktiviert, also geladen und angezeigt wird. Das ist der richtige Ort für die einmalige Einrichtung eines Screens.
Bei Datenaktualisierung
Dieses Skript wird ausgeführt, nachdem eine Datenquelle einen Aktualisierungszyklus abgeschlossen hat (das Refreshed-Event des Datenelements). Lege es unter [Scripts] – [After data reload] über [Add] für die entsprechende Datenquelle an oder per Rechtsklick auf die Datenquelle.
Für Controls
Hier findest du alle Skripte, die über die [Events]-Funktion eines Controls erstellt wurden. Ein Event ist eine bestimmte Aktion, die ein Control auslösen kann. Ein ausgewähltes Control (1) zeigt seine Events im Eigenschaftenbereich – z.B. das [Tapped]-Event (2) eines Buttons. Über den [</>]-Button (3) öffnest du den Skript-Editor für dieses Event.
![Ein ausgewähltes Control (1), sein [Tapped]-Event (2) und der Skript-Button (3)](/assets/images/scripting/types/script-types-04-for-controls.png)
Die folgende Liste zeigt jedes Control-Event und die Controls, die es unterstützen:
Tapped (Button, Text, Textfeld, Rechteck, Bild, Icon)
Wird ausgelöst, wenn das Control über Touch, Maus oder ähnliche Eingabe aktiviert wird.
TextChanged (Textfeld, Date Picker)
Wird ausgelöst, wenn sich die Texteingabe des Controls ändert.
SelectionChanged (Dropdown-Liste)
Wird ausgelöst, wenn ein neues Element in der Dropdown-Liste ausgewählt wird.
Checked / Unchecked (Toggle Button, Checkbox, Radio Button)
Checked wird ausgelöst, wenn der Zustand des Controls von False nach True wechselt, Unchecked, wenn er von True nach False wechselt.
Toggled (Toggle Button, Checkbox)
Wird ausgelöst, wenn der Zustand des Controls in beide Richtungen wechselt (False → True oder True → False).
ValueChanged (Slider)
Wird ausgelöst, wenn sich der Wert des Sliders ändert.
DataRowLoaded / CellTapped (Tabelle)
DataRowLoaded wird ausgelöst, sobald eine neue Tabellenzeile geladen wird; CellTapped, wenn eine Zelle innerhalb der Tabelle über Touch, Maus oder ähnliche Eingabe aktiviert wird.
ElementDropped (List View, Tile View)
Wird ausgelöst, wenn ein Element innerhalb der List View oder Tile View fallen gelassen wird (Neuanordnung per Drag-and-drop).
AppointmentTapped / EmptySpaceTapped (Scheduler)
AppointmentTapped wird ausgelöst, wenn ein Termin aktiviert wird; EmptySpaceTapped, wenn ein leerer Bereich des Schedulers aktiviert wird.