Skip to content

Network and distributed features

redPanther edited this page Mar 31, 2016 · 20 revisions

Hyperion now supports a number of options to communicate with LEDs over a network as well as more complex distributed multi-instance deployments

Control Hyperion using the JSON interface

See Hyperion-remote for more details. You can also open your own TCP connection to drive Hyperion.

Simulated LED device

Don't have real LEDs yet ? Want to test your custom led layout config ? Develop effects and want to look how your effect performs on differnt layouts (e.g. tv ambilight, matrix, stripe)? Hypersim can run on another host and displays on screen the LEDs position AND by configuring Hyperion to send led data you can watch it live. See hypersim

UDP LED device support

Hyperion supports a UDP based led device type. LED data is simply sent as udp packets to a unicast or multicast address. Protocol 0 simply sends raw led data in RGBRGB in binary Protocol 2 uses a basic header to specify the starting led number in case you exceed the MTU This works great with an ESP8266 based led string receiver like this: https://github.com/penfold42/stuff/blob/master/ESP-udp-neo.ino

UDP listener "effect"

This listens on the specified UDP port and is compatible with protocol 0 above

Google ProtoBuffer and JSON message forwarding

Hyperion receives ProtoBuffer and JSON messages and has the option to forward those to other Hyperion instances be it local or on a remote network.

So if you want to control multiple Hyperion instances as one for instance via android app or hyperion-remote you can use ProtoBuffer and/or JSON message forwarding.

Forwarding example #1 - ProtoBuffer and JSON forwarding combined

The below configuration example snippet has 3 Hyperion instances involved where one has this configuration and will forward both ProtoBuffer and JSON messages to 2 other instances.

"protoServer" : 
{
     "port" : 19445
},
....
"jsonServer" : 
{
    "port" : 19444
},
....
"forwarder" :
{
    "proto" : [ "127.0.0.1:20445","192.168.178.88:19445" ],
    "json"  : [ "127.0.0.1:20444","192.168.178.88:19444" ]
},

The main Hyperion instance should have a ProtoBuffer input via Kodi Hyperion addon for instance or be supplied by a standalone live capture grabber (e.g. hyperion-v4l2).

The other two instances of Hyperion are on localhost (127.0.0.1) and the other on a remote host (192.168.178.88) which should have their own configuration. Multiple destinations are comma separated like in the example above.

Forwarding example #2 - JSON forwarding only

The below configuration example snippet has 3 Hyperion instances involved where one has this configuration and will forward JSON messages to 2 other instances.

"jsonServer" : 
{
    "port" : 19444
},
....
"forwarder" : {
  json : ["127.0.0.1:20444" , "192.168.178.88:19444"]
},

The other two instances of Hyperion are on localhost (127.0.0.1) and the other on a remote host (192.168.178.88) which should have their own configuration. Multiple destinations are comma separated like the example above.

Forwarding troubleshooting

  • Please keep an eye on the ports. Avoid using same ports for different Hyperion instances on localhost. Also don't use ports that are used by other services like Hyperion JSON server, Boblight or system services.