しゃれおつなインテリアに囲まれて、リア充を満喫している…という夢を見たんだ。
この記事では Python を使って Philips Hue を制御する方法について、まとめていきます。
まとめより使えそうなコードが欲しいという方は下記の記事へ
1. ライブラリのインストール
Hue を操作するために Python のライブラリ phue を利用します。
sudo pip install phue
pip が使えなかった方は下記コマンドでインストール
#ちゃっかりcurlもインストールしていますが
sudo apt-get install curl
sudo curl -kL https://bootstrap.pypa.io/get-pip.py | python
※環境によってはエラー出るかも知れませんが、その時は管理者権限で実行してください。
2. ブリッジへ接続してランプを点灯させる
2.1.下記を適当な名前(connect_hue.py)で保存する
#!/usr/bin/python from phue import Bridge b = Bridge('192.168.180.2') # If the app is not registered and the button is not pressed, # press the button and call connect() (this only needs to be run a single time) b.connect() # Turn lamp 1 on b.set_light(1,'on', True)
※ ip_of_your_bridge には Hue Bridge のIPアドレスを指定する。
2.2. ブリッジのボタンを押して30秒以内に保存したスクリプトを実行する
python connect_hue.py
2.3.対応するランプ(1つ目のランプ)が点灯する。
上記スクリプト内のconnectの実行は最初の1度だけで、以降は不要となります。
3. HSV色空間について
・Philips Hueでは光源の色をHSV表色系で表現しています。
HSV表色系がわからない方は、まず HSV色空間 - Wikipedia を一読しましょう。
4. いろいろ試してみる
・スクリプトごとにIPアドレスを書くのが面倒なので、HueブリッジのIPアドレスを保存しておく
echo 192.168.XXX.XXX > my_hue_bridge_ip
※個人的にはHueブリッジのIPアドレスは固定にしておくほうがよいかと。
いよいよ下記からは、Pythonでランプ1の明度、色相、彩度を制御していきます。
ランプ1以外を制御したい場合はスクリプト内の lights の配列の添え字を任意で変えてください。
明度( Value = Brightness )の変更
・下記を set_brightness.py として保存
#!/usr/bin/python import sys from phue import Bridge if ( (len(sys.argv) < 2) or (int(sys.argv[1]) < 0) or (int(sys.argv[1]) > 255)): print 'Usage: # python %s 0-255' % sys.argv[0] quit() try: f = open('my_hue_bridge_ip', 'r') except IOError: print 'do "echo your_hue_bridge_ip > my_hue_bridge_ip"\n\ ex) echo 192.168.0.123 > my_hue_bridge_ip' quit() else: BRIDGE_IP = f.readline().rstrip() f.close() b = Bridge(BRIDGE_IP) lights = b.get_light_objects('id') BRIGHTNESS = int(sys.argv[1]) if(BRIGHTNESS != 0): lights[1].on = True lights[1].brightness = BRIGHTNESS else: lights[1].on = False
・明度を変える
python set_brightness.py 0~255までの設定したい明度
※明度 0 で OFF するようにスクリプトを組んでいます。
ちなみに明度は細かく設定できますが、見た目の変化は小さいです。
色相( Hue )の変更
・下記を set_hue.py として保存
#!/usr/bin/python import sys from phue import Bridge if ( (len(sys.argv) < 2) or (int(sys.argv[1]) < 0) or (int(sys.argv[1]) > 65535)): print 'Usage: # python %s 0-65535' % sys.argv[0] quit() try: f = open('my_hue_bridge_ip', 'r') except IOError: print 'do "echo your_hue_bridge_ip > my_hue_bridge_ip"\n\ ex) echo 192.168.0.123 > my_hue_bridge_ip' quit() else: BRIDGE_IP = f.readline().rstrip() f.close() b = Bridge(BRIDGE_IP) lights = b.get_light_objects('id') HUE = int(sys.argv[1]) lights[1].on = True lights[1].hue = HUE
・色相を変える
python set_hue.py 0~65535までの設定したい色相
※色相変更時に ON するようにスクリプトを組んでいます。
彩度( Saturation )の変更
・下記を set_saturation.py として保存
#!/usr/bin/python import sys from phue import Bridge if ( (len(sys.argv) < 2) or (int(sys.argv[1]) < 0) or (int(sys.argv[1]) > 255)): print 'Usage: # python %s 0-255' % sys.argv[0] quit() try: f = open('my_hue_bridge_ip', 'r') except IOError: print 'do "echo your_hue_bridge_ip > my_hue_bridge_ip"\n\ ex) echo 192.168.0.123 > my_hue_bridge_ip' quit() else: BRIDGE_IP = f.readline().rstrip() f.close() b = Bridge(BRIDGE_IP) lights = b.get_light_objects('id') SATURATION = int(sys.argv[1]) lights[1].on = True lights[1].saturation = SATURATION
・彩度を変える
python set_saturation.py 0~255までの設定したい彩度
※彩度変更時に ON するようにスクリプトを組んでいます。
いろいろ試すためのスクリプトは以上です。
他にも色が変わっていく時間を変えたり、全ランプをまとめて制御したりできますが、
基本的には明るさや色を変えるような使い方がメインになるのではないでしょうか。
スクリプトにしておくと簡単にコマンドラインから実行できるので cron と組み合わせたり、
system 関数を使って C のプログラムから呼んだりできるのがいいですね。
補足
参考サイト
GitHub - studioimaginaire/phue: A Python library for the Philips Hue system
Philips Hue API |
Philips Hue(ヒュー) スターターセット v2 929001156101
- 出版社/メーカー: Philips(フィリップス)
- 発売日: 2016/04/06
- メディア: Personal Computers
- この商品を含むブログを見る
Raspberry Pi 3 Model B (Element14)
- 出版社/メーカー: RASPBERRY-PI
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る