Python and Philips Hue

The Tkinter window
The Tkinter window

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
  1. Tkinter is a library for GUI making.
  2. Requests is used for POST, GET and PUT with JSON.
  3. 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.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Enable Notifications OK No thanks

We use cookies - more information

Multimusen.dk will set a few cookies from Doubleclick, Google and the Social Media plugins they ay set some cookies. Some of my pages use APIs - such as YouTube, LinkedIn, Google Fonts, Google Maps, Mapbox, Spotify, Jetpack, Twitter, Facebook &c.. Such plugins may set the odd cookie.

Close