Philips Hue and Empty Epsilon (need help)

edited December 2017 in EmptyEpsilon
Hello alltogether.

Anyone managed to use Philips Hue light with a Philips Hue Bridge in combination with the hardware.ini ??

Any Help or even a instruction would be nice.

(Handle me as someone who has no clue about DMX and just "somehow" managed to use the Artemis DMX Editior to handle the light correctly at Artemis,...)

Comments

  • Most likely you need an extra software component.

    Most likely: EE supports the "sACN" protocol. At which point you need some piece of software to connect the sACN protocol to the philips hue bridge protocol.

    (Note that it would be possible to directly support the philips hue bridge from EE, but it's a bit too expensive for me right now)
  • Daid, that is understandable. I am considering adding the support in my spare time. I do not believe it would take that long, and I have a break coming soon. All that I would ask is for any questions that I have to be answered, and my update to be directly implemented into the game.
    One thing we could do: I have hue lights at my house, I could create a Hamachi private network, and you could develop official support.
    All I know is I want Hue support! And I will go through much effort to get it.

    Btw. Admins, could you approve my real account "k9lego" and delete this account? Or delete the other k9lego and change my name to k9lego?
  • k9lego, I changed your existing account to the correct spelling and declined the other account. You should be good to go.
  • I will try to make "sACN" work daid, thanks for the idea.

    Thanks for the answer and I`m happy to hear someone is willing to put his skill on that task and is trying to make Hue Lights beeing supported by the Game.

    Hope to hear soon from you k9lego ;)
  • Looked a bit into the Hue API, doesn't look that complex to get it to work.
  • Cool! I can test it out to verify it works! :) The biggest thing to watch out for is the Hue rate limit compared to the DMX limit. :)
  • https://github.com/daid/EmptyEpsilon/commit/513559c5cab01f399fe5eb44ee9b2c46dc043655
    This could potentially work. But most likely won't in 1 try. So I added quite some logging in case things don't work.

    hardware.ini configuration:
    
    [hardware]
    device = PhilipsHueDevice
    ip = <get the IP address from the app>
    
    [channels]
    Light1 = 1,2,3
    Light2 = 4,5,6
    
    # Turn on the first hue light when shields are on, to 100% brightness
    [state]
    condition = ShieldsUp
    target = Light1
    value = 1.0, 1.0, 0.0
    
    # Flash the 2nd hue light red when we take hull damage.
    [event]
    trigger = < Hull
    target = Light2
    runtime = 0.2
    value = 1.0, 0.0, 0.0
    
    You need to manual enter the IP address of the bridge. The hue APP should be able to show this. (There are auto detect methods, but that makes everything more complex)

    If it can find the philips hue bridge then EE might appear to hang during startup for 2 minutes. During these 2 minutes it tries to get access to the bridge. You need to press the button on the bridge to allow access. EE will start as soon as it notices access. Or if it times out. It will save the access token, so you only need to do this once.

    The "channels" configuration maps internal channels to names. The EE PhilipsHueDevice exposes 3 channels per light, for brightness, saturation and hue. So this is pretty much a straight mapping 123->light1, 345->light2, 678->light3, etc... you can use any name for the lights you want. Main reason you have to do this is because how the EE hardware system is working.

    Finally you bind states and events to channel names, as you would for any hardware mapping. The 3 values respond to brightness/saturation and hue.

    I hard coded up to 16 lights right now.
  • edited December 2017
    Wow!!!!!!!!!! :) :) :) THANK YOU SO MUCH.
    It works!!!
    There was no delay starting up after I pressed the button. :smiley:
    I would say it's ready to public.

    I really appreciate this daid! I spent hours trying to figure out how to bridge DMX to Hue. This just works right out of the box!!! :)
  • Well, also thank philips for providing decent API documentation and examples. Even if some details are a bit unclear, so I had to make a few educated guesses.
  • First of all thanks daid! Hope you put it in the next EE Version and release it soon, since I`m not able to compile it,... (will ask a friend of mine to do it for me)

    In short again: You are a genius daid. Thanks!
  • I want to address the OpenAL issue before I do a build. I hope to do so before the new year.
  • edited December 2017
    Sure, that's okay. I may have discovered a glitch in the hue system. I'm looking into it right now.
    For some reason the channels are messed up.
    The other thing I am looking into is the DMX lights fade time.
  • What do you mean with channels messed up?
  • Never mind, I was having some DMX-file related issues.
    I do have a request though. Could you see if you can get transitiontime working for Hue? It only updates one light at a time, so there is a delay between each light changing. It would work better with transition time.
  • The transition time will make one light state fade to the next. Not sure how good that will look on certain states/actions. But I can make it configurable in the hardware.ini
  • Thanks for what you've added so far! Question, would it be possible to configure it on a per-event basis? Finally, is there a way I can add multiple commands in the same event, have a delay, and adjust the transition time?

    The issue I am having right now is with 5 lights, the transitions are quite choppy since only one light can be updated at a time...

    Here's what I would like to be able to do:
    Something like this:
    Player is hit event
    Flash lights 1-5 on with transition time 4
    wait 1000
    flash lights 1-5 off with transition time 3
    wait 2000
    Flash lights 1-5 on with transition time 4
    wait 1000
    flash lights 1-5 off with transition time 5
  • Hey there,

    I have managed to get the hue lights working, which is great!

    I just have one question?

    I am trying to have a 'main cabin light' that is currently using the condition = HasShip switch, but I was wondering if there is a way that I can do the following:

    During normal operation, the cabin lights are set to normal (I have this working)
    When we enter a nebula the cabin lights turn to purple
    When we dock, cabin lights turn to blue
    When we are normal, cabin lights return to normal

    I have managed to get the lights working for each of the conditions individually but can't get it to transition from normal to each status then back to normal.

    Is there a state that is a base state that the lights always return to, rather than off?
  • The order of the [state] sections count in this case. So start of with the "normal" and after that have [state] sections that overrule that state in certain conditions.

    Something along the lines of:
    
    [state]
    condition = Always
    target = MainCabinLight
    value = 1.0
    
    [state]
    condition = HasShip == 0
    target = MainCabinLight
    value = 0.0
    
    [state]
    condition = Docking == 1
    target = MainCabinLight
    value = 0.7
    
    [state]
    condition = InNebula == 1
    target = MainCabinLight
    value = 0.5
    
    With this example, it first turns on the light, but not if the ship has been destroyed, as the 2nd part overrules this. Then if we are docking the light is put to 70%, and finally, if we are in a nebula, it goes to 50%.

    Lowest "true" state takes priority. So if we are docking inside a nebula, we get the nebula result.
  • Hey, could you give me the files you setup? I've just been playing without Hue because I could not get it comfortably setup.
    How many lights are you using? etc.
    Could you DM me?
    http://discord.gg/buRcFfm

    If that link doesn't work:
    http://dscord.io/EmptyEpsilon
    http://dscord.me/EmptyEpsilon
  • edited August 19
    This is my current hardware.ini file.
    Still a work in progress.

    It took a bit of fiddling around to figure out the colour codes (values) but they seem to work.

    I have added the colour codes I found to my file so I can reference them easily.

    [hardware]
    device = PhilipsHueDevice
    ip = XXX.XXX.XXX.XXX

    [channels]
    LightStrip = 1,2,3
    Cabin = 4,5,6

    # HUE COLOURS
    # Red: 1.0, 1.0, 0.0
    # Gold: 1.0, 1.0, 0.1
    # Yellow: 1.0, 1.0, 0.15
    # Yellowish Green: 1.0, 1.0, 0.2
    # Green: 1.0, 1.0, 0.3
    # Dark Green: 1.0, 1.0, 0.4
    # Aqua: 1.0, 1.0, 0.5
    # Sky Blue: 1.0, 1.0, 0.6
    # Dark Blue: 1.0, 1.0, 0.7
    # Purple: 1.0, 1.0, 0.8
    # Pink: 1.0, 1.0, 0.9
    # White: 1.0, 0.0, 0.0
    # Tinted Colour: 1.0, 0.25, x.x [last var for col above]

    # GREEN ALERT (NORMAL)
    # Light Strip OFF
    [state]
    condition = Alert == 0
    target = LightStrip
    value = 0.0, 0.0, 0.0

    # YELLOW ALERT
    # Light Strip
    [state]
    condition = YellowAlert
    target = LightStrip
    value = 1.0, 0.96, 0.124

    # RED ALERT
    # Light Strip
    [state]
    condition = RedAlert
    target = LightStrip
    value = 1.0, 1.0, 0.0

    # DOCKING
    # Light Strip
    [state]
    condition = Docking
    target = LightStrip
    value = 1.0, 1.0, 0.7
    effect = Glow
    min_value = 1.0,1.0,0.6
    max_value = 1.0,1.0,0.7
    time = 1

    # JUMPING
    # Light Strip
    [state]
    condition = Jumping
    target = LightStrip
    value = 1.0, 1.0, 0.05
    effect = Glow
    min_value = 1.0,1.0,0.05
    max_value = 1.0,1.0,0.15
    time = 1

    # MAIN STATE - GAME IN PROGRESS
    [state]
    condition = Always
    target = Cabin
    value = 0.25, 0.0, 0.0

    # MAIN STATE - NO SHIP, NO GAME
    [state]
    condition = HasShip == 0
    target = Cabin
    value = 0.75, 0.0,0.0

    # CABIN IN NEBULA
    [state]
    condition = InNebula
    target = Cabin
    value = 0.25, 0.5, 0.8
    effect = Glow
    min_value = 0.35, 0.7, 0.8
    max_value = 0.35, 0.7, 0.9
    time = 5

    # CABIN IN NEBULA
    [state]
    condition = Docked
    target = Cabin
    value = 1.0, 1.0, 0.60

    # CABIN Jumping
    [state]
    condition = Jumping
    target = Cabin
    value = 0.5, 1.0, 0.10
    effect = Glow
    min_value = 0.5, 1.0, 0.10
    max_value = 0.5, 1.0, 0.15
    time = 0.5

    [event]
    trigger = Jumped == 1
    target = Cabin
    value = 0.0, 0.0, 0.0
Sign In or Register to comment.