Siri + IRKit + Homebridgeで家の家電を操作「Hey Siri テレビをつけて」



Siri + IRKit + Homebridgeで家の家電を操作

最近は、Amazon EchoGoogle HomeLINE Clova WAVEなど、AIスピーカーが俄にブームになっている。

「アレクサ、電気を点けて」という家電操作も実現できたりする。
「アレクサ、この資料を部長に説明しといて」というのは、まだできないらしい。

AIスピーカーに対応した家電との連携はできるが、レガシーな既存の家電の操作まではできない。

そこで、IRKitという赤外線リモコンエミュレーターと、Homebridgeを連携させることで、AppleのSiriで

「Hey Siri テレビをつけて」

というのを実現したいと思う。

「Siri→ 何を言っているのか分かりません」

Homebridge を Raspberry Pi にインストール

Siriで制御できる「Home App」に登録できる家電等は、「HomeKit対応」書かれた製品が可能だ。

HomeKitとは、Appleが提唱するスマート家電用のプラットフォームだ。

IRKitHomeKit に対応させるために、Homebridge というツールを使用する。

Homebridge は、賢い先人の開発者達が作ってくれた、様々な機器をHomeKitに対応させるためのエミュレータだ。

IRKit も、Homebridgeのプラグインが用意されており、HomeKitに組み込むことができる。

今回は、Raspberry Pi に Homebridge をインストールすることとした。

Homebridgeをインストールする前に、Homebridgeを動作させるために必要なライブラリ群をインストールする。

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

HomebridgeはNode.js上で動作するため、Node.js環境を構築する。

Node.jsとは、javascriptベースのプログラムを、サーバ側で動作させるためのプログラム群だ。(javascriptは、通常クライアント側で動作するWeb系プログラム言語)

$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb

$ sudo dpkg -i node_latest_armhf.deb

$ node -v
v4.2.1

$ npm -v
2.14.7

‘node -v’、’npm -v’コマンドをぶちこんで、上記のようにバージョン情報が返ってくればOKだ

さて、いよいよ Homebridge をインストールする。
※けっこう時間がかかる

$ sudo npm install -g homebridge

次に、HomebridgeでIRKitを扱えるようにするための、IRKitプラグインをインストールする。

$ sudo npm install -g homebridge-irkit

リモコンの赤外線信号をメモしておく

後の工程で、家電を制御するルールを Homebridge の config.json に記述することになるので、リモコンから発出される赤外線信号をメモしておく。

IRKitに向けて、覚えさせたいリモコンのボタンを押して赤外線信号を送波し、IRKitが信号をキャッチしていると、Homebridge を動作させる Raspberry Pi から以下のコマンドを投入すると、IRKit の API を介して、HTTPのレスポンスが返ってくる。

その中に、赤外線信号データが入っているので、メモする。

$ curl -i "http://<IRKIT_ADDRESS>/messages" -H "X-Requested-With: curl"  

HTTP/1.0 200 OK 
Access-Control-Allow-Origin: * 
Server: IRKit/2.0.1.0.g1a6210c 
Content-Type: text/plain 

{"format":"raw","freq":38,"data":[4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,52381,4713,1190,2368,1190,1190,1190,2368,1190,1190,1190,2368,1190,1190,1190,1190,1190,2368,1190,1190,1190,1190,1190,1190,1190,1190,52381,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150]}

これは、BRAVIA テレビの電源ON/OFFボタンの信号をキャッチした場合の例だ。

この数字の羅列を見て、「あ!これはKDL-32CX400の電源ONの信号だ」なんて人がもしいたら連絡下さい。きっとあなたは変人です。

homebridge の設定

homebridgeの設定は

/home/username/.homebridge/config.json

などに配置される。

config.json中に現れるuernameにはraspberry piのMacアドレスを入れておくと後ほど分かりやすい。

$ mkdir .homebridge
$ vi /home/username/.homebridge/config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "<MAC_ADDRESS>",
        "port": 51826,
        "pin": "031-45-154" #変更推奨
    },

    "description": "Raspi Homebridge",

    "accessories": [
        {
            "accessory": "IRKit",
            "name": "テレビ",
            "irkit_host": "<IRKIT_ADDRESS>",
            "on_form": {"format":"raw","freq":38,"data":[<COMMAND>]},
            "off_form": {"format":"raw","freq":38,"data":[<COMMAND>]}
        }
   ]
}

<COMMAND>には、先程赤外線信号をメモした値を記載する。

では、いよいよ実行。

$ homebridge

こんな感じで応答があれば、OKだ。

Siri から家電を制御してみる

iOSの「Home」アプリを起動する。

「Allow」を押す。

先程ターミナルに出現したQRコードを読み取る。

少し待つと、Homebridgeが追加される。

こんな感じだ。

試しに、Siriに

「テレビ オン」

と話しかけてみると、↓

ちゃんとテレビの電源がONになった!

homebridge の自動起動設定

Raspberry Pi を再起動した際も、自動的に homebridge が立ち上がるように設定しておく。

$ sudo useradd --system homebridge
$ sudo mkdir /var/homebridge
$ sudo cp -R ~/.homebridge/* /var/homebridge
$ sudo chmod -R 0777 /var/homebridge 

起動スクリプトをコピペする。

$ sudo vi /etc/init.d/homebridge
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/var/homebridge"
cmd="DEBUG=* /usr/local/bin/homebridge -U /var/homebridge"
user="homebridge"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        if [ -z "$user" ]; then
            sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
        else
            sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
        fi
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        for i in 1 2 3 4 5 6 7 8 9 10
        # for i in `seq 10`
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0

実行権限を与え、登録する。

$ sudo chmod 755 /etc/init.d/homebridge
$ sudo update-rc.d homebridge defaults

起動してみる。

$ sudo /etc/init.d/homebridge start

特にエラーが無ければOKだ。

これで、レガシーな家電でも

「Hey Siri 電気をつけて」

ということが可能になった。

テレビ、ルンバ、電灯、エアコン、オーディオアンプ等、意外と赤外線リモコンで操作する機器は多い。

IRKit でスマートホームが実現するので、試す価値あり。

ちょっとスマートホーム化(Homekit で制御している家電リスト)

IRKit により、赤外線リモコンを持っている家電を制御できるようになる。

そのため、自宅をプチスマートホーム化できた。

HomeKit(homebridge)で制御している家電一覧を記す。

  1. テレビ(BRAVIA)
  2. シーリングライト
  3. 電球
  4. エアコン
  5. アンプ
  6. 温度計

家の中をほとんど 「Hey, Siri. hogehogeつけて」で制御できるようになった。

未来の家に住んでるようで、めちゃくちゃ便利だ。



シェアする

  • このエントリーをはてなブックマークに追加

フォローする