Nature Remo と HomebridgeをインストールしたRaspberry Pi 3 で家電をSiri(音声)でコントロールしてみた!

 今回は、旅やカメラの話題ではありません。

 これまでの記事とは毛色が違う内容です。

 

 自分は生粋の文系人間ですが、テレビ東京の「トレンドたまご」で紹介されていたクラウドファンディング「Nature Remo」が気になり、Makuakeで昨年夏に支援をしていました。

Nature Remo (日本語) — Nature Inc

 

 これが、先月末に届いたので、早速色々いじってみました。

f:id:K-B:20170605211249j:plain

 そもそも、Nature Remoが何かというと、インターネットに接続する機能を有する学習赤外線リモコン「IRKit」の後継に位置付けられるもので、IRKitと比較すると、特にエアコンとの連携に特化しているものです。

 ということで、典型的な使い方は、自宅のエアコンのリモコンの赤外線信号を学習させ、事前に外からアプリを通じてエアコンの操作を行って帰宅時に部屋を暖めておく/冷やしておくというものです。

 また、現時点でアプリはβ版相当の最低限の機能しか実装されていませんが、将来的にはNature Remo本体に搭載されている温度センサー*1が搭載されているので、センサーの情報で自動でエアコンをオン・オフしたり、スマートフォンのGPSと連携して自宅に近づいたら/から離れたら自動でエアコンをオン/オフするということも考えているとのことです。

 

 そして、先ほども書きましたとおり、IRKitの実質後継機であるため、エアコン以外の家電のリモコンの赤外線信号も学習することができ、それぞれアプリで家電名、操作名、アイコン等を自由に設定・登録*2することができます。

 

 ということで、Nature Remoは、私のiPhoneを万能リモコン化してくれる大変便利なガジェットなのですが、「これ、音声で操作できないのかな。」と更なる欲望が。

 

 そこで、インターネットで色々と検索してみると、同じことを考えている人は多数いて、Raspberry Pi 3を用いてIRKitとHomekit(Siri)を連携させ、Siriで家電の電源のオン・オフを行うという実例が多数ありました。また、Nature Remo自体はまだAPIが公開されていません*3が、IRKitのでのプログラミング等を流用できるとの情報がインターネット上で流れていました。

 

 そのため、インターネット上の情報を参照しながら、Raspberry Pi 3にHomebridge*4をインストールして、SiriでNature Remoを動かして家電の電源のオン・オフを行うということにチャレンジし、最終的には成功しましたので、私が行った手順をご紹介します。

f:id:K-B:20170605211545j:plain

 

 なお、以下は、あくまで素人がインターネット上の情報を参考にやってみたことなので、内容には一切責任を持てません。

------------------------------ 

 

1 Nature Remoの設定等

 

 各家電に赤外線信号が届く位置に設置し、アプリを通じて最低限の設定をします。

  Nature Remoには、本体のほか、充電用ケーブル(microUSB-USB)、USB電源プラグ及び両面テープ(剥がせるタイプ)が付いていて、このように壁に設置します。

 f:id:K-B:20170605211658j:plain

 

2 Raspberry Pi 3の基本設定等

 

 (1) Raspberry Pi 3にOS(Raspbian)をインストールします。

 私の場合、RSコンポーネンツさんでRaspberry Pi 3本体やケースを購入する際に、合わせてNOOBSがプレインストールされているmicroSDも購入しましたので、microSDを本体にセットし、電源を入れた上でインストールするOSとして「Raspbian」を選択するだけでした。

NOOBS_16GB_Retail | SDカード,容量:16 GB | Sandisk 【通販RS】

 

 自分でフォーマットしたmicroSDを準備する場合は、こちらの公式サイトからNOOBSをダウンロードできます。

 

 (2) ターミナル*5を起動し、以下のコマンドを入力し、Raspbianのファームのアップデートを行います。

sudo apt-get update

 

sudo apt-get upgrade

 

 (3) ターミナルで以下のコマンドを入力し、日本語のフォントをインストールします。

 

sudo apt-get install fonts-ipafont fonts-ipaexfont

 

 (4) デスクトップ左上の「Menu」から「Preference」、「Raspberry Pi Configuration」を選択肢、「Localisation」タブから「Locale」、「Timezone」、「Keyboard」をそれぞれ日本設定に変更します。

 

 (5) 日本語入力を導入します。色々方法があるようですが、私はターミナルで以下のコマンドを入力し、Google 日本語入力のオープンソース版である「mozc」を入れました。

 

sudo apt-get install uim uim-mozc

 

 導入に成功*6すると右上に【あ】とIMEアイコンが出現し、「日本語」を選択すると日本語入力ができるようになります。

 

 mozcについて詳細を知りたい方はこちらへ。

 

3 Homebridgeのインストール

 

 (1) ターミナルで以下のコマンドを入力し、Homebridgeのインストールの前に必要なソフトウェアをそれぞれインストールします。

 

  ① avaiのライブラリ

 

sudo apt-get install libavahi-compat-libdnssd-dev

 

  ② node.js

 

wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz tar -xvf node-v4.0.0-linux-armv6l.tar.gz cd node-v4.0.0-linux-armv6l sudo cp -R * /usr/local/

 

  ③ インストールの確認

 

node -v

 

npm -v

 

を入力して、それぞれバージョンの情報が返ってきたらインストールは成功しています。

 

 (2) ターミナルで以下のコマンドを入力し、Homebridgeをインストールします。

 

sudo npm install -g homebridge

 

 (3) ターミナルで以下のコマンドを入力し、Nature RemoとHomebridgeを接続するプラグイン*7をインストールします。

 

sudo npm install -g homebridge-irkit

 

 (4) ターミナルで以下のコマンドを入力し、homebridgeのインストールの確認をします。

 

homebridge

 

 「*** WARNING *** The program ・・・ uses the Apple Bonjour compatibility layer of Avahi.・・・・・Couldn・・・ ・・find a config.json file at・・・・・/home/pi/.homebridge/config.json・・・」と「config.json」ファイルが見つからないという情報が返ってきたらインストールは成功しています。

 

4 Nature Remoの赤外線信号の情報取得

 

 (1) Nature Remoのアプリの「コントロール」の右上の「+」を押した上で、リモコンから取得したい赤外線情報をNature Remoに向けて発信し、これをNature Remoに登録します。

 

 (2) ターミナルで以下のコマンドを入力し、Nature Remoに直前に登録した上記赤外線情報を取得します。

 「●」部分には、Nature RemoのIPアドレス*8を記載します。

 

curl -i "http://●●.●●●.●●●.●●/messages" -H "X-Requested-With: curl"

 

 上記コマンドを入力すると、情報が返ってきます。そのうち、「{“format”:”raw”,”freq”:・・・・・]}」部分が、赤外線情報です。

  

5 家電の電源のオン・オフの設定(「config.json」ファイル)の作成

 

 (1) ターミナルで以下のコマンドを入力し、「config.json」ファイルのエディタを起動します。

 

nano /home/pi/.homebridge/config.json

 

 (2) 「config.json」ファイルの内容を以下のとおり書きます。その際、赤外線信号の情報(斜体部分)は、上記4の方法で取得したものを記載します。また、下線部分はそれぞれ自分で調べた又は決めた内容を記載する部分です。

 なお、「config.json」の記載の保存方法は、「Ctrl」+「O」を押した上で「Enter」です。

 

{
     "bridge": {
           "name": "Homebridge",
           "username": "●●:●●:●●:●●:●●:●●(Raspberry Pi 3のMACアドレス*9を記載)",
           "port": 51826,
           "pin": "●●●-●●-●●●(iOSのホームアプリに登録する際に入力するpinコードを自由に決めて記載)"
     },

 

     "description": "●●●●●●(設定名を自由に記載*10",

 

     "accessories": [
            {
                   "accessory": "Nature Remo",
                   "name": "●●●●(家電名*11",
                   "irkit_host": "●●.●●●.●●●.●●(Nature RemoのIPアドレス*12",
                   "on_form": {"format":"raw","freq":38,"data":・・・(省略)},
                   "off_form": {"format":"raw","freq":38,"data":・・・(省略)}
            }
     ]
}

 

 なお、複数の家電を設定する場合は、「"accessories"」以下を以下のとおり繋げて記載します。私はとりあえず3つまで試しました。

 

     "accessories": [
            {
                   "accessory": "Nature Remo",
                   "name": "●●●●(家電名①)",
                   "irkit_host": "●●.●●●.●●●.●●(Nature RemoのIPアドレス)",
                   "on_form": {"format":"raw","freq":38,"data":・・・(省略)},
                   "off_form": {"format":"raw","freq":38,"data":・・・(省略)}
            },{
                   "accessory": "Nature Remo",
                   "name": "●●●●(家電名②)",
                   "irkit_host": "●●.●●●.●●●.●●(Nature RemoのIPアドレス)",
                   "on_form": {"format":"raw","freq":38,"data":・・・(省略)},
                   "off_form": {"format":"raw","freq":38,"data":・・・(省略)}
            }
     ]
}

 

 (3) ターミナルで再び以下のコマンドを入力してhomebridgeを起動します。

 

homebridge

 

 「*** WARNING *** The program 'node' uses・・・Scan this code with your HomeKit App on your iOS device to pair with Homebridge:」として、「config.json」ファイルに記載したpinコードが表示されたら設定は成功です。

 

6 「ホーム」アプリへの登録

 

 iPhoneで「ホーム」アプリを起動し、「アクセサリを追加」からhomebridgeを選択・登録します。この際、pinコード入力画面が表示されるので、「config.json」ファイルに記載した番号を入力します。

 

7 Siriでテスト

 

 Siriを起動し、接続を確認します。例えば家電名として「テレビ」を記載した場合は、「テレビをオン/オフ」と言ってSiriが反応し、Nature Remoからテレビの電源のオン/オフの赤外線信号が送信されれば成功です。

------------------------------ 

 

 ベッドで横になりながら「Hey Siri テレビを点けて」と言うと*13、テレビの電源が入り、「Hey Siri 電気を消して」と言うと、部屋の電気が消えるなんて、技術の大きな進歩を感じます。

(リモコン操作くらい面倒くさがらないでしろよと言われそうですが…。)

 

 あと、音声操作で言えば、Amazon Echoもすごいみたいですが、なかなか日本に上陸しないのは、日本語対応に苦慮しているんですかね。

 

 ちなみに、各設定等にあたり、Raspberry Pi 3の操作等は、切替器を使用してデスクトップPCとマウス、キーボード及びモニターを共有しています。ボタンですぐに切替ができるので便利です。

 まず、マウスとキーボードはエレコムのこちらの切替器を使っています。今のところ特に不具合はありません。

 

 それから、モニターはAukeyのこちらの切替器を使っています。

 

 元々プログラミングの知識なんて少しもなかったので、ここまでできるのにかなり試行錯誤し、結構時間がかかりましたが、一応私が成功した方法はこの手順です。

 

 「config.json」ファイルについては、家電のオン/オフより複雑な操作(テレビのボリュームの調整やチャンネルの変更等)はどうやればよいのか不明です。

 誰か、方法を知っていましたら教えてください!

 

 

*1:ただし、現時点では実際の温度と誤差が生じているようです。

*2:現時点では、一度設定・登録をすると修正はできません。ここは改善を期待したいです。

*3:将来的には公開される予定です。

*4:HomeKitのAPIをNode.jsでエミュレートしてくれるツールです。

*5:デスクトップ左上の黒い画面のアイコンです。

*6:一度再起動する必要があるようです。

*7:IRKit用のものですが、Nature Remoも同じプラグインで接続できました。

*8:色々な方法で調べられますが、私はiPhoneアプリの「Fing」を使用しました。

*9:同上。

*10:例えば、「Nature Remo Control」などです。

*11:「テレビ」、「照明」などと呼称を付けます。

*12:色々な方法で調べられますが、私はiPhoneアプリの「Fing」を使用しました。

*13:iPhoneの「設定」、「Siri」で「"Hey Siri"を許可」を有効にしておくと、"Hey Siri"と呼びかければSiriが起動します。ただし、iPhone6以前の機種は充電中のみ有効になります。