Skip to content
poljvd edited this page Oct 13, 2013 · 41 revisions

The Hyperion daemon uses a JSON based configuration file. Hyperion uses a library for parsing JSON, this library allows the use of C-style comments.

HyperCon, config builder

Hyperion comes with a tool, _HyperCon_, for easy building of configuration files.

The tool simplifies the process of defining a correct basic configuration file. Fine tuning of device and setup specific configuration should be completed by 'hand'. On the left-side of the application-window the configuration of the led's around the TV can be configured. On the right-side an example is rendered of the TV setup. The image used can be selected by clicking on the TV with the right-mouse button.

HyperCon.jar

Main screen

Example configuration file

The following part shows an example of a configuration similar to the ones created by HyperCon. For convenience not all led's are included. ```javascript // Hyperion configuration { /// Device configuration contains the following fields: /// * 'name' : The user friendly name of the device (only used for display purposes) /// * 'type' : The type of the device or leds (known types for now are 'ws2801', 'test' and /// 'none') /// * 'output' : The output specification depends on selected device /// - 'ws2801' this is the device (eg '/dev/spidev0.0') /// - 'test' this is the file used to write test output (eg /// '/home/pi/hyperion.out') /// * 'rate' : The baudrate of the output to the device (only applicable for 'ws2801') "device" : { "name" : "MyPi", "type" : "ws2801", "output" : "/dev/spidev0.0", "rate" : 1000000 },
/// Color manipulation configuration used to tune the output colors to specific surroundings.
/// Contains the following fields:
///  * 'hsv' : The manipulation in the Hue-Saturation-Value color domain with the following
///            tuning parameters:
///            - 'saturationGain' The gain adjustement of the saturation
///            - 'valueGain'      The gain adjustement of the value
///  * 'red'/'green'/'blue' : The manipulation in the Red-Green-Blue color domain with the
///                           following tuning parameters for each channel:
///            - 'threshold'  The minimum required input value for the channel to be on (else
///              zero)
///            - 'gamma'      The gamma-curve correction factor
///            - 'blacklevel' The lowest possible value (when the channel is black)
///            - 'whitelevel' The highest possible value (when the channel is white)
"color" :
{
    "hsv" : {
        "saturationGain" : 1.5,
        "valueGain"      : 1.5
    },
    "red" :
    {
        "threshold"  : 0.1,
        "gamma"      : 2.0,
        "blacklevel" : 0.0,
        "whitelevel" : 1.0
    },
    "green" :
    {
        "threshold"  : 0.1,
        "gamma"      : 2.0,
        "blacklevel" : 0.0,
        "whitelevel" : 1.0
    },
    "blue" :
    {
        "threshold"  : 0.1,
        "gamma"      : 2.0,
        "blacklevel" : 0.0,
        "whitelevel" : 1.0
    }
},

/// The configuration for each individual led. This contains the specification of the area
/// averaged of an input image for each led to determine its color. Each item in the list
/// contains the following fields:
/// * index: The index of the led. This determines its location in the string of leds; zero
///          being the first led.
/// * hscan: The fractional part of the image along the horizontal used for the averaging
///          (minimum and maximum inclusive)
/// * vscan: The fractional part of the image along the vertical used for the averaging
///          (minimum and maximum inclusive)
"leds" :
[
    {
        "index" : 0,
        "hscan" : { "minimum" : 47.0588, "maximum" : 52.9412 },
        "vscan" : { "minimum" : 0, "maximum" : 10 }
    },
    {
        "index" : 1,
        "hscan" : { "minimum" : 41.1765, "maximum" : 47.0588 },
        "vscan" : { "minimum" : 0, "maximum" : 10 }
    },
	
    ... For convenience not all led configurations are shown ...
	
    {
        "index" : 48,
        "hscan" : { "minimum" : 58.8235, "maximum" : 64.7059 },
        "vscan" : { "minimum" : 0, "maximum" : 10 }
    },
    {
        "index" : 49,
        "hscan" : { "minimum" : 52.9412, "maximum" : 58.8235 },
        "vscan" : { "minimum" : 0, "maximum" : 10 }
    }
],

/// The boot-sequence configuration, contains the following items:
///  * type        : The type of the boot-sequence ('rainbow', 'knight_rider', 'none')
///  * duration_ms : The length of the boot-sequence [ms]
"bootsequence" :
{
    "type"        : "rainbow",
    "duration_ms" : 3000
},

/// The configuration for the frame-grabber, contains the following items:
///  * width        : The width of the grabbed frames [pixels]
///  * height       : The height of the grabbed frames [pixels]
///  * frequency_Hz : The frequency of the frame grab [Hz]
"framegrabber" :
{
    "width"        : 64,
    "height"       : 64,
    "frequency_Hz" : 10
},

/// The configuration of the XBMC connection used to enable and disable the frame-grabber.
/// Contains the following fields:
///  * xbmcAddress  : The IP address of the XBMC-host
///  * xbmcTcpPort  : The TCP-port of the XBMC-server
///  * grabVideo    : Flag indicating that the frame-grabber is on(true) during video playback
///  * grabPictures : Flag indicating that the frame-grabber is on(true) during picture show
///  * grabAudio    : Flag indicating that the frame-grabber is on(true) during audio playback
///  * grabMenu     : Flag indicating that the frame-grabber is on(true) in the XBMC menu
"xbmcVideoChecker" : {
    "xbmcAddress" : "127.0.0.1",
    "xbmcTcpPort" : 9090,
    "grabVideo" : true,
    "grabPictures" : true,
    "grabAudio" : true,
    "grabMenu" : false
},

/// The configuration of the Json server which enables the json remote interface
///  * port : Port at which the json server is started
"jsonServer" :
{
    "port" : 19444
},

/// The configuration of the Proto server which enables the protobuffer remote interface
///  * port : Port at which the protobuffer server is started
"protoServer" :
{
    "port" : 19445
}

}