# Abonnement

Während einer serverinfo-Anfrage kann der Aufrufer optional Updates abonnieren -- entweder für bestimmte serverinfo parts oder für alle verfügbaren Daten. Diese Aktualisierungen werden immer dann gepusht, wenn eine serverseitige Datenänderung auftritt, ohne dass der Aufrufer eine Abfrage durchführen muss.

Um bestimmte Updates zu abonnieren, kannst du den Befehl serverinfo dahingehend ändern:

{
    "command":"serverinfo",
    "subscribe":[
        "firstCommand",
        "secondCommand",
        "thirdCommand"
    ],
    "tan":1
}

Um alle verfügbaren Updates zu abonnieren, ändere den Befehl severinfo in:

{
    "command":"serverinfo",
    "subscribe":["all"],
    "tan":1
}

# Basis-Antwort-Layout

Alle gepushten Abonnement-Updates haben ein -update-Suffix, das dem entsprechenden Schlüssel aus dem betreffenden Serverinfo-Teil hinzugefügt wird. Die neuen Daten werden in der Eigenschaft data stehen. Es ist weder ein tan- noch ein success-Argument vorgesehen.

{
    "command":"XYZ-update",
    "data":{
        ..Data here..
    }
}

# Komponenten-Updates

Der Aufrufer kann Komponenten-Updates abonnieren. Diese Aktualisierungen sind dazu gedacht, den Abschnitt components in der ursprünglichen Serverinfo des Aufrufers zu aktualisieren. Relevanter serverinfo-Abonnement-Befehl:

{
    "command":"serverinfo",
    "subscribe":[
        "components-update"
    ],
    "tan":1
}

Danach erhält der Aufrufer inkrementelle Updates. Ein Beispiel:

{
    "command":"components-update",
    "data":{
        "enabled":false,
        "name":"SMOOTHING"
    }
}

# Sitzungsaktualisierungen

Der Aufrufer kann Sitzungsaktualisierungen abonnieren (Hyperion-Instanzen, die mit Bonjour/Zeroconf/Ahavi gefunden werden). Diese Aktualisierungen sind dazu gedacht, den Abschnitt sessions der ursprünglichen Serverinfo des Aufrufers zu aktualisieren. Relevanter serverinfo-Abonnement-Befehl:

{
    "command":"serverinfo",
    "subscribe":[
        "sessions-update"
    ],
    "tan":1
}

Diese Aktualisierungen sind nicht inkrementell -- sie enthalten alle gefundenen Einträge bei jeder Aktualisierung. Beispielantwort mit 2 HTTP-Server-Sitzungen (_hyperiond-http._tcp):

{
    "command":"sessions-update",
    "data":[
        {
            "address":"192.168.58.169",
            "domain":"local.",
            "host":"ubuntu-2",
            "name":"My Hyperion Config@ubuntu:8090",
            "port":8090,
            "type":"_hyperiond-http._tcp."
        },
        {
            "address":"192.168.58.169",
            "domain":"local.",
            "host":"ubuntu-2",
            "name":"My Hyperion Config@ubuntu:8099",
            "port":8099,
            "type":"_hyperiond-http._tcp."
        }
   ]
}

# Prioritäts-Updates

Der Aufrufer kann Prioritäts-Updates abonnieren. Diese Aktualisierungen sind dazu gedacht, die Abschnitte priorities und priorities_autoselect in der ursprünglichen serverinfo des Aufrufers zu aktualisieren. Relevanter serverinfo-Abonnement-Befehl:

{
    "command":"serverinfo",
    "subscribe":["priorities-update"],
    "tan":1
}

Der Aufrufer erhält die kompletten Daten. Bitte beachte, dass wenn eine Farbe oder ein Effekt mit einem Timeout > -1 läuft, der Aufrufer jede Sekunde neue Daten erhält. Ein Beispiel für ein Update:

{
  "command":"priorities-update",
  "data":{
    "priorities":[
      {
        "active":true,
        "componentId":"GRABBER",
        "origin":"System",
        "owner":"X11",
        "priority":250,
        "visible":true
      },
      {
        "active":true,
        "componentId":"EFFECT",
        "origin":"System",
        "owner":"Warm mood blobs",
        "priority":254,    
        "visible":false
      },
      {
        "active":true,
        "componentId":"COLOR",
        "origin":"System",
        "owner":"System",
        "priority":40,
        "value":{
          "HSL":[65535,0,0],
          "RGB":[0,0,0]
        },
        "visible":false
      }
    ],
    "priorities_autoselect":false
  }
}

# Aktualisierungen des LED-Mappings

Der Aufrufer kann Aktualisierungen des LED-Mapping-Typs abonnieren. Diese Aktualisierungen sind dazu gedacht, den Abschnitt imageToLedMappingType in der ursprünglichen serverinfo des Aufrufers zu aktualisieren. Relevanter serverinfo-Abonnement-Befehl:

{
    "command":"serverinfo",
    "subscribe":["imageToLedMapping-update"],
    "tan":1}

Ein Beispiel-Update:

{
    "command":"imageToLedMapping-update",
    "data":{
        "imageToLedMappingType":"multicolor_mean"
    }
}

# Abgleich-Updates

Der Aufrufer kann Abgleich-Updates abonnieren. Diese Aktualisierungen sind dazu gedacht, den Abschnitt Abgleich der ursprünglichen Serverinfo des Aufrufers zu aktualisieren. Relevante Serverinfo. Abonnement-Befehl:

{
    "command":"serverinfo",
    "subscribe":["adjustment-update"],
    "tan":1
}

Ein Beispiel-Update:

{
  "command":"adjustment-update",
    "data":[{
      "backlightColored":true,
      "backlightThreshold":0,
      "black":[0,0,0],
      "blue":[0,0,255],
      "brightness":1,
      "cyan":[0,127,127],
      "gammaBlue":1.4,
      "gammaGreen":1.4,
      "gammaRed":1.4,
      "green":[0,255,0],
      "id":"default",
      "magenta":[255,0,255],
      "red":[255,0,0],
      "white":[255,255,255],
      "yellow":[255,255,0]
    }]
}

# VideoMode-Aktualisierungen

Der Aufrufer kann Videomode-Updates abonnieren. Diese Aktualisierungen sind dazu gedacht, den Abschnitt Videomode der ursprünglichen Serverinfo des Aufrufers zu aktualisieren. Relevante Serverinfo Abonnement-Befehl:

{
  "command":"serverinfo",
  "subscribe":["videomode-update"],
  "tan":1
}

Ein Beispiel-Update:

{
  "command":"videomode-update",
  "data":{
    "videomode": "2D"
  }
}

# Aktualisierungen der Effekte

Der Aufrufer kann Aktualisierungen der Effektliste abonnieren. Diese Aktualisierungen sind dazu gedacht, den Abschnitt effects in der ursprünglichen serverinfo des Aufrufers zu aktualisieren. Relevante Serverinfo. Abonnement-Befehl:

{
  "command":"serverinfo",
  "subscribe":["effects-update"],
  "tan":1
}

Ein Beispiel-Update:

{
  "command":"effects-update",
  "data":{
    "effects": [ ..All effects here..]
  }
}

# Instanz-Updates

Der Aufrufer kann Instanz-Updates abonnieren. Diese Aktualisierungen sind dazu gedacht, den Instanz"-Abschnitt der ursprünglichen Serverinfo des Aufrufers zu aktualisieren. Relevanter serverinfo Abonnement-Befehl:

{
  "command":"serverinfo",
  "subscribe":["instance-update"],
  "tan":1
}

Ein Beispiel-Update. Dies ist nicht inkrementell - der Aufrufer erhält den vollständigen Datensatz von Instanzen:

{
  "command":"instance-update",
  "data":[
    {
      "instance": 0,
      "running" : true,
      "friendly_name" : "My First LED Hardware instance"
    },
    {
      "instance": 1,
      "running" : false,
      "friendly_name" : "PhilipsHue LED Hardware instance"
    }
  ]
}

# LED-Updates

Der Aufrufer kann leds-Updates abonnieren. Diese Aktualisierungen sind dazu gedacht, den Abschnitt leds in der ursprünglichen serverinfo des Aufrufers zu aktualisieren. Relevanter serverinfo-Abonnement-Befehl:

{
  "command":"serverinfo",
  "subscribe":["leds-update"],
  "tan":1
}

Ein Beispiel-Update. Dies ist nicht inkrementell - der Aufrufer wird den vollständigen Datensatz der Leds erhalten:

{
  "command":"leds-update",
    "data": {
      "leds" : [
      {
        "hmin":0.0,
        "hmax":1.0,
        "vmin":0.0,
        "vmax":1.0
       },
       ... more leds ...
      ]
    }
  }
Zuletzt Aktualisiert: 5.1.2024, 15:19:51