1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PhilipsHue Device

Introduction
Hyperion supports Philips Hue by using the official RESTful API.

@apurbas made 2 nice pictures that explain what you need to do.
More explanations are below the pictures.

User account creation and get lightID



Device configuration
And how to setting up your config file



Further Explanations

Device configuration
To enable the support, set "type" to "philipshue" and as output the IP adress of your hue bridge in the device section of your Hyperion config file:

Code:
"device" :
         {
                 "name"       : "MyPi",
                 "type"       : "philipshue",
                 "output"     : "192.168.178.33",
                 "username"   : "your-username-goes-here",
                 "colorOrder" : "rgb",
                 "switchOffOnBlack" : false,
                 "lightIds"   : [1,2]
         }
The default behaviour is to read all available light ids from the bridge.
By supplying an array of integers, this default can be overridden in the case that the order of lights on the bridge does not match the ordering of the lights in the configuration file.

The light ids can be obtained from your bridge under the following url:
`http://ip-of-your-bridge/api/username/lights/`


Switch lights off on black color
Not all colors can be displayed by the Philips Hue devices and black will result in a bluish, dark color. Therefore, you can let Hyperion switch off your lights when the light should be black:
Code:
                  "switchOffOnBlack" : true
It should be noted, that switching on / off takes more time than a color change due to a fading animation of the device.


Rate limitation
The performance of the Philips Hue system is limited. The bridge can handle up to 10-30 requests / second.
Due to this limitation, the framegrabber frequency should be set to _10 / number-of-lights Hz_. This is an example for two lights
Code:
"framegrabber" :
         {
                  "width" : 64,
                  "height" : 64,
                  "frequency_Hz" : 5.0
         },
         ...

Smoothing
Should be turned off since it results in too frequent requests to the bridge.
Code:
"smoothing" :
         {
                  "type"            : "none",
                  ...
         }

Example configuration file
The following part shows a configuration file for two lights positioned left / right of the TV:
Code:
// Automatically generated configuration file for 'Hyperion daemon'
// Generated by: HyperCon (The Hyperion deamon configuration file builder

{
    /// 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', 'ldp8806',
    ///                  'lpd6803', 'sedu', 'adalight', 'lightpack', 'test' and 'none')
    /// * 'output'     : The output specification depends on selected device. This can for example be the
    ///                  device specifier, device serial number, or the output file name
    /// * 'rate'       : The baudrate of the output to the device
    /// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
    "device" :
    {
        "name"       : "MyPi",
        "type"       : "philipshue",
        "output"     : "192.168.178.33",
        "colorOrder" : "rgb",
        "switchOffOnBlack" : false
    },

    /// Color manipulation configuration used to tune the output colors to specific surroundings.
    /// The configuration contains a list of color-transforms. Each transform contains the
    /// following fields:
    ///  * 'id'   : The unique identifier of the color transformation (eg 'device_1')    ///  * 'leds' : The indices (or index ranges) of the leds to which this color transform applies
    ///             (eg '0-5, 9, 11, 12-17'). The indices are zero based.    ///  * '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)
    ///
    /// Next to the list with color transforms there is also a smoothing option.
    ///  * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning
    ///                  parameters:
    ///            - 'type'            The type of smoothing algorithm ('linear' or 'none')
    ///            - 'time_ms'         The time constant for smoothing algorithm in milliseconds
    ///            - 'updateFrequency' The update frequency of the leds in Hz
    "color" :
    {
        "transform" :
        [
            {
                "id"   : "default",
                "leds" : "*",
                "hsv" :
                {
                    "saturationGain" : 1.0000,
                    "valueGain"      : 1.0000
                },
                "red" :
                {
                    "threshold"  : 0.0000,
                    "gamma"      : 1.0000,
                    "blacklevel" : 0.0000,
                    "whitelevel" : 1.0000
                },
                "green" :
                {
                    "threshold"  : 0.0000,
                    "gamma"      : 1.0000,
                    "blacklevel" : 0.0000,
                    "whitelevel" : 1.0000
                },
                "blue" :
                {
                    "threshold"  : 0.0000,
                    "gamma"      : 1.0000,
                    "blacklevel" : 0.0000,
                    "whitelevel" : 1.0000
                }
            }
        ],
        "smoothing" :
        {
            "type"            : "none",
            "time_ms"         : 200,
            "updateFrequency" : 20.0000
        }
    },

    ///  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" : 0.0000, "maximum" : 0.1000 },
            "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
        },
        {
            "index" : 1,
            "hscan" : { "minimum" : 0.9000, "maximum" : 1.0000 },
            "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
        }
    ],

    /// The black border configuration, contains the following items:
    ///  * enable    : true if the detector should be activated
    ///  * threshold : Value below which a pixel is regarded as black (value between 0.0 and 1.0)
    "blackborderdetector" :
    {
        "enable" : true,
        "threshold" : 0.01
    },

    /// The configuration of the effect engine, contains the following items:
    ///  * paths        : An array with absolute location(s) of directories with effects
    ///  * bootsequence : The effect selected as 'boot sequence'
    "effects" :
    {
        "paths" :
        [
            "/opt/hyperion/effects"
        ]
    },

    "bootsequence" :
    {
        "effect" : "Rainbow swirl fast",
        "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" : 5.0
    },

    /// 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
    ///  * grabScreensaver   : Flag indicating that the frame-grabber is on(true) when XBMC is on screensaver
    ///  * enable3DDetection : Flag indicating that the frame-grabber should switch to a 3D compatible modus if a 3D video is playing
    "xbmcVideoChecker" :
    {
        "xbmcAddress" : "127.0.0.1",
        "xbmcTcpPort" : 9090,
        "grabVideo" : true,
        "grabPictures" : true,
        "grabAudio" : false,
        "grabMenu" : false,
        "grabScreensaver" : false,
        "enable3DDetection" : true
    },

    /// 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
    },

    /// The configuration of the boblight server which enables the boblight remote interface
    ///  * port : Port at which the boblight server is started
//     "boblightServer" :
//     {
//         "port" : 19333
//     },

    "endOfJson" : "endOfJson"
}

This page has been seen 4,498 times.