大宮技研が販売する赤外線ブラスターであるirMagicianをClojureから扱えるようにするライブラリをつくってみました。
irMagicianは、LinuxだとCDC-ACMのドライバを使用するため、アプリからは/dev/ttyACM0といったデバイスファイルを通じてお話することができ、インターフェースも容易なため、すでに、たくさんの言語用のライブラリがつくられています。(Python, Javascript etc...)
仕様はこちら↓
http://www.omiya-giken.com/?page_id=889
しかし、Clojurianな自分としては、やっぱりClojureからさわりたいので、仕様を読みつつライブラリを書いてみました。
https://gitlab.com/myst3m/irmagician
準備
用意したもの:
- irMagician: (http://www.omiya-giken.com/?page_id=837)
環境:
- Debian GNU/Linux
(RaspbianでもOK)
使い方
READMEに、使い方はある程度、細かく記載したのだけれども、基本操作としてはir-openでポートをオープンして、その後命令を実行する形式で、至って普通な実装だと思います。
with-ir-portというマクロを用いると、この中でclose処理をすますので、明示的にcloseする必要はありません。
例えば、赤外線データの学習をしたいときは以下のようにします。
(with-ir-port (ir-open :path "/dev/ttyACM0")
(ir-capture))
一々、マクロで包むのがめんどい場合は以下のようにすると、デフォルトで指定のデバイスを使用できます。ただし、最後にir-close!でクローズする必要があります。
ひととおり使い方を書くとこんな感じです。
バージョン表示:
(with-ir-port (ir-open :path "/dev/ttyACM0")
(ir-version))
学習:
(with-ir-port (ir-open :path "/dev/ttyACM0")
(ir-capture))
実行:
上記で学習したデータを実行します
(with-ir-port (ir-open :path "/dev/ttyACM0")
(ir-play))
デフォルトデバイスの指定:
REPLで使用する場合などは、一々マクロでくくるのが面倒なので、以下でデフォルトデバイスを設定して、あとは、(ir-capture)とか(ir-play)とかで実行できます
(set-default-ir-port! (ir-open :host "localhost" :port 9999)
その他、ir-saveとかir-loadとかでJSONファイルをロードしたり、データを表示したりできるので、Clojureで遊んでみたい方はぜひつかってみてください。
REPLでテレビつけたりするとちょっとおもしろいですよ。