// This is a example config (hyperion.config.json) with comments, in any case you need to create your own one with HyperCon! // location of all configs: /etc/hyperion // Webpage: https://www.hyperion-project.org { /// general Settings /// * 'name' : The user friendly name of the hyperion instance (used for network things) /// * 'versionBranch' : Which branch should be used for hyperion version /// * 'showOptHelp' : Show option expanations at the webui. Highly recommended for beginners. "general" : { "name" : "MyHyperionConfig", "watchedVersionBranch" : "Stable", "showOptHelp" : true }, /// set log level: silent warn verbose debug "logger" : { "level" : "warn" }, /// 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 /// * [device type specific configuration] /// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.). /// * 'rewriteTime': in ms. Data is resend to leds, if no new data is available in thistime. 0 means no refresh "device" : { "type" : "file", "hardwareLedCount" : 1, "output" : "/dev/null", "rate" : 1000000, "colorOrder" : "rgb", "rewriteTime": 5000 }, /// 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: /// * 'imageToLedMappingType' : multicolor_mean - every led has it's own calculatedmean color /// unicolor_mean - every led has same color, color is the mean of whole image /// * 'channelAdjustment' /// * 'id' : The unique identifier of the channel adjustments (eg 'device_1') /// * 'leds' : The indices (or index ranges) of the leds to which this channel adjustment applies /// (eg '0-5, 9, 11, 12-17'). The indices are zero based. /// * 'white'/'red'/'green'/'blue'/'cyan'/'magenta'/'yellow' : Array of RGB to adjust the output color /// * 'gammaRed'/'gammaGreen'/'gammaBlue' : Gamma value for each channel /// * 'id' : The unique identifier of the channel adjustments (eg 'device_1') /// * 'id' : The unique identifier of the channel adjustments (eg 'device_1') /// * 'backlightThreshold' : Minimum brightness (backlight) /// * 'backlightColored' : backlight with color, instead of white /// * 'brightness' : overall brightness /// * 'brightnessCompensation' : 100 means brightness differences are compensated (white is as bright as red, is as bright as yellow. /// 0 means white is 3x brighter than red, yellow is 2x brighter than red "color" : { "imageToLedMappingType" : "multicolor_mean", "channelAdjustment" : [ { "id" : "default", "leds" : "*", "white" : [255,255,255], "red" : [255,0,0], "green" : [0,255,0], "blue" : [0,0,255], "cyan" : [0,255,255], "magenta" : [255,0,255], "yellow" : [255,255,0], "gammaRed" : 1.5, "gammaGreen" : 1.5, "gammaBlue" : 1.5, "backlightThreshold" : 0, "backlightColored" : false, "brightness" : 100, "brightnessCompensation" : 80 } ] }, /// smoothing /// * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning /// parameters: /// - 'enable' Enable or disable the smoothing (true/false) /// - '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 /// - 'updateDelay' The delay of the output to leds (in periods of smoothing) /// - 'continuousOutput' Flag for enabling continuous output to Leds regardless of new input or not "smoothing" : { "enable" : true, "type" : "linear", "time_ms" : 200, "updateFrequency" : 25.0000, "updateDelay" : 0, "continuousOutput" : true }, /// Configuration for the embedded V4L2 grabber /// * device : V4L2 Device to use [default="auto"] (Auto detection) /// * standard : Video standard (PAL/NTSC/SECAM/NO_CHANGE) [default="NO_CHANGE"] /// * sizeDecimation : Size decimation factor [default=8] /// * cropLeft : Cropping from the left [default=0] /// * cropRight : Cropping from the right [default=0] /// * cropTop : Cropping from the top [default=0] /// * cropBottom : Cropping from the bottom [default=0] /// * signalDetection : enable/disable signal detection [default=true] /// * redSignalThreshold : Signal threshold for the red channel between 0 and 100 [default=5] /// * greenSignalThreshold : Signal threshold for the green channel between 0 and 100 [default=5] /// * blueSignalThreshold : Signal threshold for the blue channel between 0 and 100 [default=5] /// * sDHOffsetMin : area for signal detection - horizontal minimum offset value. Values between 0.0 and 1.0 /// * sDVOffsetMin : area for signal detection - vertical minimum offset value. Values between 0.0 and 1.0 /// * sDHOffsetMax : area for signal detection - horizontal maximum offset value. Values between 0.0 and 1.0 /// * sDVOffsetMax : area for signal detection - vertical maximum offset value. Values between 0.0 and 1.0 "grabberV4L2" : { "device" : "auto", "standard" : "NO_CHANGE", "sizeDecimation" : 8, "priority" : 240, "cropLeft" : 0, "cropRight" : 0, "cropTop" : 0, "cropBottom" : 0, "redSignalThreshold" : 5, "greenSignalThreshold" : 5, "blueSignalThreshold" : 5, "signalDetection" : false, "sDVOffsetMin" : 0.25, "sDHOffsetMin" : 0.25, "sDVOffsetMax" : 0.75, "sDHOffsetMax" : 0.75 }, /// The configuration for the frame-grabber, contains the following items: /// * type : type of grabber. (auto|osx|dispmanx|amlogic|x11|framebuffer|qt) [auto] /// * 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] /// * ATTENTION : Power-of-Two resolution is not supported and leads to unexpected behaviour! "framegrabber" : { // for all type of grabbers "type" : "framebuffer", "frequency_Hz" : 10, "cropLeft" : 0, "cropRight" : 0, "cropTop" : 0, "cropBottom" : 0, // valid for grabber: osx|dispmanx|amlogic|framebuffer "width" : 96, "height" : 96, // valid for x11|qt "pixelDecimation" : 8, // valid for qt "display" 0, // valid for framebuffer "device" : "/dev/fb0" }, /// 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 and 100 [%]) /// * unknownFrameCnt : Number of frames without any detection before the border is set to 0 (default 600) /// * borderFrameCnt : Number of frames before a consistent detected border gets set (default 50) /// * maxInconsistentCnt : Number of inconsistent frames that are ignored before a new border gets a chance to proof consistency /// * blurRemoveCnt : Number of pixels that get removed from the detected border to cut away blur (default 1) /// * mode : Border detection mode (values=default,classic,osd) "blackborderdetector" : { "enable" : true, "threshold" : 5, "unknownFrameCnt" : 600, "borderFrameCnt" : 50, "maxInconsistentCnt" : 10, "blurRemoveCnt" : 1, "mode" : "default" }, /// foregroundEffect sets a "booteffect" or "bootcolor" during startup for a given period in ms (duration_ms) /// * enable : if true, foreground effect is enabled /// * type : choose between "color" or "effect" /// * color : if type is color, a color is used (RGB) (example: [0,0,255]) /// * effect : if type is effect a effect is used (example: "Rainbow swirl fast") /// * duration_ms : The duration of the selected effect or color (0=endless) /// HINT: "foregroundEffect" starts always with priority 0, so it blocks all remotes and grabbers if the duration_ms is endless (0) "foregroundEffect" : { "enable" : true, "type" : "effect", "color" : [0,0,255], "effect" : "Rainbow swirl fast", "duration_ms" : 3000 }, /// backgroundEffect sets a background effect or color. It is used when all capture devices are stopped (manual via remote). Could be also selected via priorities selection. /// * enable : if true, background effect is enabled /// * type : choose between "color" or "effect" /// * color : if type is color, a color is used (RGB) (example: [255,134,0]) /// * effect : if type is effect a effect is used (example: "Rainbow swirl fast") "backgroundEffect" : { "enable" : true, "type" : "effect", "color" : [255,138,0], "effect" : "Warm mood blobs" }, /// The configuration of the Json/Proto forwarder. Forward messages to multiple instances of Hyperion on same and/or other hosts /// 'proto' is mostly used for video streams and 'json' for effects /// * enable : Enable or disable the forwarder (true/false) /// * proto : Proto server adress and port of your target. Syntax:[IP:PORT] -> ["127.0.0.1:19401"] or more instances to forward ["127.0.0.1:19401","192.168.0.24:19403"] /// * json : Json server adress and port of your target. Syntax:[IP:PORT] -> ["127.0.0.1:19446"] or more instances to forward ["127.0.0.1:19446","192.168.0.24:19448"] /// HINT:If you redirect to "127.0.0.1" (localhost) you could start a second hyperion with another device/led config! /// Be sure your client(s) is/are listening on the configured ports. The second Hyperion (if used) also needs to be configured! (WebUI -> Settings Level (Expert) -> Configuration -> Network Services -> Forwarder) "forwarder" : { "enable" : false, "proto" : ["127.0.0.1:19401"], "json" : ["127.0.0.1:19446"] }, /// 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 Flatbuffer server which enables the Flatbuffer remote interface /// * port : Port at which the flatbuffer server is started "flatbufServer" : { "enable" : true, "port" : 19400, "timeout" : 5 }, /// The configuration of the Protobuffer server which enables the Protobuffer remote interface /// * port : Port at which the protobuffer server is started "protoServer" : { "enable" : true, "port" : 19445, "timeout" : 5 }, /// The configuration of the boblight server which enables the boblight remote interface /// * enable : Enable or disable the boblight server (true/false) /// * port : Port at which the boblight server is started /// * priority : Priority of the boblight server (Default=128) HINT: lower value result in HIGHER priority! "boblightServer" : { "enable" : false, "port" : 19333, "priority" : 128 }, /// Configuration of the Hyperion webserver /// * document_root : path to hyperion webapp files (webconfig developer only) /// * port : the port where hyperion webapp is accasible /// * sslPort : the secure (HTTPS) port of the hyperion webapp /// * crtPath : the path to a certificate file to allow HTTPS connections. Should be in PEM format /// * keyPath : the path to a private key file to allow HTTPS connections. Should be in PEM format and RSA encrypted /// * keyPassPhrase : optional: If the key file requires a password add it here "webConfig" : { "document_root" : "/path/to/files", "port" : 8090, "sslPort" : 8092, "crtPath" : "/path/to/mycert.crt", "keyPath" : "/path/to/mykey.key", "keyPassPhrase" : "" }, /// The configuration of the effect engine, contains the following items: /// * paths : An array with absolute location(s) of directories with effects, /// $ROOT is a keyword which will be replaced with the current rootPath that can be specified on startup from the commandline (defaults to your home directory) /// * disable : An array with effect names that shouldn't be loaded "effects" : { "paths" : [ "$ROOT/custom-effects", "/usr/share/hyperion/effects" ], "disable" : [ "Rainbow swirl", "X-Mas" ] }, "instCapture" : { "systemEnable" : true, "systemPriority" : 250, "v4lEnable" : false, "v4lPriority" : 240 }, "network" : { "internetAccessAPI" : false, "ipWhitelist" : [], "apiAuth" : true, "localApiAuth" : false }, /// Recreate and save led layouts made with web config. These values are just helpers for ui, not for Hyperion. "ledConfig" : { "top" : 8, "bottom" : 8, "left" : 5, "right" : 5, "glength" : 0, "gpos" : 0, "position" : 0, "reverse" : false, "hdepth" : 8, "vdepth" : 5, "overlap" : 0, "edgegap" : 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": [ { "hscan": { "maximum": 0.125, "minimum": 0 }, "index": 0, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 0.25, "minimum": 0.125 }, "index": 1, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 0.375, "minimum": 0.25 }, "index": 2, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 0.5, "minimum": 0.375 }, "index": 3, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 0.625, "minimum": 0.5 }, "index": 4, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 0.75, "minimum": 0.625 }, "index": 5, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 0.875, "minimum": 0.75 }, "index": 6, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 1, "minimum": 0.875 }, "index": 7, "vscan": { "maximum": 0.08, "minimum": 0 } }, { "hscan": { "maximum": 1, "minimum": 0.95 }, "index": 8, "vscan": { "maximum": 0.2, "minimum": 0 } }, { "hscan": { "maximum": 1, "minimum": 0.95 }, "index": 9, "vscan": { "maximum": 0.4, "minimum": 0.2 } }, { "hscan": { "maximum": 1, "minimum": 0.95 }, "index": 10, "vscan": { "maximum": 0.6, "minimum": 0.4 } }, { "hscan": { "maximum": 1, "minimum": 0.95 }, "index": 11, "vscan": { "maximum": 0.8, "minimum": 0.6 } }, { "hscan": { "maximum": 1, "minimum": 0.95 }, "index": 12, "vscan": { "maximum": 1, "minimum": 0.8 } }, { "hscan": { "maximum": 1, "minimum": 0.875 }, "index": 13, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.875, "minimum": 0.75 }, "index": 14, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.75, "minimum": 0.625 }, "index": 15, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.625, "minimum": 0.5 }, "index": 16, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.5, "minimum": 0.375 }, "index": 17, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.375, "minimum": 0.25 }, "index": 18, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.25, "minimum": 0.125 }, "index": 19, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.125, "minimum": 0 }, "index": 20, "vscan": { "maximum": 1, "minimum": 0.92 } }, { "hscan": { "maximum": 0.05, "minimum": 0 }, "index": 21, "vscan": { "maximum": 1, "minimum": 0.8 } }, { "hscan": { "maximum": 0.05, "minimum": 0 }, "index": 22, "vscan": { "maximum": 0.8, "minimum": 0.6 } }, { "hscan": { "maximum": 0.05, "minimum": 0 }, "index": 23, "vscan": { "maximum": 0.6, "minimum": 0.4 } }, { "hscan": { "maximum": 0.05, "minimum": 0 }, "index": 24, "vscan": { "maximum": 0.4, "minimum": 0.2 } }, { "hscan": { "maximum": 0.05, "minimum": 0 }, "index": 25, "vscan": { "maximum": 0.2, "minimum": 0 } } ] }