Überblick

ℹ️ Verfügbar ab QuickHMI 15 (Ultimate-Lizenz). Diese Version ist noch nicht veröffentlicht.

Ein serverseitiges Skript ist gewöhnliches JavaScript, das nicht im Browser, sondern im QuickHMI-Server ausgeführt wird. Es läuft genau einmal, unabhängig davon, ob gerade jemand eine Visualisierung geöffnet hat, und arbeitet direkt auf den Daten des Servers.

Wofür Sie serverseitige Skripte einsetzen

  • Berechnungen, deren Ergebnis unabhängig von geöffneten Visualisierungen vorliegen soll, etwa Schichtsummen oder abgeleitete Kennwerte.
  • Überwachung von Grenzwerten und Zuständen, auch nachts und am Wochenende.
  • Wiederkehrende Abläufe zu festen Uhrzeiten, zum Beispiel ein täglicher Bericht per E-Mail.
  • Abläufe, die keine Bedienung voraussetzen, etwa ein Rezeptwechsel bei einem Auftragswechsel.

Unterschied zum clientseitigen Skript

Clientseitig Serverseitig
Ausführungsort Browser des Bedieners QuickHMI-Server
Anzahl der Abläufe einmal je geöffneter Visualisierung genau einmal
Ohne geöffnete Visualisierung läuft nicht läuft
Zugriff auf die Oberfläche ja, über mainInterface nein
Objekt der API mainInterface, Events qhmi
Im Browser lesbar ja nein, wird nicht ausgeliefert

Beide Arten schließen einander nicht aus. Ein Projekt kann clientseitige und serverseitige Skripte enthalten; jedes Skript wird einzeln festgelegt.

Ein vollständiges Beispiel

Das folgende Skript überwacht eine Temperatur und verschickt eine E-Mail, sobald ein Grenzwert überschritten wird. Es meldet dabei nur den Übergang, nicht jeden Messwert oberhalb der Grenze.

let gemeldet = false;

qhmi.onVarChanged("SPS.Kessel_Temp", function (args) {
    const wert = args.variable.value;

    if (args.variable.quality !== "GOOD") {
        return;
    }

    if (wert > 95 && !gemeldet) {
        gemeldet = true;
        qhmi.logWarning("Kesseltemperatur zu hoch: " + wert);
        qhmi.sendMail("Stoerung", "", "Kesseltemperatur", "Aktueller Wert: " + wert);
    } else if (wert < 90) {
        gemeldet = false;
    }
});

Wie Sie ein Skript als serverseitig kennzeichnen, steht auf der Seite Skript serverseitig ausführen. Die verfügbaren Funktionen und Ereignisse finden Sie unter API-Funktionen und Ereignisse und Zeitpläne. Was serverseitige Skripte bewusst nicht können, steht unter Grenzen und Fallstricke.