ラズベリーパイを利用したHomeKitとSiriによる家電操作

homekit

はじめに

我が家では去年からhomekitを使ったスマートホーム化を部分的に行っています。

raspberry piとirMagicianを使って赤外線で家電を操作で、下地となるラズベリーパイによる赤外線信号送信による家電操作について記載しておりますのでまだ読んでない方はそちらから見て頂けるとわかりやすいかと思います。

Homekitを利用するとiPhone等のホームアプリから家電を操作できるようになり、なおかつSiriに話しかける事によっても家電の操作が可能となります。

ホームハブとしてAppleTVやiPadを利用すると、さらにスケジュールによる操作や、GPSによる外出や帰宅との連動、出先からのリモートコントロールなんかもできるようになりますが、そこらへんについては近日中に別記事にて紹介できればと思います。

前回の要点

前回の記事の内容から打ち込み部分等要点だけ抜粋して記載させて頂きます。

詳細はraspberry piとirMagicianを使って赤外線で家電を操作をご参照下さい。

準備

まずRaspbian Liteをインストールしたラズベリーパイに、USBでirMagicianを接続し起動します。

カーネルパラメーター編集

“sudo vi /boot/cmdline.txt”

と打ち込んでcmdline.txtの”console=serial0,115200″を削除

/boot/cmdline.txtの内容

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=********-** rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

↑上記cmdline.txtの”console=serial0,115200″を削除して下記のようにします。

dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=********-** rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

これでirMagicianをデバイスとして認識できるようになりましたので一旦再起動します。

再起動後、pythonをインストールします。

“sudo apt-get install python-pip”

“sudo pip install pyserial”

gitをインストール

“sudo apt-get install git”

制御プログラムダウンロード
“git clone https://github.com/netbuffalo/irmcli.git”

操作

“irmcli”に移動します。

“cd irmcli”

赤外線の受信学習

“sudo python irmcli.py -c”

と打ち込み、irMagicianに学習させていリモコンのボタンを押して赤外線を当てて学習させます。(以下、照明の赤外線リモコンの信号を例にさせて頂きます。)

学習した赤外線データのファイルへの書き出し

“sudo python irmcli.py -s -f light_on.json”

と打ち込むと”light_on.json”というファイルが作成され中に上記”赤外線の受信学習”で記憶されたデータが書き込まれます。(照明を付ける赤外線データとして”Light_on.json”と命名しましたがご自身の覚えやすい名前にして下さい)

書き出し後、再び上記”赤外線の受信学習”で記載の通り、違う赤外線データを受信学習しファイルへ書き出しを繰り返せば複数の赤外線信号のファイルが貯めれます。

ファイルから読み込んだ赤外線データの送信

“sudo python irmcli.py -p -f light_on.json”

と打ち込むと、irMagicianから赤外線が発信されますので、コントロールしたい機器にirMagicianを向けとくと作動するはずです。

HomeKit環境構築

ラズベリーパイ上でHomeKit環境を構築する際は、node.js上で動くhomebridgeという互換性のあるサーバーを使います。

ちなみに現在のRaspbian liteの場合はg++のインストールは必要ありませんでしたが、Raspbian系のメディアプレーヤー(OSMC、Volumio等)にインストールする場合は、“sudo apt-get install g++”と事前に打ち込んでインストールしといて下さい。

node.jsのインストール

以前はcrulで入れたりもしましたが、今回試したところ、2017年5月4日現在、普通にapt-getでインストールして問題なかった為、apt-getを使ったやり方を記載します。

“sudo apt-get install nodejs npm”

“npm cache clean”

“sudo npm install n -g”

これでnode.jsのインストールは終わりでバージョンも問題ありませんでした。

homebridge関連インストール

いよいよhomebridgeをインストールします。

“sudo apt-get install libavahi-compat-libdnssd-dev screen”

“sudo npm install -g homebridge”

“sudo npm install homebridge-cmd -g”

上記3つの打ち込みでhomebridgeがインストールされますが設定ファイルを保存する隠しフォルダが無いため、一旦homebridgeを起動することにより自動生成させます。

“homebridge”←起動させてすぐ閉じてOK

config.jsonの記述

これで.homebridgeディレクトリが作成されましたのでディレクトリ内にconfig.jsonを作成し設定内容を記述していきますが、その前にラズベリーパイのMACアドレスを調べてメモします。

“ifconfig”と打ち込むと下記のように表示されますので
“HWaddr”の”a1:23:bc:de:fg:45″部分(個別の値なのでご自身の環境でお調べ下さい)をメモします。

eth0 Link encap:Ethernet HWaddr a1:23:bc:de:fg:45
inet addr:192.168.*.** Bcast:192.168.5.255 Mask:255.255.255.0……

メモした値はアルファベットを大文字にしてconfig.jsonに記載しますので、この場合”A1:23:BC:DE:FG:45″となります。

メモが間違いなければ設定を書きますので

“cd .homebridge”でディレクトリに入り設定を書いていきます。

“vi config.json”

{
“bridge”: {
“name”: “HBliv“,
“username”: “A1:23:BC:DE:FG:45“,
“port”: 51821,
“pin”: “123-45-432
},
“description”: “Living room“,
“platforms”: [],
“accessories”: [
{
“accessory”: “CMD”,
“name”: “電気”,
“on_cmd”: “sudo python /home/pi/irmcli/irmcli.py -p -f /home/pi/irmcli/light_on.json“,
“off_cmd”: “sudo python /home/pi/irmcli/irmcli.py -p -f /home/pi/irmcli/light_off.json“,
}
]
}

赤い文字のところは各々の環境で変える部分で
最初の部分はiphoneのホームアプリに追加する際に表示される表示名です。

次の赤文字がMACアドレスのアルファベット大文字にしたものの記述、

その次がホームアプリ登録時のPINコード、覚えやすいネーム、赤外線制御プログラムの場所、赤外線データの場所になります。

config.jsonを記載し終わったら再び”homebridge”と打ち込めば動作しますので、あとはほっといてiphoneから操作します。

iphoneからの操作

まずはiphoneで”ホーム”アプリを起動します。

↑右上の”+”ボタンをクリックします。

すると下記のような画面になりますので”アクセサリを追加”をクリック

正常にhomebridgeが起動していれば下記の様に表示されますので、起動したhomebridgeをクリック。

↑私の環境では複数のラズベリーパイでhomebridgeを起動していますので複数ですが気にしないで下さい。

HomeKitのコード入力画面になりますので”コードを手動で入力”を選びます。

上記”config.jsonの記述“で赤文字で記載したPINコードの欄の数字を入力します。

以上で登録されますのであとはSiriで”電気つけて”なんていうと電気が消え、ホームアプリのアイコンのタップでも操作できるようになります。

引き続き詳しいホームキットの使い方は、近日中にまた改めて記事にしたいと思います。

コメント

  1. 匿名 より:

    こんばんは。

    cmdline.txtを編集すると起動しなくなるのですが
    手順は問題ないでしょうか?
    2017-01-11-raspbian-jessieです。

    • coke より:

      コメントありがとうございます。

      ”console=serial0,115200”の部分だけを削除してますか?
      サンプルのcmdline.txtを貼り付けると他の部分が個別で違うのでご自身のcmdline.txtから上記”console=serial0,115200”部分を削除して下さい。
      それでダメな場合は削除する部分に過不足があったのかと思います。
      再度行っても出来なかった際には、改めてコメント頂ければ、土日になりますが当方でも一から手順実行して問題ないか改めて検証させて頂きます。
      以上、宜しくお願い致します。

      • kei より:

        こんばんは。
        ご連絡ありがとうございます。

        バックアップを確認したら、たしかにサンプルと違っていました。
        ”console=serial0,115200”部分を削除したら問題なく起動しました。
        お騒がせしました。
        irMagicianが届きましたので、試してみたいと思います。
        ありがとうございました。

        • coke より:

          解決出来たようで安心致しました。

          随時コメントや問い合わせに関しては確認しております。
          解決時に解決した事をお伝えしてくださる方はこちらも安心でき、お役に立てたと励みになるので非常に感謝しております。

          今後も微力ではありますが皆様のお役に立てればと思います。

  2. […] Raspberry Pi 3でネットワーク ライブカメラを構築する方法 Motion編 ラズベリーパイを利用したHomeKitとSiriによる家電操作 […]

タイトルとURLをコピーしました