Erweiterte Steuerungskomponenten

Q-SYS Control 101 Training (German) : Steuerungskomponenten
At 9:32, Nate “steals” a keypad from a Softphone to make his password page. In the latest versions of Q-SYS Designer Software, a Softphone keypad will only function properly if a Softphone is actually configured, which would invalidate this part of the example (even though it would still work in Emulation Mode). In the “Downloads and Links” section, you can download some Custom Components that have found alternative solutions to this keypad puzzle.

3 ) Einfache Kommunikation

12m 54s

4 ) Block Controller

18m 50s

6 ) Flow Control

36m 23s

7 ) Fazit „Control 101“

1m 29s

Übungsbeschreibung

Erweiterte Steuerungskomponenten 13m 46s

Ausführliche Infos zu erweiterten Anwendungen der Steuerungskomponenten, wie z. B. Verhalten von Custom-Fadern, nicht-binäre Buttons, Status-Combiner/E-Mailer und passwortgeschützte Seiten.

Video Transkript

Erweiterte Steuerungskomponenten 13m 46s
0:08
Jetzt, wo du die Steuerungskomponenten kennst, kannst du sie miteinander zu kombinieren, um
0:13
noch aufregendere Ergebnisse zu erzielen. Wie bei einer Rube-Goldberg-Maschine kannst du diese
0:19
Komponenten so miteinander verschalten, dass ein Ereignis nur unter ganz bestimmten Bedingungen
0:23
ausgelöst wird. Mit Steuerungskomponenten kannst du ziemlich kreativ werden und eine große
0:29
Bandbreite an Aufgaben abdecken. Doch es gibt auch eine Grenze – diese einfachen Werkzeuge
0:34
machen zwar vieles möglich, aber es kommt unweigerlich der Punkt, an dem du auf eine komplexere
0:39
Programmiersprache wie unser Skript oder den Block Controller umsteigen musst. In diesem Video
0:45
werden wir jedoch anhand einiger Beispiele erklären, was sich alles mit den Steuerungskomponenten
0:49
erreichen lässt, schauen aber auch ein paar der anderen Komponenten an. Wenn dich nur eine
0:54
bestimmte Komponente interessiert, kannst du natürlich einfach an den Startpunkt des betreffenden
0:58
Abschnitts springen.
1:03
Nehmen wir ein typisches Szenario: Du musst den Gain-Fader für ein Mikrofon auf eine UCI legen,
1:09
doch diese UCI wird von einem Menschen bedient – und Menschen sind manchmal einfach
1:14
fürchterlich. Wenn du ihnen einen Fader gibst, kannst du davon ausgehen, dass sie diesen bis ganz
1:19
oben aufreißen, und das ist immer eine schlechte Idee.
1:24
Deswegen kannst du eine Custom-Control mit einem Pegel-Fader hinzufügen, und dessen Spielraum
1:28
individuell festlegen. Ich beschränke diesen hier auf den Bereich zwischen -20dB und 5dB, weil dieses
1:35
Maß an Flexibilität vollkommen ausreicht. Ich verknüpfe dieses Steuerungselement mit meinem Gain-
1:42
Regler und füge es der UCI zu. Der Nutzer wird nichts bemerken. Wenn er meint, gerade das System
1:48
bis ans Limit zu fahren, bleibt immer noch jede Menge Headroom.
1:53
Nehmen wir uns noch die Mute-Taste des Kanals vor, mit der der Nutzer das Mikrofon abschalten
1:58
kann. Weil ich die untere Begrenzung des Faders auf -20dB gesetzt habe, bleibt dieser untere Bereich
2:05
hörbar. Also wäre es gut, wenn die Mute-Funktion automatisch aktiviert würde, wenn der Fader ganz
2:11
nach unten gezogen wird. Zu diesem Zweck können wir eine simple Steuerungsfunktion hinzufügen.
2:18
Unabhängig vom Regelbereich, den ich für diesen eingestellt habe, weiß ich, dass bei
2:22
heruntergezogenem Fader sein „.Position“-Parameter 0 ist. Also füge ich mittels eines anderen
2:30
Steuerungselements, das bereits die Position 0 hat, eine vergleichende Anweisung hinzu. Ich füge
2:37
einen Umschalter hinzu, der im Normalzustand aus ist, und wähle eine Steuerungsfunktion mit
2:42
„Position Equal“.
2:45
Ist der Fader ganz unten, hat er die Position 0, was sich mit dem Umschalter deckt, der ebenfalls die
2:51
Position 0 hat. Dies erfüllt die Bedingungen der Steuerungsfunktion „Position Equal“, die eine 1
2:57
ausgibt, die die Mute-Taste aktiviert. Wenn ich jetzt den Fader herunterziehe, wird die
3:03
Stummschaltung automatisch aktiviert.
3:05
Bewege ich den Fader erneut, deckt sich seine Position nicht mehr mit der des Umschalters und es
3:10
wird eine 0 gesendet, die die Stummschaltung aufhebt. Ich könnte Mute immer noch manuell
3:16
aktivieren, aber sobald ich den Fader bewege, wird das Mikrofon automatisch geöffnet. Wir haben
3:22
für ein einfaches Problem eine einfache Lösung erstellt.
3:29
Buttons eignen sich hervorragend für binäres Verhalten – wenn eine 1 oder 0 benötigt wird, sind sie
3:34
perfekt. Aber was ist, wenn der Button zwei andere Werte ausgeben soll? Gewünscht ist
3:39
beispielsweise ein einfacher Button, der den Gain-Pegel eines Audio-Players zwischen einer lauten
3:44
und einer leisen Einstellung umschaltet. Wir wollen nicht die Stummschaltung aktivieren und
3:49
deaktivieren, sondern den Gain-Wert zwischen 5dB und -10dB umschalten. Wie machen wir das? Das
3:56
lässt sich auf vielen unterschiedlichen Wegen erreichen, es hängt gewissermaßen davon ab, wie dein
4:00
Kopf tickt. Schauen wir uns ein paar Vorgehensweisen an.
4:04
Die einfachste Methode sind Snapshots – du kannst eine 1 und eine 0 dazu verwenden, einen Button
4:10
zum Laden eines Schnappschusses („Snapshot Load“) zu aktivieren, der einen gespeicherten Wert für
4:16
die Gain-Steuerung aufruft. Erstellen wir also eine neue „Snapshot Bank“ und verknüpfen diese mit
4:23
unserem Gain-Regler. Dann setzen wir Gain auf 5 dB und sichern Snapshot 1, setzen es dann auf -
4:31
10dB und speichern Snapshot 2.
4:34
Dann schnappe ich mir einen Flipflop – du erinnerst dich vielleicht noch, dass dessen „Out“- und „Not
4:39
Out“-LEDs je nach Zustand des Flipflops wechseln. Ich öffne die Steuerpins, um Snapshot 1 und 2 zu
4:47
laden und sie mit dem Flipflop zu verbinden. Jetzt kann ich diesen „State“-Button auf eine UCI legen
4:54
und dem Nutzer einen einzelnen Button zur Verfügung stellen, mit dem zwei verschiedene Werte auf
4:58
den Gain-Regler geladen werden.
5:01
Schauen wir uns eine weitere Methode an: Wir könnten einen Control-Router einsetzen, der einen
5:07
neuen Wert direkt an den Gain-Regler sendet. Hier sind zwei Custom-Regler für unsere Eingänge,
5:13
einer steht auf 5, der andere auf -10. Der Control-Router bestimmt, welcher aktiv ist. Wir können die
5:22
Steuerpins öffnen, um Eingang 1 oder Eingang 2 auszuwählen, und dann mit dem Flipflop zwischen
5:27
diesen hin- und herschalten.
5:30
Falls du dazu nicht den Flipflop verwenden willst, kannst du auch einen anderen Button zur
5:34
Aktivierung der ersten Router- oder Snapshot-Option nutzen und dann mit einer Steuerungsfunktion
5:39
die Position dieses Buttons umkehren, so dass der Button, wenn er ausgeschaltet ist, ein „An“-Signal
5:45
an die zweite Router- oder Snapshot-Option sendet. Die Wirkung ist bei all diesen Möglichkeiten die
5:50
gleiche. Das ist ein Beispiel dafür, wie flexibel diese Steuerungskomponenten sind.
5:59
Schauen wir uns diese Komponente an – den Status-Combiner. Das ist eine Komponente, die nur
6:05
Status-Steuerungen akzeptiert. Status-Steuerungen findest du in beinahe allen Inventar-Objekten
6:11
oder netzwerkabhängigen Komponenten. Wahrscheinlich kennst du diese Status-Steuerungen aus
6:16
der Standard-UCI „Inventory Status“, die den Zustand jedes Geräts in deinem Design auflistet.
6:23
Diese UCI ist zwar hilfreich, aber in einem Design mit umfangreichen Inventar kann es lange dauern,
6:29
bis du alle Zustandsmeldungen durchgesehen hast. Du kannst sie aber alle an einem Ort bündeln,
6:35
indem du ihre Status-Steuerungen mit dem Status-Combiner verknüpfst.
6:39
Ganz oben zeigt der Status-Combiner den Eingang mit dem schlechtesten Zustand an. Wenn in
6:45
deinem Design alles sauber läuft, steht hier OK. Würde ich jetzt aber z. B. eines meiner
6:50
Peripheriegeräte entfernen, würde es aus dem Netzwerk verschwinden und als Fehler erfasst
6:55
werden. Weil dies unter all meinen Geräten den schlechtesten Zustand hat, meldet der Status-
7:01
Combiner den Fehler.
7:03
Du kannst jeden Eingang so kennzeichnen, dass du sofort weißt, bei welchem Gerät das Problem
7:07
liegt. Und falls du ein bestimmtes Gerät ignorieren willst, kannst du seinen Status unterdrücken und
7:13
es vorübergehend von der Liste der Dinge streichen, um die du dich kümmern musst.
7:17
In einem anderen Video erklärt eine viel jüngere Ausgabe von mir, wie du mit diesem Status-
7:20
Combiner dir selbst oder einem Techniker eine E-Mail schicken kannst. Es sieht ungefähr so aus:
7:26
Wenn die Fehler-LED angeht, können wir damit den Send-Button einer E-Mailer-Komponente
7:32
aktivieren. Diese E-Mail enthält dann als Nachricht den Text, der vom „Combined Status“-Regler
7:38
kommt und den Fehler beschreibt.
7:41
Allerdings gibt es bei diesem Design ein Problem. Wenn am Veranstaltungsort das System
7:46
zurückgesetzt wird oder der Strom ausfällt, ist für eine kurze Zeit der Core Prozessor aktiv, seine
7:52
Peripheriegeräte werden aber noch initialisiert. Du willst keine E-Mail, die nur wegen einer kurzen
7:58
Stromunterbrechung einen Systemfehler meldet – wie also vermeidest du das?
8:03
Hier hilft uns der richtige Einsatz einiger Steuerungskomponenten weiter. Wir wissen, dass das
8:08
System bei einem einfachen Neustart nach etwa 30 Sekunden wieder bereit ist. Auf dieser Basis wird
8:15
nun bestätigt, ob der Send-Button tatsächlich ausgelöst wird oder nicht. Ich setze ein Control-Delay
8:22
zwischen die Fehler-LED und die „Send“-Steuerung, und stelle dies auf 30 Sekunden.
8:28
Nach diesen 30 Sekunden wollen wir es mit dem aktuellen Zustand der LED vergleichen und sehen,
8:33
ob der Fehler weiterhin andauert. Ich nehme eine Steuerungsfunktion und setze sie auf „Logic AND“.
8:40
Dazu müssen ihre beiden Eingänge „wahr“ sein. Lag der Fehler 30 Sekunden lang an, ist der erste Pin
8:47
„wahr“, und wenn der Fehler immer noch besteht, ist auch der zweite Pin „wahr“. Und dann aktiviert
8:54
die Funktion den „Send“-Button des E-Mailers.
8:57
Wenn 30 Sekunden vergangen sind und das System ist wiederhergestellt, dann wäre die
9:01
ursprüngliche Fehler-LED „falsch“ und damit die Bedingungen der Funktion nicht erfüllt: Die E-Mail
9:07
wird nicht gesendet. Und wieder eine einfache Lösung für ein einfaches Problem.
9:15
Eine der meistgestellten Fragen lautet: Kann man einer bestimmten Seite einer UCI ein Passwort
9:20
hinzufügen? Während du eine gesamte UCI auf einen Nutzer beschränken kannst, der sich dann mit
9:25
einer PIN einloggt, lässt sich nativ kein Code für eine bestimmte Seite einrichten. Doch kannst du mit
9:31
den Tools, die du bisher in den Steuerungskomponenten gesehen hast, eine eigene Methode
9:35
entwerfen. Dafür gibt es verschiedene Wege und wenn du dich etwas mit Scripting auskennst wäre es
9:41
eigentlich eine einfache Sache. Aber wenn nicht, müssen wir uns etwas mit den Steuerpins
9:45
ausdenken.
9:47
Eine Methode, mit der ich Lösungen mit diesen Komponenten entwickle, besteht darin, die
9:51
gewünschte Funktion aufzuschreiben und dann jeden Teil mit einem verfügbaren Tool zu ersetzen.
9:57
Zuerst die Aufgabe: Wenn der Nutzer das korrekte Passwort eingibt und auf Enter drückt, soll sich die
10:05
UCI-Seite ändern. Ich sehe schon, dass ich ein „Logic AND“ brauche, zur Bestätigung von „Das
10:12
Passwort ist korrekt“ und „Enter wird gedrückt“.
10:16
Jetzt habe ich ein „Logic AND“ und einen Taster für „Enter“. Aber wie bekomme ich ein Passwort vom
10:22
Nutzer und prüfe, ob es korrekt ist? Also, mir fallen mehrere Möglichkeiten ein, aber ich zeige Euch
10:28
meine Lieblingsmethode. Für das Passwort des Nutzers brauche ich einen Ziffernblock. Erzählt es
10:34
bitte nicht weiter: Ich klaue mir einfach einen von einer Softphone-Komponente.
10:39
Wenn dieses Design die maximale Anzahl von Softphones noch nicht nutzt, kann man problemlos
10:44
eines erstellen und dessen Ziffernblock nutzen. Ich füge also alle Zifferntasten meiner UCI-Seite hinzu.
10:51
Jetzt kommt der Trick, den ich gern zur Passwort-Bestätigung verwende – Ich erstelle eine neue
10:57
Snapshot-Bank und verknüpfe die Wahlzeichenfolge (also die Telefonnummer) mit diesem Snapshot.
11:04
Dann gebe ich das korrekte Passwort ein und speichere es als Snapshot 1. Bei jedem Snapshot steht
11:10
ein Steuerpin zur Verfügung, den du vielleicht noch nicht kennst – ich öffne diesen hier namens
11:16
„Match 1“. Das Steuerungselement „Match“ ist eine LED, die aufleuchtet, wenn der Zustand des
11:23
Designs mit der im Snapshot gespeicherten Konfiguration übereinstimmt.
11:28
Wenn jemand also dieselbe Nummer eingibt, die ich in Snapshot 1 gespeichert habe, leuchtet
11:33
„Snapshot Match“ auf und zeigt eine Übereinstimmung an. Das nutze ich für die erste Hälfte meines
11:39
„Logic AND“. Wenn jetzt jemand die richtige Nummer eingibt UND Enter drückt, bekommen wir eine 1!
11:47
Auch hier könnten wir mit dieser 1 auf unterschiedliche Weise die UCI-Seite ändern, aber ich
11:52
noch einen Snapshot, weil das meiner Meinung nach am einfachsten ist. Ich erstelle eine weiter
11:58
Snapshot-Bank und verknüpfe sie mit dem Steuerungselement „Current Page“ des betreffenden
12:03
Touchscreens. Ich wähle die „Secret Page“ aus, speichere dann den Snapshot und verschalte mein
12:11
„Logic AND“ so, dass es diesen Snapshot aktiviert.
12:15
Voilà! Ich habe einen Ziffernblock, ich gebe den Code ein, und die Seite ändert sich. Ich könnte dem
12:22
Nutzer einen einfachen Navigations-Button einrichten, der zum Hauptfenster zurückführt.
12:27
Wahrscheinlich würde ich das Ganze noch etwas weiter verfeinern. Wenn der Nutzer z. B. einen
12:32
falschen Code eingibt – oder die „Match“-LED beim Drücken von „Enter“ NICHT aktiv ist –, soll dies
12:39
dann die „Clear“-Taste des Ziffernblocks aktivieren, um die Eingabe zu löschen.
12:44
Ich wette, ich könnte auch einen Zähler einbauen, der bei jeder nicht erfolgreichen Eingabe weiter
12:49
hochzählt. Beim dritten Versuch könnte ich einen Alarm auslösen, ein GPIO-Signal an die
12:55
Raumbeleuchtung senden, die Q-SYS Kameras auf den Standort richten und den vernetzten
13:00
Videoumschaltern befehlen, das Kamerasignal in jeden Bildschirm vor Ort einzuspeisen, während die
13:08
Polizei alarmiert und mir selbst eine E-Mail geschickt wird, usw.
13:13
Ihr könnt also mit den Steuerungsfunktion jede Menge Spaß haben. Ich lege euch wirklich ans Herz,
13:17
euch damit zu beschäftigen und herumzuspielen. Und vielleicht hat euch dieses Video auf eigene
13:22
Ideen gebracht. Im Control-Training-Worksheet gibt es dazu eine Aufgabe. Und traut euch ruhig, für
13:29
ein Problem, das euch beschäftigt, eigene Lösungen auszuprobieren. Falls sich dabei etwas nicht
13:34
umsetzen lässt, ist es vielleicht Zeit, sich mit dem Scripting oder dem Block Controller zu
13:38
beschäftigen. Viel Spaß beim Spielen, und bis zum nächsten Mal.