LoginSignup
5
4

More than 5 years have passed since last update.

Raspberry piとirMagicianを使い、Siriで家電を操作する。

Last updated at Posted at 2018-09-23

家のスマートホーム化を進めるためにSiriで家電を操作できるようにしました。

現状テレビのon,offだけですがまとめました。

環境

  • Raspberry pi ZERO WH
    • Raspbian(9.4)
    • python(2.7.13)
    • Nodejs(8.11.1)
    • git(2.11.0)
  • irMagician(大宮技研合同会社のPC対応型赤外線リモコン)
  • iPhone 6s Plus(12.0)

irMagicianの設定

まず、使いたいリモコンの赤外線を登録するためにirMagicinを設定します。

やり方は色々ありますが、これを利用します。

適当なディレクトリを作成してクローンします。

$ git clone https://github.com/netbuffalo/irmcli.git

pipとpysirealというライブラリが必要なのでインストールします。

$ sudo apt-get install python-pip
$ sudo pip install pysireal

これで赤外線の登録ができるようになりました。

赤外線を登録して送信する

赤外線を登録する場合はirmcliのディレクトリに移動して以下のように実行します。

今回はテレビのon,offを例にまとめたいと思います。

$ sudo python irmcli.py -c

実行すると

Capturing IR...

が表示されるので登録したい信号をirMagicianに向かって送信します。

送信したら、jsonファイルとして書き出します。

$ sudo python irmcli.py -s -f tv_on.json

以下のコマンドを実行することで直接テレビに送信することもできます。

$ sudo python irmcli.py -p -f tv_on.json

これをSiriで操作できるようにしたいと思います。

Homebridge

Siriで操作できるようにAppleの「Home Kit」を利用した「Homebridge」という
Node.jsで動くサーバをインストールします。

まず、Node.jsをインストールします。

$ sudo apt-get install nodejs npm

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

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

homebridgeをグローバルインストールします。

$ sudo npm install -g homebridge 

設定ファイルを置くためのディレクトリを作成させるため、一度実行させます。

$ homebridge

homebridgeからコマンドラインを実行させるプラグインをインストールします。

$ sudo npm install -g homebridge-cmd

homebridgeフォルダにconfig.jsonを置きます。

.homebridge/config.json
{
    "bridge":
    {
       "name": "tv",
       "username": "xx:xx:xx:xx:xx:xx",
       "port": 51821,
       "pin": "xxx-xx-xxx"
    },

    "description": "Living Room",

    "accessories": [
    {
        "accessory": "CMD",
        "name": "テレビ",
        "on_cmd": "sudo python /home/pi/irmcli/irmcli.py -p -f /home/pi/irmcli/tv_on.json",
        "off_cmd": "sudo python /home/pi/irmcli/irmcli.py -p -f /home/pi/irmcli/tv_off.json"


     }
  ]





}

usernameにはラズパイのMACアドレスを入力します。

pinにはhomekitに接続する際に使用するpinを入力します。

2番目のnameにはSiriに呼びかける時に使う名前を使うようにします。(日本語でもOK)

on_cmdにはテレビをonにするコマンド、off_cmdにはテレビをoffにするコマンドを入力します。

出来たら実行します。

$ homebridge

接続に使うQRコードとpinが出てきたら成功。

iPhoneでの操作

ホームアプリを起動し「アクセサリを追加」を押して表示されたQRコードを読み取るか、設定したpinを入力して設定します。

homebridgeをデーモン化する

上記の設定でも使用できるが、ラズパイを落とすと使えなくなるのでデーモン化します。

serviceファイルを作成します。

$ sudo vim /etc/systemd/system/homebridge.service
homebridge.service
[Unit]
Description=run homebridge
After=syslog.target network-online.target

[Service]
Type=simple
User=pi
ExecStart=/usr/local/bin/homebridge
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

ExcecStartには自身のhomebridgeのパスを入力します。

サービスを更新してからhomebridgeを起動させます。

$ sudo systemctl daemon-reload
$ sudo systemctl start homebridge
$ sudo systemctl enable homebridge

なお、この方法で起動した場合、iPhoneのホームアプリでhomebridgeの再設定を行うようにします。

まとめ

テレビのon.offだけですが、Siriで操作できるようになりました。

ただ、テレビon.offはGoogle Homeで操作できるので別の機器で試してみたいです。
(ちなみに家のエアコンは情報量が多く、irMagicianではメモリオーバーらしい。)

参考

iOS10「ホーム」アプリと「Raspberry Pi + irMagician」でお手軽家電操作。
ラズベリーパイを利用したHomeKitとSiriによる家電操作
Raspberry Pi 3 にhomebridgeを導入してsiriから家電操作できるようにした際の覚書
こちらを参考にさせていただきました。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4