jimboca / hue-upnp

Philips Hue UPNP and HTTP emulator (works with the Android Hue app and Logitech Harmony Home Remotes)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#Description This is a simple customizable Philip hue emulator that works with a Harmony remote (and now the Amazon Echo -thanks to jimboca). The main purpose is to allow the Harmony/Echo to run anything and not just hue light bulbs.

#Why I don't own a Philips hue but I wanted an emulator so I could test it against my Harmony remote which supports them. I found a number of emulators but none of them worked with the Harmony remote. Sagen's python code was easiest to modify and do what I needed. I've never coded in python before so this was a good experience.

#Some pitfalls to mention:

  1. The UDP response needs to be bound to port 1900 (like the request) and sent to the same port that the client used (for Harmony)

  2. Harmony sends three ST requests at a time:
    ST: ssdp:all
    ST: urn:schemas-upnp-org:device:basic:1
    ST: urn:schemas-udap:service:smartText:1

  3. The Harmony remote will only progress if you reply back with the same ST. All other examples online use this ST instead:
    ST: upnp:rootdevice

  4. I got hung up on the smartText one for a while. It turns out this has something to do with LG TVs. I have no idea why it is using it.

  5. The HTTP PORT used can be anything and the Harmony remote will use it. However, if you use the standard Phillip Hue Android (and iOS?), you need to use port 80.

  6. I added in a EXTERNALPROG call, so anyone can toss in their own commands. I use this so I can remotely call WakeOnLan using my remote. I also use it to call a Wemo On-Off script. For whatever reason Logitech doesn't support Wemos (yet).

#History


Aug 2015: Logitech firmware broke things for me. I noticed that FIN packets were getting sent during the "GET /api/lights" calls before it got the results. I removed some of the 1 seconds sleeps that I don't think are needed and I also updated it so additional 'request.recv' aren't done unless a content-length > 0 is found. Things appear to be back in business now.


Nov 2015: Now supports the Amazon Echo as well (Thanks Jimboca)


Dec 2015: Pulled in jimboca code which includes a nice json parser. Also, moved everything configurable to a config file: hueUpnp_config.py. Another note is the hue-upnp-helper.sh now expects the device name instead of the device number as the first parameter.

About

Philips Hue UPNP and HTTP emulator (works with the Android Hue app and Logitech Harmony Home Remotes)


Languages

Language:Python 88.7%Language:Shell 11.3%