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を使う場合は以下の変更を行います。

    1. /boot/cmdline.txt から

       ”console=serial0,115200″の部分をを削除します。

    2. reboot

       以上の変更を行った後に ls /dev/ttyACM0 を実行し、ttyACM0が見えていればOKです。

  • システムのアップデート
     システムのアップデートを行います。以下のコマンドを実行します。

    1. sudo apt-get update
    2. sudo apt-get upgrade

       完了まで時間がかかりますが、気長に待ちましょう。

  • gitのインストール

     以下のコマンドを行います。

    • sudo apt-get install git

  • pythonの設定

     pythonは元々、システムにインストールされているのでシリアルのプラグインをインストールしてirMagicianが利用出来るようにします。以下のコマンドでpyserialをインストールして、pythonからシリアルが使えるようにします。

    1. sudo apt-get install python-pip
    2. 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”

         問題がないようでしたら、セーブします。

  • 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は上記の操作をおこないました。

  • homebridgeのインストール
    • sudo apt-get install libavahi-comat-libdnssd-dev screen

       必要なライブラリをインストールします。

    • sudo npm install -g homebridge –unsafe-perm

       理由は完全に追い切れていないのですが、上記の設定でエラー無くインストール出来ました。

  • homebridge-cmdのインストール
    • sudo npm install homebridge-cmd -g

       このプラグインによりコマンドラインが実行出来るようになります。

  • homebridgeの設定
    • config.jsonの設定

       

      1. WifiデバイスのMACアドレスを調べる

         ifconfigコマンドで表示されます。MACアドレスは小文字で出力されますので、これを0-9, A-Fの大文字にしてconfig.jsonに記述します。

      2. “name”は日本語で記述した方が良い

         アルファベットで記述するとうまく反応しなかったようです。「light」とやったのですが、うまくいかなかので「電気」だと「でんきつけて〜」でうまく反応しました。

      3. “on_cmd”, “off_cmd”にはそれぞれのコマンドをフルパスで記述する。

         自分の環境に合わせて、記述します。

    • JSON lintの活用

       homebridgeを活用する場合、config.jsonの設定がキモになるわけですがサンプルと見比べてもどこで間違えたかよくわからない場合があります。その場合、JSON lintを使うとミスを指摘してくれます。もっともJSON lintを使えと、homebridgeが指示するわけなんですけど。

  • 起動
     上記の設定が終わったら、homebridge を起動してみます。コマンドラインから
     homebridge
     で起動します。Warning がでますが、そのまま動作していればOKのようです。

  • 設置

     恒久的に設置する場合は対象となる機器(テレビ、シーリングライト、エアコンなど)が操作可能(対応するリモコンがなるべくカバー出来る)となる位置に設置します。また、その場合に手が届かない場合がほとんどだと思いますので、sshなどでlog-inし、作業が出来るように設定しておきます。

  • 今後

    新しいRaspbianはChromeが利用出来るようになりました。小型液晶と組み合わせてChrome-kioskのモードを活用し、よりビジュアルな端末に仕上げたいと思います。

  • 参考URL
     以下の方々の成果物を利用しました。先達に感謝します。