irMagicianをSiriから使う
- はじめに
RaspberryPiの様な小型コンピュータはほぼ毎年のようにリリースされます。値段が手頃なせいか、なんとなく出る度に買ってしまいます。買った時は何か作ろうとか、IoTの研究をしようとか思うものです。でも、ほぼ埃をかぶってしまいます。 - 何が出来るのか?
RaspberryPiとirMagicianを組み合わせ、Siriからの操作でより実用的なリモコンとして活用します。元々、HomeKitはそれの対応の家電(Philips Hueなど)を同一Wifi内から制御するiPhone, Apple Watch で操作出来るHome Automationのソリューションです。いくつかのデバイスがリリースされていますが、普及度は今一つです。有志により、Node.jsを利用したAPIライブラリが公開されています。それの活用により(使われなくなった)RaspberryPiにサーバを構築して、iOSからのリクエストに対して処理を行い実現します。 - RaspberryPiの設定
ネットワーク接続されたラズパイが前提になります。
Raspbian-pixel (2016/Sep/16)リリースでの環境において、irMagicanを使う場合は以下の変更を行います。- /boot/cmdline.txt から
”console=serial0,115200″の部分をを削除します。
- reboot
以上の変更を行った後に ls /dev/ttyACM0 を実行し、ttyACM0が見えていればOKです。
- /boot/cmdline.txt から
- システムのアップデート
システムのアップデートを行います。以下のコマンドを実行します。- sudo apt-get update
- sudo apt-get upgrade
完了まで時間がかかりますが、気長に待ちましょう。
- gitのインストール
以下のコマンドを行います。
- sudo apt-get install git
- pythonの設定
pythonは元々、システムにインストールされているのでシリアルのプラグインをインストールしてirMagicianが利用出来るようにします。以下のコマンドでpyserialをインストールして、pythonからシリアルが使えるようにします。
- sudo apt-get install python-pip
- sudo pip install pyserial
- irm.pyのインストール
irm.py はpythonからirMagicianを利用するためのスクリプト群になります。irMagicianの初期の頃からユーザ(リードパートナー)でnetbuffalo氏の作です。- git clone https://github.com/netbuffalo/irmcli.git
※web-master は昔からの慣習で、irmcli.py をirm.pyに変更して活用しています。
- リモコンデータの取得
リモコンデータは当webにあるのも使えますが、webに無い時はコマンドを発行して、データを取得します。
- python irm.py -c
データの取得を行います。
- python irm.py -p
データの取得が完了したら、取得したデータが利用出来るかどうか試します。
- python irm.py -f -s “filename.json”
問題がないようでしたら、セーブします。
- python irm.py -c
- git clone https://github.com/netbuffalo/irmcli.git
- node.jsのインストール
- sudo apt-get install -y nodejs npm
普通にnode.js, npm をインストールします。
- sudo npm cache clean
- sudo npm install n -g
- sudo n stable
とりあえず、web-masterは上記の操作をおこないました。
- sudo apt-get install -y nodejs npm
- homebridgeのインストール
- sudo apt-get install libavahi-comat-libdnssd-dev screen
必要なライブラリをインストールします。
- sudo npm install -g homebridge –unsafe-perm
理由は完全に追い切れていないのですが、上記の設定でエラー無くインストール出来ました。
- sudo apt-get install libavahi-comat-libdnssd-dev screen
- homebridge-cmdのインストール
- sudo npm install homebridge-cmd -g
このプラグインによりコマンドラインが実行出来るようになります。
- sudo npm install homebridge-cmd -g
- homebridgeの設定
- config.jsonの設定
1234567891011121314151617181920212223242526{"bridge": {"name": "irMagician with HomeKit","username": "DC:FB:02:58:4A:C4","port": 51821,"pin": "031-45-155"},"description": "Papa's room","platforms": [],"accessories": [{"accessory": "CMD","name": "電気","on_cmd": "sudo python /home/pi/.homebridge/data/irm.py -p -f /home/pi/.homebridge/data/LightOn.json","off_cmd": "sudo python /home/pi/.homebridge/data/irm.py -p -f /home/pi/.homebridge/data/LightOff.json"},{"accessory": "CMD","name": "コンセント","on_cmd": "sudo python /home/pi/.homebridge/data/irm.py -p -f /home/pi/.homebridge/data/OutletOn.json","off_cmd": "sudo python /home/pi/.homebridge/data/irm.py -p -f /home/pi/.homebridge/data/OutletOff.json"}]}
- WifiデバイスのMACアドレスを調べる
ifconfigコマンドで表示されます。MACアドレスは小文字で出力されますので、これを0-9, A-Fの大文字にしてconfig.jsonに記述します。
- “name”は日本語で記述した方が良い
アルファベットで記述するとうまく反応しなかったようです。「light」とやったのですが、うまくいかなかので「電気」だと「でんきつけて〜」でうまく反応しました。
- “on_cmd”, “off_cmd”にはそれぞれのコマンドをフルパスで記述する。
自分の環境に合わせて、記述します。
- WifiデバイスのMACアドレスを調べる
- JSON lintの活用
homebridgeを活用する場合、config.jsonの設定がキモになるわけですがサンプルと見比べてもどこで間違えたかよくわからない場合があります。その場合、JSON lintを使うとミスを指摘してくれます。もっともJSON lintを使えと、homebridgeが指示するわけなんですけど。
- config.jsonの設定
- 起動
上記の設定が終わったら、homebridge を起動してみます。コマンドラインから
homebridge
で起動します。Warning がでますが、そのまま動作していればOKのようです。 - 設置
恒久的に設置する場合は対象となる機器(テレビ、シーリングライト、エアコンなど)が操作可能(対応するリモコンがなるべくカバー出来る)となる位置に設置します。また、その場合に手が届かない場合がほとんどだと思いますので、sshなどでlog-inし、作業が出来るように設定しておきます。
- 今後
新しいRaspbianはChromeが利用出来るようになりました。小型液晶と組み合わせてChrome-kioskのモードを活用し、よりビジュアルな端末に仕上げたいと思います。
- 参考URL
以下の方々の成果物を利用しました。先達に感謝します。