2014.07.07 Development

“Home Control”とか大げさなタイトルだけどIRKitの話でもなくiOS Homekitの話でもなくて、
使おうとおもって買ったもののタイミングを逃して使わず家に転がっていた
DMXディマーパックを使ってAlfredで電気製品をオンオフしてみたっていうだけの話だったりする。

1. やろうとしたこと

Alfred(Macの多機能ランチャー)から電気とかサーキュレーターとかをオンオフする。
“home-run”で電源オン。”home-stop”で電源オフする。

2. 準備したモノ

ELATION DP-415 (DMX Dimmer Pack)
ENTTEC DMX USB Pro (USB => DMX Converter)
Mac

3. 使ったソフトウェア

Alfred (Power pack)
Max/MSP
iTerm

4. 構成

Alfred => (UDP Socket) => Max/MSP => (DMX) => DMX USB Pro => (DMX) => DMX Dimmer Pack => 電気製品

5. セットアップ

DMX USB Proのドライバ入れたりする。細かくは忘れた。

6. Alfredでやったこと

AlfredでComnmandを叩くWorkflowを作る。run用とstop用を2つ。
スクリーンショット 2014-07-07 17.34.34

macに最初から入ってるcuコマンドを使って、AlfredからMaxの間はUDPで通信する。

cu -z -u 127.0.0.1 50001;exit

キックするだけだから値もナシで、-zにしてる。
あとAlfredでコマンド叩くとterminalが一枚立ち上がってそのままになるからexitで閉じる。
ってどっかに書いてあってそうしてみたんだけど閉じなくて、iTermなら閉じてくれたからAlfredから起動するTerminalソフトをiTermにした。
Terminalでもexitで閉じるようにきっとなんか設定があるんだとおもう。

7. Max/MSPでやったこと

ビルトインのコンポーネントだと”udpreceive”があるけど正しくOSCフォーマットでないとはじかれる。
今回の用途だととりあえずキックできればいいしコマンドラインでOSCをどうやって送ればいいかわからなかったから
普通にUDPを扱えるexternalのsadam.udpReceiverを使う。
50001番ポートがキックされたらrun、50002番ポートがキックされたらstopということにする。(ほんとは同じポートで受け取った値で分岐すればいいと思う)
dmxusbproのexternalは無料だと2チャンネルまで、有料だともっと使えるみたいだけど今回はとりあえず無料でよいのでそのまま。
getdevsしたあとopenのmessageにシリアルポート名を直接打ってる。ここなんかいい感じにしたい。
dmxusbproに入力するのは0が最小、255が最大だから、オンオフみたいだからそれで電源をオンオフする。
スクリーンショット 2014-07-07 17.52.22

8. DMX USB Pro ~ DMX Dimmer Pack ~ 電気製品の間でやったこと

ここはもう特になにもやってなくて
dmxusbproのexternalがDMXをDMX USB Proに送ってくれて、そっからDP-415に送ってくれて、そしたら調光してくれる。

できあがりは冒頭の動画。

調光だからほんとは段階的に制御できるんだけど、サーキュレーターは中間の回転速度で異音がするし、
PWMじゃないから(だよね?)LED電球パっとついてパっと消えるし、やめた。
何動かしたら面白いかなー。

おわり。