Difference between revisions of "Install Hue"
m (→Launch the xPL Hue controller at startup) |
(→Create a control user) |
||
(6 intermediate revisions by one user not shown) | |||
Line 19: | Line 19: | ||
== Create a control user == | == Create a control user == | ||
− | Access to the [http://developers.meethue.com API] is limited by a whitelist. | + | Access to the [http://www.developers.meethue.com/philips-hue-api API] is limited by a whitelist. |
[http://developers.meethue.com/4_configurationapi.html#41_create_user Creating a new user] is done by pressing the link button on the bridge and then sending an HTTP POST request. | [http://developers.meethue.com/4_configurationapi.html#41_create_user Creating a new user] is done by pressing the link button on the bridge and then sending an HTTP POST request. | ||
− | Trying without | + | Trying without having pressed the button: |
curl http://192.168.1.166/api -d '{"devicetype":"Linux machine","username":"xplHueDevice"}' | curl http://192.168.1.166/api -d '{"devicetype":"Linux machine","username":"xplHueDevice"}' | ||
will produce: | will produce: | ||
Line 64: | Line 64: | ||
Install <code>HTTP::Tiny</code>: | Install <code>HTTP::Tiny</code>: | ||
+ | sudo apt-get install libhttp-tiny-perl | ||
+ | |||
+ | or: | ||
su | su | ||
perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i http | perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i http | ||
Line 91: | Line 94: | ||
Open a 3rd terminal window (on any machine with xPL installed) and control the lights: | Open a 3rd terminal window (on any machine with xPL installed) and control the lights: | ||
SCRIPTS_BASE_DIR=/home/control/Documents/Controls | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
− | $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.request device= | + | $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.request device=1 |
− | $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.basic device= | + | $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.basic device=1 command=activate |
− | $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.basic device= | + | $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.basic device=1 command=deactivate |
The first <code>xpl-send</code> command asks for the status of the bulb. | The first <code>xpl-send</code> command asks for the status of the bulb. | ||
Line 139: | Line 142: | ||
service xpl-hue start | service xpl-hue start | ||
service xpl-hue status | service xpl-hue status | ||
+ | initctl list | grep xpl | ||
ps aux | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///' | ps aux | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///' | ||
== Mac OS == | == Mac OS == | ||
− | On Mac OS, the xPL | + | On Mac OS, the xPL Hue controller starts-up later than the hub. |
Edit <code>/Library/LaunchDaemons/xpl-hue.plist</code>: | Edit <code>/Library/LaunchDaemons/xpl-hue.plist</code>: | ||
Line 172: | Line 176: | ||
ps ax | grep -i xpl | grep -v grep | ps ax | grep -i xpl | grep -v grep | ||
− | [[Category: install]] | + | [[Category: all]] [[Category: install]] [[Category: xPL]] |
Latest revision as of 09:08, 3 June 2015
The hue system consists of LED light bulbs connected via ZigBee to a bridge which is in turn connected to Ethernet. The bridge API implements a RESTful web service using HTTP methods.
Before all, make sure you have installed an xPL hub.
Contents
Access the Hue bridge
Discover the Hue bridge
The bridge can be discovered with the help of a web browser at URL: www.meethue.com/api/nupnp
.
It can be discovered in a terminal by:
curl -G http://www.meethue.com/api/nupnp
which produces an answer similar to:
[{"id":"001788fffe09f498","internalipaddress":"192.168.1.166"}]
The data structure is represented in text form with the help of JSON (JavaScript Object Notation).
Create a control user
Access to the API is limited by a whitelist. Creating a new user is done by pressing the link button on the bridge and then sending an HTTP POST request.
Trying without having pressed the button:
curl http://192.168.1.166/api -d '{"devicetype":"Linux machine","username":"xplHueDevice"}'
will produce:
[{"error":{"type":101,"address":"","description":"link button not pressed"}}]
Do it again afer having pressed the button.
Configure the Hue bridge
Get configuration info:
curl -G 192.168.1.166/api/xplHueDevice/config
Change IP address:
curl 192.168.1.166/api/xplHueDevice/config -X PUT -d '{"ipaddress": "192.168.1.202"},"dhcp": false' curl -G 192.168.1.202/api/xplHueDevice/config
Update the DNS server to attribute 192.168.1.202
to apollo.cofnet
(god of the ligtht).
Check IP address:
curl -G apollo.cofnet/api/xplHueDevice/config && echo
Hue bridge command line control
Get lights list:
curl -G apollo.cofnet/api/xplHueDevice/lights && echo
Get bulb state:
curl -G apollo.cofnet/api/xplHueDevice/lights/2 && echo
Turn light on and off again
curl apollo.cofnet/api/xplHueDevice/lights/2/state -X PUT -d '{"on": true}' && echo sleep 1 curl apollo.cofnet/api/xplHueDevice/lights/2/state -X PUT -d '{"on": false}' && echo
Turn light on, red:
curl apollo.cofnet/api/xplHueDevice/lights/2/state -X PUT -d '{"on": true, "hue": 0, "sat": 255, "bri": 255}' && echo
Change to blue within 10 seconds:
curl apollo.cofnet/api/xplHueDevice/lights/2/state -X PUT -d '{"hue": 46920, "transitiontime": 100}' && echo
Install xPL Hue controller
Install HTTP::Tiny
:
sudo apt-get install libhttp-tiny-perl
or:
su perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i http perl -MCPAN -e "install 'HTTP::Tiny'" exit
Download the xPL Hue controller script.
Move the script to xPL scripts directory:
SCRIPTS_BASE_DIR=/home/control/Documents/Controls mv xpl-hue.pl $SCRIPTS_BASE_DIR chown control:users $SCRIPTS_BASE_DIR/*.pl chmod 775 $SCRIPTS_BASE_DIR/*.pl
Test xPL Hue controller
Test it on a BeagleBone:
su control SCRIPTS_BASE_DIR=/home/control/Documents/Controls $SCRIPTS_BASE_DIR/xpl-hue.pl -h $SCRIPTS_BASE_DIR/xpl-hue.pl -vn hue
Open a 2nd terminal window (on any machine with xPL installed) and monitor the xPL protocol:
SCRIPTS_BASE_DIR=/home/control/Documents/Controls $SCRIPTS_BASE_DIR/xpl-monitor.pl -vf
Open a 3rd terminal window (on any machine with xPL installed) and control the lights:
SCRIPTS_BASE_DIR=/home/control/Documents/Controls $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.request device=1 $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.basic device=1 command=activate $SCRIPTS_BASE_DIR/xpl-send.pl -v -c lighting.basic device=1 command=deactivate
The first xpl-send
command asks for the status of the bulb.
The answer is seen in the xPL traffic monitor.
Launch the xPL Hue controller at startup
The xPL Hue clock controller is to be launched after the xPL hub.
Ubuntu
On Ubuntu, the xPL Hue controller starts-up once xpl-hub_started
has been emitted.
Edit /etc/init/xpl-hue.conf
:
################################################################################ # xPL hue, controls Philips hue light bulbs # description "xPL hue" version "1.0" author "Francois Corthay" #------------------------------------------------------------------------------- # Configuration variables # env SCRIPTS_DIR='/home/control/Documents/Controls' env SCRIPT_NAME='xpl-hue.pl' env PARAMETERS='-n hue' #------------------------------------------------------------------------------- # Start and stop conditions # start on xpl-hub_started stop on shutdown respawn setuid control setgid users #------------------------------------------------------------------------------- # Start daemon # exec $SCRIPTS_DIR/$SCRIPT_NAME $PARAMETERS
Start the device and test it:
su root service xpl-hue start service xpl-hue status initctl list | grep xpl ps aux | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///'
Mac OS
On Mac OS, the xPL Hue controller starts-up later than the hub.
Edit /Library/LaunchDaemons/xpl-hue.plist
:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>xPL Philips hue controller</string> <key>OnDemand</key> <false/> <key>UserName</key> <string>control</string> <key>ProgramArguments</key> <array> <string>/Users/control/Documents/Controls/xpl-hue.pl</string> <string>-n</string> <string>hue</string> <string>-w</string> <string>25</string> </array> </dict> </plist>
Load the xPL client:
launchctl load /Library/LaunchDaemons/xpl-hue.plist launchctl list | grep -i xpl ps ax | grep -i xpl | grep -v grep