By Philips Hue you can control lamps in your home. The lamps are commanded to change color, dim or whatever via JSON PUT. And that’s a cool feature, because you can use JSON with tons of languages such as JavaScript, Jquery, PHP, Lua, Ruby … and of course Python. Here is a very simple Python Tkinter GUI.
Online you can find tons of Apps. But it is much more cool to write your own code.
First you have to register a user or get an API key from the box. Register as a developer at meethue. Follow the steps in order to get a whitelisted user, or simply get an API key. Then you are ready to go.
Python Libraries
First you have to prepare Python and import libraries:
from Tkinter import *
import requests
import json
- Tkinter is a library for GUI making.
- Requests is used for POST, GET and PUT with JSON.
- Json is Json.
The GUI class
Here is a autorunning class called Lamper (i.e. lamps in Danish). First a frame is defined. You can compare the frame with a canvas. It’s where stuff happens. Then we add a label and two buttons. Here you only see the first button:
class Lamper:
def __init__(self,master):
frame = Frame(master)
frame.pack()
''' label '''
self.label = Label(frame,text="Hue: all lights on / off panel")
self.label.pack()
''' turn off light '''
self.button = Button(frame,
text="Off",
fg="red",
command=self.off)
self.button.pack(side=RIGHT)
The Tkinterbutton has a command. It’s the command=self.off. This line will invoke a function if you click the button. The function looks like this:
def off(self):
self.taend = json.dumps({"on":False})
self.r = requests.put("http://192.168.0.xxx/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/groups/0/action", data=self.taend)
The second button is constructed in more or less the same way. However the line where you turn off the lamps must be changed: self.taend = json.dumps({“on”:True}).
Save your work
- Save your file e.g. as myHueOnOff.py
- Now try out your program, in a terminal window write:
python myHueOnOff.py
If you’re lucky you’ll see a window with two buttons. Try to press the off button. If they dim down to darkness … well then this is a very cool starting point to a new adventure in home automation.
Perspectives
Json is a cool data exchange format. You can get all kinds of data via Json. For instance you can get the temperature from the open weathermap API.
Then you could make a lamp that turns blue in the morning if it’s freezing outside. If you’re on a unix-like system, such as Linux or Mac, the program could fire off via CRONTAB every morning when you rise.
Get the code from Github
Here is the code from Github.