Skip to content

Steuerbefehle

Man kann Hyperion steuern, indem man bestimmte JSON-Nachrichten sendet.

Tip

Die Eigenschaft tan wird in diesen Aufrufen unterstützt, aber aus Gründen der Kürze weggelassen.

Eingangssteuerung

Farbe einstellen

Stellt eine Farbe für alle LEDs ein oder gibt ein Muster von LED-Farben vor.

EigenschaftTypErforderlichAnmerkung
colorArrayJaEin Array von R G B Integer-Werten z. B. [R,G,B]
durationIntegerNeinDauer der Farbe in ms. Wenn du keine Dauer angibst, ist sie 0 -> unendlich.
priorityIntegerJaWir empfehlen 50, entsprechend dem Prioritätsleitfaden. Min 2 Max 99
originStringJaEin kurzer Name deiner Anwendung, z. B. Hyperion of App. Maximale Länge ist 20, minimale 4.
json
// Beispiel: Einstellen einer blauen Farbe mit unbegrenzter Dauer auf Priorität 50 
{
  "command":"color",
  "color":[0,0,255],
  "priority":50,
  "origin":"My Fancy App"
}
// Beispiel: Einstellen einer cyanfarbenen Farbe für 12 Sekunden bei Priorität 20
{
  "command":"color",
  "color":[0,255,255],
  "duration":12000,
  "priority":20,
  "origin":"My Fancy App"
}

// Beispiel: Gebe ein Farbmuster vor, das so lange wiederholt wird, bis alle LEDs eine Farbe haben
// Eine LED hat 3 Werte (Rot,Grün,Blau) mit einem Bereich von 0-255
// In diesem Fall LED 1: Rot, LED 2: Rot, LED 3: Blau.
{
  "command":"color",
  "color":[255,0,0,255,0,0,0,0,255],
  "duration":12000,
  "priority":20,
  "origin":"My Fancy App"
}

Effekt auswählen

Startet einen Effekt mittels Namen. Die verfügbaren Namen findet man in der serverinfo Effekt-Liste.

EigenschaftTypErforderlichBemerkung
effectObjectJaObjekt mit zusätzlichen Eigenschaften. z. B. "name":"EffectName".
durationIntegerNeinDauer der Effekte in ms. Wenn du keine Dauer angibst, ist es 0 -> unendlich.
priorityIntegerJaWir empfehlen 50, entsprechend dem Prioritätsleitfaden. Min. 2 Max. 99
originStringJaEin kurzer Name deiner Anwendung wie Hyperion Programm. Maximale Länge ist 20, min. 4.
json
// Beispiel: Auswählen des Effekts 'Warm mood blobs' mit unbegrenzter Dauer
{
  "command":"effect",
  "effect":{
    "name":"Warm mood blobs"
  },
  "priority":50,
  "origin":"My Fancy App"
}
// Beispiel: Effekt 'Rainbow swirl' für 5 Sekunden auswählen.
{
  "command":"effect",
  "effect":{
    "name":"Rainbow swirl"
  },
  "duration":5000,
  "priority":50,
  "origin":"My Fancy App"
}
// Beispiel: Effekt 'Rainbow swirl' für 1 Sekunde mit überlagertem Argument setzen.
// Jeder Effekt hat unterschiedliche Argumente in der Eigenschaft args, die überschrieben werden können.
// WARNUNG: Wir empfehlen dringend, lieber den Effektkonfigurator in der Benutzeroberfläche zu verwenden. Das Senden von ungültigen Werten kann zu Fehlverhalten oder Absturz des Effekts führen.
{
  "command":"effect",
  "effect":{
    "name":"Rainbow swirl",
    "args":{
      "rotation-time":1
    }
  },
  "duration":5000,
  "priority":50,
  "origin":"My Fancy App"
}

Bild einsetzen

Setzt ein einzelnes Bild. Unterstützt alle Qt5 Bildformate, einschließlich png/jpg/gif.

EigenschaftTypErforderlichBemerkung
imagedataStringJaAngaben des Bildes als Base64.
formatStringJaSetze diese Option auf "Auto", damit Hyperion das Bild je nach Dateityp parsed.
nameStringJaDer Name des Bildes.
durationIntegerNeinAnzeigendauer des Bildes in ms. Wenn du keine Dauer angibst, ist es 0 -> endlos.
priorityIntegerJaWir empfehlen 50, entsprechend dem Prioritätsleitfaden. Min. 2 Max. 99
originStringJaEin kurzer Name deiner Anwendung wie Hyperion Programm. Maximale Länge ist 20, min. 4.
json
// Ein Bild für 5 Sekunden einstellen
{
  "command":"image",
  "imagedata":"VGhpcyBpcyBubyBpbWFnZSEgOik=",
  "name":"Name of Image",
  "format":"auto",
  "priority":50,
  "duration":5000,
  "origin": "My Fancy App"
}

Zurücksetzen

Setzt eine Priorität zurück, normalerweise verwendet für set color, set effect oder set image.

json
// Effekt/Farbe/Bild löschen mit Priorität 50
{
  "command":"clear",
  "priority":50
}
// Alle Effekte/Farben/Bilder löschen
{
  "command":"clear",
  "priority":-1
}

Achtung

Wenn du alles löschst, löschst du alle Effekte und Farben, unabhängig davon, wer sie eingestellt hat! Stattdessen empfehlen wir, dass Benutzer eine Liste möglicher Löschziele auf der Grundlage einer Prioritätenliste bereitstellen

Auswahl einer Quelle

Quellen werden immer automatisch nach dem Prioritätswert ausgewählt (der niedrigste Wert hat die höchste Priorität). Man muss den Prioritätswert der Quelle kennen, die man auswählen möchte. Diese Prioritätswerte sind in der Datei serverinfo Prioritäten.

json
// Beispiel: Priorität 50 auf sichtbar setzen
{
  "command":"sourceselect",
  "priority":50
}

Wenn die Antwort erfolgreich ist, wechselt der priorities_autoselect-Status auf false (siehe serverinfo Autoselection Mode). Du bist jetzt im manuellen Modus, um zurück in den Auto-Modus zu wechseln, sende:

json
{
  "command":"sourceselect",
  "auto":true
}

Danach wird der Prioritäten_autoselect-Status wieder auf wahr gesetzt.

Achtung

Du kannst nur Prioritäten auswählen, die active:true sind!

Ausgabesteuerung

Anpassungen

Anpassungen spiegeln die Farbkalibrierung wider. Man kann alle Eigenschaften von serverinfo adjustments ändern.

EigenschaftTypErforderlichBemerkung
redArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
greenArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
blueArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
cyanArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
magentaArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
yellowArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
whiteArrayNeinEin Array von R G B Integer-Werten z. B. [R,G,B]
gammaRedNumber (float)NeinMinimum:0.1 Maximum 5.0 In 0.1 Schritten
gammaGreenNumber (float)NeinMinimum:0.1 Maximum 5.0 In 0.1 Schritten
gammaBlueNumber (float)NeinMinimum:0.1 Maximum 5.0 In 0.1 Schritten
brightnessIntegerNeinMinimum: 0 Maximum 100 In 0.1 Schritten
brightnessCompensationIntegerNeinMinimum: 0 Maximum 100 In 0.1 Schritten
backlightThresholdIntegerNeinMinimum: 0 maximal 100. Schritt von 1. (Minimale Helligkeit!) Deaktiviert für Effekt/Farbe/Bild
backlightColoredBooleanNeinBei true ist die Hintergrundbeleuchtung farbig, bei false ist sie weiß. Deaktiviert für Effekt/Farbe/Bild
idStringNeinKurze Bezeichnung
json
// Beispiel: GammaRot auf 1,5 setzen
{
  "command":"adjustment",
  "adjustment":{
    "gammaRed":1.5
  }
}
// Beispiel: Grün auf [0,236,0] setzen
{
  "command":"adjustment",
  "adjustment":{
    "green":[0,236,0]
  }
}
// Beispiel: backlightColored auf true setzen
{
  "command":"adjustment",
  "adjustment":{
    "backlightColored":true
  }
}
// Beispiel: Sende die 3 obigen Beispiele auf einmal
{
  "command":"adjustment",
  "adjustment":{
    "backlightColored":true,
    "gammaRed":1.5,
    "green":[0,236,0]
  }
}

LED-Mapping

Wechselt den LED-Mapping-Modus für das eingehende Bild.

mappingType WertBeschreibung
multicolor_meanDurchschnittsfarbe einfach - pro LED
unicolor_meanDurchschnittsfarbe Gesamtbild - auf alle LED angewandt
multicolor_mean_squaredDurchschnittsfarbe zum Quadrat - pro LED
dominant_colorDominant Color- per LED
dominant_color_advancedDominante Farbe fortgeschritten - pro LED
json
// Beispiel: Mapping-Modus auf multicolor_mean setzen
{
  "command":"processing",
  "mappingType":"multicolor_mean"
}
// Beispiel: Mapping-Modus auf unicolor_mean setzen
{
  "command":"processing",
  "mappingType":"unicolor_mean"
}

Video-Modus

Schaltet den Videomodus um. Mögliche Werte sind: 2D, 3DSBS und 3DTAB.

json
// Beispiel: Videomodus auf 3DTAB einstellen
{
 "command":"videomode",
 "videoMode":"3DTAB"
}
// Beispiel: Videomodus auf 3DSBS einstellen
{
 "command":"videomode",
 "videoMode":"3DSBS"
}

Streaming

Live-Bild-Stream

Man kann einen Livebild-Stream anfordern (wenn die aktuelle Quellpriorität dies unterstützt, andernfalls erfolgt möglicherweise keine Antwort).

json
{
  "command":"ledcolors",
  "subcommand":"imagestream-start"
}

Es werden "ledcolors-imagestream-update"-Meldungen mit einem base64-kodierten Bild empfangen. Stoppe den Stream durch Senden:

json
{
  "command":"ledcolors",
  "subcommand":"imagestream-stop"
}

HTTP/S

Diese Funktion ist für HTTP/S JSON-RPC nicht verfügbar.

LED-Farb-Live-Stream

Mit dieser Funktion kann ein Live-LED-Farbstream mit aktuellen Farbwerten in RGB für jede einzelne LED angefordert werden. Die Aktualisierungsrate beträgt 125ms.

json
{
  "command":"ledcolors",
  "subcommand":"ledstream-start"
}

Du erhältst "ledcolors-ledstream-update"-Meldungen mit einem Array aller LED-Farben. Stoppe den Stream durch Senden:

json
{
  "command":"ledcolors",
  "subcommand":"ledstream-stop"
}

HTTP/S

Diese Funktion ist für HTTP/S JSON-RPC nicht verfügbar.

Komponentensteuerung

Komponenten steuern

Einige Komponenten können zur Laufzeit aktiviert und deaktiviert werden. Um den aktuellen Status und die verfügbaren Komponenten zu erhalten, siehe Serverinfo Komponenten. Siehe . auch: Komponenten/IDs erklärt

json
// Beispiel: LEDDEVICE-Komponente deaktivieren
{
 "command":"componentstate",
 "componentstate":{
   "component":"LEDDEVICE",
   "state":false
 }
}
// Beispiel: SMOOTHING-Komponente aktivieren
{
 "command":"componentstate",
 "componentstate":{
   "component":"SMOOTHING",
   "state":true
 }
}

Achtung

Hyperion selbst muss aktiviert sein! Prüfe den Status von "ALL" in der Komponentenliste, bevor du eine andere Komponente änderst!

Komponenten/IDs erklärt

Jede Komponente hat eine eindeutige ID. Nicht alle von ihnen können aktiviert/deaktiviert werden - einige von ihnen wie Effekt und Farbe, werden verwendet, um den Quellentyp zu bestimmen, wenn die Prioritätsliste untersucht wird.

ComponentIDComponentEnable/DisableBeschreibung
SMOOTHINGSmoothingYesGlättungs-Komponente
BLACKBORDERBlackborder detectorYesKomponente zur Erkennung von schwarzen Balken
FORWARDERJSON/Proto forwarderYesJSON/Proto-Forwarder-Komponente
BOBLIGHTSERVERBoblight serverYesBoblight-Server-Komponente
GRABBERScreen captureYesBildschirm Erfassungskomponente
V4LV4L capture deviceYesUSB-Aufnahmegerät-Komponente
AUDIOAudio captureYesAudio Erfassungskomponente
LEDDEVICELED deviceYesLED-Gerätekomponente startet/stoppt die Ausgabe des konfigurierten LED-Geräts
ALLSPECIAL: HyperionYesAktivieren oder deaktiviere Hyperion. Wiederherstellen/Speichern des letzten Zustands aller anderen Komponenten
COLORSolid colorNoAlle Farben, die eingestellt wurden, gehören zu dieser Komponente
EFFECTEffectNoAlle Effekte gehören zu dieser Komponente
IMAGESolid ImageNoDazu gehören alle Einzel-/Festbilder. NICHT für Streaming
FLATBUFSERVERFlatbuffers ServerNoAlle Bildstream-Quellen vom Flatbuffer-Server
PROTOSERVERProtobuffer ServerNoAlle Bild-Stream-Quellen vom Protobuffer-Server

Steuerung Instanzen

Eine Instanz repräsentiert eine LED-Hardware-Instanz. Sie läuft in ihrem eigenen Bereich mit ihren eigenen Plugin-Einstellungen, LED-Layout und Kalibrierung. Bevor man eine Instanz auswählt, sollte man zunächst Informationen über die verfügbaren Instanzen von serverinfo erhalten.

json
// Befehl zum Starten der Instanz 1
{
  "command" : "instance",
  "subcommand" : "startInstance",
  "instance" : 1
}

// Befehl zum Stoppen der Instanz 1
{
  "command" : "instance",
  "subcommand" : "stopInstance",
  "instance" : 1
}

Handhabung der API-Instanz

Bei der Verbindung mit der API wird standardmäßig eine Verbindung zur Instanz 0 hergestellt. Man kann nur eine Instanz gleichzeitig innerhalb einer einzigen Verbindung steuern, und Abonnements sind im Kontext der ausgewählten Instanz.

Mit dem folgenden Befehl kann zu einer anderen Instanz gewechselt werden:

json
// Zur Instanz 1 wechseln
{
  "command" : "instance",
  "subcommand" : "switchTo",
  "instance" : 1
}

Dies gibt eine erfolgreiche Antwort oder einen Fehler zurück, wenn die Instanz nicht verfügbar ist.

Achtung

Es ist möglich, dass eine Instanz anhält, während man mit ihr verbunden ist. In diesem Fall werden die Verbindungen zu dieser Instanz automatisch auf die Instanz 0 zurückgesetzt. Behalte die Instanzdaten über das Abonnement im Auge, wenn du diesen Vorgang behandeln musst. Siehe: Instanz-Updates.

Hyperion steuern

Steuere das Hyperion System als Ganzes mit den folgenden subCommand Befehlen:

subcommandBeschreibung
suspendRuhezustand für alle Komponenten und Instanzen
resumeBeenden des Ruhezustands, fortsetzen der Verarbeitung
toggleSuspendUmschalten zwischen Suspend und Resume
idleRuhezustand, aber LEDs anlassen und einen Hintergrund-Effekt ausführen, falls konfiguriert
toggleIdleUmschalten zwischen Idle und Fortsetzen
restartHyperion neu starten
json
// Beispiel : Hyperion in den Ruhezustand setzen
{
  "Befehl" : "System",
  "subcommand" : "suspend"
}

// Beispiel:  Wiederaufnahme der Verarbeitung	
{
  "befehl" : "system",
  "subcommand" : "resume"
}

// Beispiel: Umschalten zwischen Suspend und Resume
{
  "befehl" : "system",
  "subcommand" : "toggleSuspend"
}