そもそもirMagicianとは?
大宮技研製の学習型赤外線リモコンです。
http://www.omiya-giken.com/?page_id=837
非常にシンプルで小さく、Raspberry PiのようなIoT端末で使う事を想定されているようです。
irMagicianをscreenコマンドで動かしてみよう。
irMagicianを操作するためにはUSB接続からシリアル通信でコマンドを叩く必要があります。
screenコマンドを使ってコマンドを送る方法から始めてみましょう。
本記事ではMacへの接続を前提として話を進めます。
※ Macは標準で入ってて、Raspberry Piだとsudo apt-get install screenする必要があると思います。Win? 自分で調べてください。
1. irMagicianをUSBポートに接続する。
irMagicianをUSBケーブルを使って端末のUSBポートに挿し込みます。
そして、irMagicianが端末に認識されているかを確認しましょう。
irMagicianはCDC-ACMを採用し、Mac/Linux/WinなどのほとんどのOSで特にドライバのインストールなしに
挿せば動くという使いやすさも特徴です。
irMagicianには2つのLEDが付いています、USBポートに挿し込んだら、
右側のLED(黄)が「チカチカッ、チカチカッ」と繰り返し表示される事を確認してください。
もし前述した状態にならない場合は 挿し直してください 十中八九うまくいきません。
また、接続して数秒後くらいにLEDがチカチカし始める事もあるのでちょっと待ってダメなら 挿し直してください
次にMacでirMagicianをUSBポートに接続されてる事を確認します。
認識されている場合/dev/cu.usbmodemXXXXXのXXXXXは数字です。
irMagicianのバージョンなどによって異っていると思います。例:cu.usbmodem01231
以下のように確認できます。
ls /dev/ | grep cu.usbmodem
これでcu.usbmodem01231のような値が表示されていて、irMagicianのLEDがチカチカ光ってる事の2つを確認する事が出来たので準備万端です。
2. バージョン表示
screenコマンドでirMagicianとの接続します。
screen /dev/cu.usbmodem01231 9600
以下のような表示が出たらOKです。
… Ready
次にvと入力してEnterキーを押します。
vを入力しても画面には出ません。screenコマンド慣れてない人は「?」ってなる事があるので一応伝えておきます。
画面に以下のように表示がされるかと思います。
irMagician x.x.x
次は実際にirMagicianを学習型赤外線リモコンとして使っていきましょう。
しかしその前にscreenの終わらせ方についてもここで伝えておきます。
ctrl+a, kで終了します。
screenコマンド慣れていない人はctrl+cで抜けられると勘違いしやすいので気をつけましょう。
3. キャプチャとプレイ
学習させたいリモコンを用意します。エアコンのリモコンやテレビのリモコンなどを用意してください。
cを入力
... XX
キャプチャができるとXXのように数値が表示されます。そのままにしているとTimeoutが表示されます。
pを入力で以下の出力が得られると思います。
... Done!
うまく狙った信号のキャプチャと発信(プレイ)が出来たでしょうか?
4. その他のコマンド
全コマンドと詳細については公式のサポートページをご参照ください。
http://www.omiya-giken.com/?page_id=889
irmagician モジュール
やっと本題に入ります。
ここまでscreenコマンドでirMagicianを操作しましたが、
これをプログラムで扱いやすくするため、irMagicianには複数のプログラミング言語で
スクリプトが要されています。python/js/Objective-c/ruby/go/phpなどがあるようです。
今回私はNode.jsでirMagicianを操作するためのモジュールを作成しました。
それがirmagicianです。https://www.npmjs.com/package/irmagician
irmagicianはCLIツールとしてもNodeのモジュールとしても使えるので
使い方について説明します。
1. CLIとして使う
CLIとして使う場合は-gオプションをつけてインストールしてください。
npm -g install irmagician
irMagicianコマンドが使えるようになるはずなので叩いてみてください。
以下のヘルプメッセージが表示されます。
CLI Tool for irMagician
Usage: irMagician <command> [file]
Command
capture Capture a IR data
play Send a IR data
dump Dump written data
write Write a IR data from json
info Show irMagician Infomation
showPorts Show device ports
Options
-p, --port Device port
Examples
irMagician capture
irMagician dump data.json
irMagician write data.json
以下のコマンドを用意してあります
| コマンド | 説明 |
|---|---|
| capture | 赤外線信号をキャプチャして記憶します |
| play | 学習した赤外線信号を発信します |
| dump | 現在記憶している赤外線信号の値を標準出力に出力します。またirMagician dump data.jsonのようにdumpの後にファイル名を入れると出力内容のファイルをjson形式のファイルとして出力します。 |
| write |
irMagician write data.jsonのようにファイル名を指定して、irMagicianにデータを書き込みます。 |
| info | irMagicianのInfoコマンドの情報をまとめて表示します |
| showPorts | 端末(PC)の有効なデバイスポートの一覧を表示します。`ls /dev/ |
showPortsでデバイスポーとの表示したり、オプションの-pでデバイスポートを明示的に指定できるようになっていますが、指定なしだと内部で有効なデバイスを判断して使用するようになっているので、実際は利用することはないかも。 とりあえず何も考えず挿したら動く はず。
2. Nodeモジュールとして使う
今度はNodeモジュールとしてNodeのアプリ内で利用する形で使ってみましょう。
次にirmagicianをインストール--saveつけるかは任せます。
npm install irmagician
index.jsを作成し以下のようなコードを書いて使用します。
var irMagician = require("irmagician")
irMagician.info()
実行して確認してみましょう。
node index.js
最後に
コマンド実行時にうまく反応しない場合は 挿し直してください
特にMacだとセッションがうまく確立されない現象が発生する事があるようです。
私は主にMacで作業してたのである程度安定するまでは毎回抜き差ししてました ^^;