ここ最近HueやMi-Lightなどの無線LAN経由で制御できるLEDランプが増えてきた。
とりわけMi-Lightが価格面でお手頃感があるので遊んだメモ。
Mi-Lightについて
未来のライト~Milightシリーズ
http://item.rakuten.co.jp/illumica/c/0000000205/
楽天ですぐに買えます、Amazonにも有りますが転売だったりして値段が高いです。
フルカラー対応モデルと、白色光源2色タイプ(白~アイボリー)がありそれぞれ対応するリモコンが異なります。
今回はRubyからたたいて遊ぶだけなので、下記の組み合わせで購入
- IT_M001 調光・調色 LED電球フルカラー
- IT_M005 無線LANコントローラ
無線LANコントローラは必須です。また802.11(bgn)環境でしか使えないので注意が必要。
そしてこの製品、中身は LimitlessLED という製品そのものです(おそらくOEM)。
LED Light Bulbs | LimitlessLED Color WiFi Bulbs For iPhone And Android
http://www.limitlessled.com/
基本的な機能は以下のとおり。
- LEDのON/OFF
- 明るさの制御(26段階)
- 色の変更(256段階フルカラー)
- プレセットの再生(全8種)
純正のiPhone APPがありますので、まず動作確認はこれで行うと良いでしょう。
LimitlessLED
https://itunes.apple.com/us/app/limitlessled/id594759938?mt=8
(Mi-light純正のものも有りますが、無線LANコントローラのIPアドレスが見れないためこちらを使う)
コミュニティが活発で各言語向けのライブラリーなども作られてます。
最近はNode.jsからも制御できるようになったので使い幅があって◎。
基本的な使い方
Mi-LightはLED単体では使えません。専用のリモコンか無線LANコントローラとペアリングして使います。
プログラムやiPhone APPから制御する場合は、無線LANコントローラに命令を送ると実行される仕組みです。
[ Script / iPhone APP ] >>> Wifi経由 / UDP >>> [ 無線LANコントローラ ] >>> 何かしらのプロトコル >>> LEDランプ
制御の基本
ScriptからMi-Lightを制御するには、無線LANコントローラの UDP/8899 に3バイトの命令を投げれば良いです。
命令については下記をよく見ること。
LED Light Bulbs | LimitlessLED Color WiFi Bulbs For iPhone And Android
http://www.limitlessled.com/dev/
色の扱いに若干癖がありますが慣れればOK
Ruby向けには gem/limitless-led があるので、これを使えばすぐに制御可能。
require 'limitless_led'
# 基本操作
bridge = LimitlessLed::Bridge.new(host: '無線LANコントローラのIPアドレス', port: 8899)
bridge.all_on # ペアリングされたすべてのLEDを点灯
bridge.all_off # ペアリングされたすべてのLEDを消灯
bridge.color(Color::RGB::Red) # 色情報は Color::RGB オブジェクトで渡す
bridge.brightness(2) # 明るさ最小
bridge.brightness(27) # 明るさ最大
# 直接制御も可能
bridge.send_packet "\x40\xB0\x55" # LEDがREDに
# グループの個別制御も可能
group = bridge.group(1)
group.color(Color::RGB::Blue)
group.brightness(2)
# 16進色コードからの変換
# LEDの都合、色相256段階でのみ制御となるため注意が必要、くすんだ色などは指定できませ
# 一度RGBからHSLに変換し、その後戻してあげればOK
color_rgb = Color::RGB.from_html(FF0000) # RED
color_hsl = color_rgb.to_hsl
color_hsl.s = 0.5 # 彩度
color_hsl.l = 0.5 # 輝度は共にニュートラルに
bridge.color(color_hsl.to_rgb)
あとは煮るなり焼くなり。
色の扱いについて
色相256段階となっているので、普通の256色とは異なります。
対応は下記の通り
0x00 (0xFF) Violet
0x10 Royal_Blue
0x20 Baby_Blue
0x30 Aqua
0x40 Mint
0x50 Seafoam_Green
0x60 Green
0x70 Lime_Green
0x80 Yellow
0x90 Yellow_Orange
0xA0 Orange
0xB0 Red
0xC0 Pink
0xD0 Fusia
0xE0 Lilac
0xF0 Lavendar
http://www.limitlessled.com/dev/
0x00と0xFFが紫となる色相環です。
上記コードのように一度HSLにしたColorオブジェクトを投げればよしなに変換されます。