Reiter Schaltreihenfolgen
Schaltreihenfolgen – Ein- und Ausschalten nach Plan
Wofür braucht man das?
Eine Medieninstallation ist ein Zusammenspiel aus vielen Geräten. Um diese komplett herunterzufahren, oder auch einzuschalten, müssen gewisse Reihenfolgen und Wartezeiten eingehalten werden.
Will man z.B. einen Konferenzraum herunterfahren, sollte man zuerst dem Projektor den Befehl zum Ausschalten schicken. Der muss vielleicht noch ein wenig abkühlen. In der Zeit können schon mal die Leinwand und die Jalousien hochgefahren werden. Danach Rechner und Audiotechnik ausschalten. Und erst wenn alles aus ist, wird der Strom abgeschaltet.
Die Reihenfolge und die Wartezeiten können in Neuroomnet frei definiert werden - und das müssen sie nur einmal an zentraler Stelle, damit sich alle Konferenzräume bzw. Gruppen gleich verhalten.
Welche Regelsätze gibt es?
Standardmäßig sind in NeuroomNet folgende Schaltreihenfolgen für Gruppen schon (ohne Inhalt) angelegt:
- Power on (Einschalten) - frei definierbar
- Power off (Ausschalten) - frei definierbar
- Restart (Neustarten) - POWEROFF gefolgt von POWERON
Weitere können beliebig angelegt werden.
Diese Reihenfolgen stehen dann sämtlichen Gruppen als Aktionen unter dem Bereich "Switching sequences" zur Verfügung.
Die Schaltreihenfolgen 1 wie Anschalten (POWERON), Abschalten (POWEROFF) und Neustart (RESTART) und andere werden also allgemein definiert, aber immer nur für eine spezifisch gewählte Gruppe und deren Untergruppen ausgelöst und ausgeführt.
Wie werden die Regelsätze abgearbeitet?
Ein Regelsatz besteht aus einzelnen Aktionen, die zu Blöcken gruppiert werden können. Jede Aktion kann eine Nachlaufverzögerung (in Sekunden) erhalten, den „Delay“ 2.
In einem Block werden die Aktionen sequentiell (nacheinander) von NeuroomNet an die technischen Provider gesendet, welche für die Kommunikation mit den Komponenten zuständig sind. Zu jeder Aktion ermitteln die Provider, welche Komponenten betroffen sind und ob sie ansprechbar sind. Das Senden der Aktionen an die Komponenten ist im Allgemeinen asynchron. Es wird nicht auf eine Antwort gewartet. Der Provider signalisiert mit einem OK, dass der Befehl mit der angegebenen Nachlaufverzögerung an die Komponente gesendet wurde. NeuroomNet wartet ( Anzahl der Komponenten * Delay) Sekunden, bevor es die nächste Aktion an die Provider sendet.
Blöcke werden ebenfalls sequenziell abgearbeitet. Nach einem Block kann eine Nachlaufverzögerung 3 angegeben werden, um die der nächste Block später ausgeführt werden soll. Wurde in einem Block keine Aktion ausgeführt (da in der angesteuerten Gruppe keine entsprechende Komponenten vorhanden ist), entfällt die Nachlaufverzögerung für den Block.
Parallele Bearbeitung von Gruppen
Ziel ist eine einigermaßen faire, parallele Bearbeitung mit Rücksicht auf Abhängigkeiten. Zu jeder Gruppe soll immer nur ein Schaltvorgang zu einem Zeitpunkt aktiv sein - Das kann man später durch Attributierung der Schaltvorgänge noch verfeinern.
Das heißt insbesondere, dass nach Anstoßen eines Schaltvorgangs auf einer Gruppe G1 ein weiterer Vorgang auf G1 erst begonnen wird, wenn der erste abgeschlossen ist. Ein Vorgang auf einer Gruppe G2 kann demhingegen jederzeit begonnen werden.
Dabei findet auch die Gruppenhierarchie Berücksichtigung. Enthält eine Gruppe G3 etwa G1 direkt oder indirekt so muss ein Vorgang für G3 warten, bis G1 abgeschlossen ist.
Die Warteschlange versucht aktuell einen fairen Ansatz nach dem FIFO Prinzip zu verfolgen. Ist ein Vorgang auf G1 aktiv und es soll ein neuer Vorgang auf G4 gestartet werden, wobei G4, G1 und G5 enthält, so muss dieser erst einmal auf den Abschluss des G1 Vorgangs warten - soweit wie beschrieben. Soll nun aber ein Vorgang auf G5 gestartet werden, so wird dieser hinter den G4 Vorgang eingereiht, obwohl eigentlich nichts gehen die Ausführung parallel zu G1 spricht.
Würde man dies aber tun, dann könnte es theoretisch sein, dass der G4 Vorgang niemals gestartet wird, obwohl er doch zeitlich vor dem reinen G5 Vorgang angefordert wurde: Ist G1 beendet, G5 aber noch nicht, dann muss G4 auf G5 warten. Kommt in dieser Zeit ein neuer G1 Vorgang, dann könnte dieser wieder parallel zu G5 gestartet werden und G4 muss nun auch auf diesen warten.
Sollte sich der Ansatz als unzureichend erweisen, könnte man die Algorithmen hier entsprechend erweitern. Im einfachsten Fall um einen Zähler, wie oft ein wartender Vorgang von anderen übersprungen wurde. Wird hier ein Limit (sagen wir mal 3) überschritten, dann ist ein Vorziehen einer zeitlich späteren Anfrage nicht mehr möglich.
Neuen Regelsatz hinzufügen
Mit dem Button „Add switching sequence“ 4 wird ein neuer Regelsatz hinzugefügt.
Dieser benötigt
- Namen (zur Anzeige in den Aktionen unter Monitoring und Hierarchie)
- Beschreibung (für die Hilfe Tooltipps)
- Eindeutige Kennung (ohne Leerzeichen)
Um den Regelsatz zu füllen, muss zunächst mit "Block hinzufügen" 5 ein Block erzeugt werden. Die Reihenfolge der Blöcke kann später noch geändert werden.
Mit „Aktion hinzufügen“ 6 werden anschließend Aktionen in diesem Block ergänzt.
Wichtig ist das erste Auswahlfeld 7, welches verschiedene Filter/Auswahl-Möglichkeiten für Komponenten, die angesteuert werden sollen, bereitstellt:
- alle Komponenten einer Schnittstelle
- alle Komponenten eines Typs
- einzelne Komponenten
- eine Custom Action der Mediensteuerung (siehe auch Kapitel "Script Blocks")
Wurde "All components of an interface" gewählt, erscheinen in Spalte 8 Schnittstellen zur Auswahl. Es werden dann alle Komponenten der Gruppe angesteuert, welche über die gewählte Schnittstelle und in Spalte 9 kann eine Aktion für die entsprechende Schnittstelle eingestellt werden.
Wurde "All components of a type" gewählt, erscheinen in Spalte 8 Komponententypen zur Auswahl und in Spalte 9 kann eine Aktion für den entsprechenden Komponententyp eingestellt werden.
Für die eindeutige Kennung 10 sollte eine aussagekräftige Bezeichnung mit Variablennotation gewählt werden (also keine Leerzeichen, Sonderzeichen etc.).
Hintergrund: Wofür werden Anzeigename und Kennung verwendet?
Man kann die Schaltreihenfolge beispielsweise aus der Mediensteuerung, der Zeitsteuerung, dem Dashboard etc. gezielt aufrufen. Dabei wird möglichst der Anzeigename und nicht die Kennung präsentiert. Dagegen ist es über die Exponate API möglich, diese Sequenzen per eindeutiger Kennung auszulösen. Hier empfiehlt sich ein sprechender Name, welcher Variablennotation folgt. Dabei kann man beispielsweise eine Notation wie <Scope>.<Action> verwenden, also PC.Reboot, Licht.Aus .
Nach dem Speichern 11 können die Schaltsequenzen aus der Mediensteuerung, der Zeitsteuerung, dem Dashboard oder über eine API ausgelöst werden.
Testen der Schaltreihenfolgen
Zum Testen der Schaltreihenfolgen sollte der Traffic Inspector (siehe Modul Traffic Inspector) in einem anderen Tab bereits geöffnet sein.
Im Reiter Hierarchie wird eine Schaltreihenfolge manuell ausgelöst durch folgende Schritte:
- Selektieren einer Gruppe, für die (bzw. im Endeffekt deren Komponenten) die Schaltreihenfolge ausgeführt werden soll durch Links-Klicken dieser Gruppe
- Einblenden der rechten Seitenleiste durch Klicken des Buttons
- Anzeigen der Schaltreihenfolgen und Aktionen zur selektierten Gruppe durch Klicken von
- Klicken auf eine der Schaltreihenfolgen und Bestätigung im Popup mit "Aktionen ausführen":
Nun kann im Log des Traffic Inspectors anhand der Einträge und Timestamps überprüft werden, ob die Komponentenaktionen und Wartezeiten so ausgeführt werden, wie erwartet.
Nach dem Testen sollte der Tab mit dem Traffic Inspector wieder geschlossen werden.