Node.js
npm
irMagician

Nodeモジュール「irmagician」を作りました。

More than 1 year has passed since last update.

そもそも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で作業してたのである程度安定するまでは毎回抜き差ししてました ^^;