16 KiB
Control
You can control Hyperion by sending specific JSON messages. Or get a image and led colors stream of the current active source priority.
::: tip
The tan
property is supported, but omitted.
:::
Sections
Set Color
Set a color for all leds or provide a pattern of led colors.
Property | Type | Required | Comment |
---|---|---|---|
color | Array | true | An array of R G B Integer values e.g. [R,G,B] |
duration | Integer | false | Duration of color in ms. If you don't provide a duration, it's 0 -> endless |
priority | Integer | true | We recommend 50 , following the Priority Guidelines. Min 2 Max 99 |
origin | String | true | A short name of your application like Hyperion of App . Max length is 20 , min 4 . |
// Example: Set color blue with endless duration at priority 50
{
"command":"color",
"color":[0,0,255],
"priority":50,
"origin":"My Fancy App"
}
// Example: Set color cyan for 12 seconds at priority 20
{
"command":"color",
"color":[0,255,255],
"duration":12000,
"priority":20,
"origin":"My Fancy App"
}
// Example: Provide a color pattern, which will be reapted until all LEDs have a color
// In this case LED 1: Red, LED 2: Red, LED 3: Blue. This repeats now
{
"command":"color",
"color":[255,0,0,255,0,0,0,0,255], // one led has 3 values (Red,Green,Blue) with range of 0-255
"duration":12000,
"priority":20,
"origin":"My Fancy App"
}
Set Effect
Set an effect by name. Get a name from Serverinfo
Property | Type | Required | Comment |
---|---|---|---|
effect | Object | true | Object with additional properties. e.g. "name":"EffectName" . |
duration | Integer | false | Duration of effect in ms. If you don't provide a duration, it's 0 -> endless |
priority | Integer | true | We recommend 50 , following the Priority Guidelines. Min 2 Max 99 |
origin | String | true | A short name of your application like Hyperion of App . Max length is 20 , min 4 . |
// Example: Set effect Warm mood blobs with endless duration
{
"command":"effect",
"effect":{
"name":"Warm mood blobs"
},
"priority":50,
"origin":"My Fancy App"
}
// Example: Set effect Rainbow swirl for 5 seconds
{
"command":"effect",
"effect":{
"name":"Rainbow swirl"
},
"duration":5000,
"priority":50,
"origin":"My Fancy App"
}
// Example: Set effect Rainbow swirl for 1 seconds with overwritten agrument
// Each effect has different agruments inside the args property that can be overwritten
// WARNING: We highly recommend to use the effects configurator instead. As you can send wrong values and the effect can crash/ behave strange
{
"command":"effect",
"effect":{
"name":"Rainbow swirl",
"args":{
"rotation-time":1
}
},
"duration":5000,
"priority":50,
"origin":"My Fancy App"}
Set Image
Set a single image. Supported are all Qt5 image formats, including png/jpg/gif.
Property | Type | Required | Comment |
---|---|---|---|
imagedata | String | true | Data of image as Base64 |
format | String | true | Set to auto to let Hyperion parse the image according to type |
name | String | true | The name of the image |
duration | Integer | false | Duration of image in ms. If you don't provide a duration, it's 0 -> endless |
priority | Integer | true | We recommend 50 , following the Priority Guidelines. Min 2 Max 99 |
origin | String | true | A short name of your application like Hyperion of App . Max length is 20 , min 4 . |
// Set a image for 5 seconds
{
"command":"image",
"imagedata":"VGhpcyBpcyBubyBpbWFnZSEgOik=", // as base64!
"name":"Name of Image",
"format":"auto",
"priority":50,
"duration":5000,
"origin": "My Fancy App"
}
Clear
Clear a priority, usually used to revert these: set color, set effect, set image
// Clear effect/color/image with priority 50
{
"command":"clear",
"priority":50,
}
// Clear all effects/colors/images
{
"command":"clear",
"priority":-1,
}
::: warning When you clear all, you clear all effects and colors independent who set it! We recommend to provide a list of possible clear targets instead based on the priority list :::
Adjustments
Adjustments reflect the color calibration. You can modify all properties of serverinfo adjustments
Property | Type | Required | Comment |
---|---|---|---|
red | Array | false | An array of R G B Integer values e.g. [R,G,B] |
green | Array | false | An array of R G B Integer values e.g. [R,G,B] |
blue | Array | false | An array of R G B Integer values e.g. [R,G,B] |
cyan | Array | false | An array of R G B Integer values e.g. [R,G,B] |
magenta | Array | false | An array of R G B Integer values e.g. [R,G,B] |
yellow | Array | false | An array of R G B Integer values e.g. [R,G,B] |
white | Array | false | An array of R G B Integer values e.g. [R,G,B] |
gammaRed | Number (float) | false | minimum:0.1 maximum 5.0 step of 0.1 |
gammaGreen | Number (float) | false | minimum:0.1 maximum 5.0 step of 0.1 |
gammaBlue | Number (float) | false | minimum:0.1 maximum 5.0 step of 0.1 |
brightness | Integer | false | minimum: 0 maximum 100 step of 1 |
brightnessCompensation | Integer | false | minimum: 0 maximum 100 step of 1 |
backlightThreshold | Integer | false | minimum: 0 maximum 100 . Step of 1 . (Minimum brightness!) Disabled for effect/color/image |
backlightColored | Boolean | false | If true the backlight is colored, false it's white. Disabled for effect/color/image |
id | String | false | Short identifier |
// Example: Set gammaRed to 1.5
{
"command":"adjustment",
"adjustment":{
"gammaRed":1.5
}
}
// Example: Set green to [0,236,0]
{
"command":"adjustment",
"adjustment":{
"green":[0,236,0]
}
}
// Example: Set backlightColored to true
{
"command":"adjustment",
"adjustment":{
"backlightColored":true
}
}
// Example: Send the 3 examples above at once
{
"command":"adjustment",
"adjustment":{
"backlightColored":true,
"gammaRed":1.5,
"green":[0,236,0]
}
}
LED mapping
Switch the image to led mapping mode. Available are unicolor_mean
(led color based on whole picture color) and multicolor_mean
(led colors based on led layout)
// Example: Set mapping mode to multicolor_mean
{
"command":"processing",
"mappingType":"multicolor_mean"
}
// Example: Set mapping mode to unicolor_mean
{
"command":"processing",
"mappingType":"unicolor_mean"
}
Video Mode
Switch the video mode between 2D, 3DSBS, 3DTAB.
// Example: Set video mode to 3DTAB
{
"command":"videomode",
"videoMode":"3DTAB"
}
// Example: Set video mode to 3DSBS
{
"command":"videomode",
"videoMode":"3DSBS"
}
Control Components
It is possible to enable and disable certain components during runtime. To get the current state and available components See serverinfo Components. See also: Components/IDs explained
// Example: disable component LEDDEVICE
{
"command":"componentstate",
"componentstate":{
"component":"LEDDEVICE",
"state":false
}
}
// Example: enable component SMOOTHING
{
"command":"componentstate",
"componentstate":{
"component":"SMOOTHING",
"state":true
}
}
::: warning Hyperion needs to be enabled! Check the status of "ALL" at the components list before you change another component! :::
Components/IDs explained
Each component has a unique id. Not all of them can be enabled/disabled some of them like effect and color is used to determine the source type you are confronted with at the priority overview.
ComponentID | Component | Enable/Disable | Comment |
---|---|---|---|
SMOOTHING | Smoothing | Yes | Smoothing component |
BLACKBORDER | Blackborder detector | Yes | Black bar detection component |
FORWARDER | Json/Proto forwarder | Yes | Json/Proto forwarder component |
BOBLIGHTSERVER | Boblight server | Yes | Boblight server component |
GRABBER | Platform capture | Yes | Platform Capture component |
V4L | V4L capture device | Yes | USB capture device component |
LEDDEVICE | Led device | Yes | Led device component start/stops output of the configured led device |
ALL | SPECIAL: Hyperion | Yes | Enable or disable Hyperion. Recovers/saves last state of all other components |
COLOR | Solid color | No | All colors that has been set belongs to this component |
EFFECT | Effect | No | All effects belongs to this component |
IMAGE | Solid Image | No | All single/solid images belongs to this. NOT for streaming |
FLATBUFSERVER | Flatbuffers Server | No | All image stream sources from flatbuffer server |
PROTOSERVER | Protobuffer Server | No | All image stream sources from Protobuffer server |
Source Selection
Sources are always selected automatically by priority value (lowest number first), now you could select on your own a specific priority which should be visible (shown). You need the priority value of the source you want to select. Get them from the serverinfo Priorities.
// Example: Set priority 50 to visible
{
"command":"sourceselect",
"priority":50
}
If you get a success response, the priorities_autoselect
-status will switch to false: serverinfo Autoselection Mode. You are now in manual mode, to switch back to auto mode send:
{
"command":"sourceselect",
"auto":true
}
Now, the priorities_autoselect
-status will be again true
::: warning
You can just select priorities which are active:true
!
:::
Control Instances
An instance represents a LED hardware instance, it runs within a own scope along with it's own plugin settings, led layout, calibration. First, you need to get informations about instances. The first shot from serverinfo Instance.
// Command to start instance 1
{
"command" : "instance",
"subcommand" : "startInstance",
"instance" : 1
}
// Command to stop instance 1
{
"command" : "instance",
"subcommand" : "stopInstance",
"instance" : 1
}
In both cases you get a success response, it doesn't return any error responses.
API Instance handling
On connection to the API you will be connected to instance 0
, that means you can control just one instance at the same time within a connection. It's possible to switch to another instance with the following command.
// We switch to instance 1
{
"command" : "instance",
"subcommand" : "switchTo",
"instance" : 1
}
Will return a success response, or a error response when the instance isn't available
::: warning
It's possible that an instance will stop while you are connected. In this case you will be automatically reseted to instance 0
. So keep watching the instance data as subscription: Instance updates
:::
Live Image Stream
You can request a live image stream (when the current source priority can deliver). So it might be possible that there is no response or it stops and starts in between.
{
"command":"ledcolors",
"subcommand":"imagestream-start"
}
You will receive "ledcolors-imagestream-update" messages with a base64 encoded image. Stop the stream by sending
{
"command":"ledcolors",
"subcommand":"imagestream-stop"
}
::: danger HTTP/S This feature is not available for HTTP/S JSON-RPC :::
Live Led Color Stream
You can request a live led color stream with current color values in RGB for each single led. Update rate is 125ms.
{
"command":"ledcolors",
"subcommand":"ledstream-start"
}
You will receive "ledcolors-ledstream-update" messages with an array of all led colors. Stop the stream by sending
{
"command":"ledcolors",
"subcommand":"ledstream-stop"
}
::: danger HTTP/S This feature is not available for HTTP/S JSON-RPC :::
Plugins
::: danger NOT IMPLEMENTED
THIS IS NOT IMPLEMENTED
:::
You can start and stop plugins. First, you need to get informations about plugins. The first short from serverinfo plugins.
You need now the plugin id. Example: service.kodi
.
// Command to start a plugin
{
"command":"plugin",
"subcommand":"start",
"id":"service.kodi"
}
// Command to stop a plugin
{
"command":"plugin",
"subcommand":"stop",
"id":"service.kodi"
}
You will get a response of your action. plugin-start
or plugin-stop
with success true/false.