自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3...

13
自宅をちょこっとスマートホーム化してみよう

Transcript of 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3...

Page 1: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

自 宅 を ち ょ こ っ と ス マ ー ト ホ ー ム 化 し て み よ う

Page 2: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

もくじ

2

3

4

5

10第 4 章 IRKit Internet HTTP API

  4-1 IFTTT+IRKit で家に帰る前にエアコンをつける

  4-2 IRKit Internet HTTP API の準備

  4-3 IFTTT のユーザー登録

  4-4 まとめ

第 3 章 IRKit 応用編

  3-1 Raspberry Pi 3 + Homebridge + IRKit

  3-2 必要なもの

  3-3 Raspberry Pi 3 の構築

  3-4 Homebridge の設定

  3-5 Homebridge の起動と iOS のホームアプリでの動作確認

第 2 章 IRKit を使ってみる

  2-1 基本設定

  2-2 必要なもの

  2-3 IRKit のセットアップ

  2-4 家電のリモコンを追加する

第 1 章 はじめに

  1-1 IRKit とは

  1-2 IRKit で出来ること

  1-3 IRKit スペック概要

Page 3: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

はじめに

3

IRKit とは、一言でいうと魔法の杖のようなもの。

IoT 技術を使って、家の中にあるテレビや照明、エアコンなどの家電をインターネットに接続して、遠隔でコントロールできるようにするオー

プンソースの赤外線リモコンデバイスです。

ここ数年で多くのスマート家電が登場していますが、未だに大半の家電で赤外線が使われていることから、受信した赤外線波長を記録、学習し、

リモコンとして家電を操作できるデバイスが多く開発されています。

ただ、これらのデバイスは、専用アプリでの限られた操作しかできないものが多く、使い勝手の良いものとは言えませんでした。

しかし、IRKit はハードウェア、SDK などがオープンソースで開発されているためアプリを自由に作ることができます。つまり、IRKit を使えば、

iPhone や iPad、Android スマートフォンにリモコン信号を学習させ、赤外線で操作可能なエアコンや照明などの家電を自在に操作できるよう

になるのです。

これまでは、家に帰ってからリモコン操作でエアコンの電源を入れ、快適な温度になるまでにしばらく時間がかかるということが当たり前でした。

また外出後に、家の照明を消し忘れたことに気づいたという人もいるかもしれません。IRKit を使うことで、これらの問題を解決し、より快適

なライフスタイルを手に入れることができるようになります。

たとえば、GPS との連携で位置情報を使い、iPhone や Android 端末が自宅付近に来たらエアコンをつけるアプリを作れば、夏の暑い日に部屋

が快適な温度になった状態で帰宅することができます。他にも家から出ると照明が消えるアプリ、もしくは家を出るときに全ての家電のスイッ

チをオフにするアプリなど、かなり自由度の高い使い方ができるのがこの IRKit です。また、Siri を搭載したMac があれば「Hey Siri」の音声

認識で、家電の操作が可能になります。まさにこれ一台で生活がワンランク快適になる、便利なツールなのです。

第 1章

1-2 IRKit で出来ること

1-1 IRKit とは

1-3 IRKit スペック概要iPhone、iPad、iPodTouch の iOS7 以降対応

Android 2.3 以降対応

無線 LAN:2.4GHz の b、g 対応 (5GHz 帯の a は未対応 ) DHCP で IP アドレスと DNS サーバの IP アドレスを取得できること

(IP アドレス指定はできません )

電源 :USB マイクロ B ケーブル ( 別売り )

エアコン

ライト

スマートフォン

テレビ

赤外線Wi-Fi

IRKit Device

Page 4: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

IRKit を使ってみる

4

まずは IRKit の基本セットアップを行いましょう。ここでは、まず IRKit を自宅のWi-Fi に接続し、普段使用しているリモコンの赤外線波長を

IRKit に記録、学習させます。公式アプリに [ ボタン ] を登録していくことで、iPhone や Android 端末から家電を自在に操作できるようにし

ます。それでは詳しく見ていきましょう。

第 2章

2-1 基本設定

家電を操作するためのリモコンの追加は、公式アプリの「ボタンを追加」から設定します。

IRKit 本体に向けて、普段使用している家電のリモコンのボタンを押します。

そうすると青いランプが点滅しますので、これをひとつひとつボタンの数だけ登録し、それぞれに名前をつけていきます。これでリモコンの登

録は完了です。

また複数のボタンを配置するには、ボタン一覧の右上の「編集」ボタンをタップし、左上の「+」をタップすることで追加できます。

2-4 家電のリモコンを追加する

1 公式アプリ [IRKit シンプルリモコン ] を端末にインストールします。

2 IRKit に MicroUSB 経由で電源を接続します。

3 IRKit のセットアップウィザードに従い、IRKit と Wi-Fi を繋ぐことでセッ

  トアップが完了します。無事に接続が完了すると、IRKit 本体のランプが青

色に変わります。

2-3 IRKit のセットアップ

2-2 必要なものWi-Fi 接続

IRKit

0.5A 以上の USB 充電器、マイクロ USB ケーブル

iOS または Android

IRKit シンプルリモコンアプリ

Page 5: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

IRKit 応用編

5

これまでの設定で IRKit をリモコンとして使えるようになりましたが、応用編としてもうちょっ

と便利に使えるようにしてみましょう。

HomeKit 未対応のデバイスを HomeKit 対応させるためのソフトウェア Homebridge を

Raspberry Pi 3 で動作させ、IRKit を HomeKit に対応させてみます。

SD カードリーダーなどを利用し、PC もしくはMac にマイクロ SD カードを接続。OS の機能を利用して、マイクロ SD カードを FAT32

形式で初期化します。

Download NOOBS for Raspberry Pi からNOOBSをダウンロードし、ダウンロードしたzipファイルを解凍したら、ファイルをSDカー

ドにコピーしましょう。

コピーが完了したら SD カードのマウントを解除して、Raspberry Pi 3 へ挿入します。マイクロ USB ケーブルを接続し、Raspberry Pi 3

を起動。

Raspbian をクリックしてインストールを実行します。インストールが完了したら再起動しましょう。

第 3章

3-1 Raspberry Pi 3 + Homebridge + IRKit

3-2 必要なもの

3-3 Raspberry Pi 3 の構築

Wi-Fi 接続

Raspberry Pi 3

IRKit

- 4GB 以上のマイクロ SD カード

- 1A 以上の USB 充電器、マイクロ USB ケーブル

- 0.5A 以上の USB 充電器、マイクロ USB ケーブル

- iOS10 が搭載された iPhone

- IRKit シンプルリモコンアプリ

NOOBS のインストール

2

3

4

Page 6: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

6

Raspberry Pi 3 を再起動すると GUI が立ち上がります。

作業を SSH で行う場合は Raspberry Pi の設定を開き、パスワードの設定を行なった後、インターフェイスのタブにて「SSH」にチェックを入

れます。

(※初期パスワードは「raspberrypi」に設定されています。)

初期設定

以下のコマンドをコンソールに入力し、Raspbian のインストールを行いましょう。

Homebridge のインストール

IRKit リモコンアプリの「設定」を開き、「Devices」にリストされているデバイス名を確認しましょう。以下はデバイス名の例です。

IRKit デバイス名の確認

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

$ sudo apt-get autoremove nodejs$ wget http://nodejs.org/dist/latest/node-v7.6.0-linux-armv7l.tar.gz$ tar xzf node-v7.6.0-linux-armv7l.tar.gz$ sudo mv node-v7.6.0-linux-armv7l /usr/local/node-v7.6.0$ echo 'export PATH=/usr/local/node-v7.6.0/bin:$PATH' >> ~/.bashrc$ source ~/.bashrc

$ sudo npm install -g homebridge homebridge-irkit

IRKit999A

そのデバイス名の末尾に .local を追加したものが、接続先のデバイス名となります。以下はデバイス名の末尾に .local を追加した例です。

IRKit999A.local

3-4 Homebridge の設定

Page 7: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

7

IRKit の HTTP API を呼び出した直後に、送信したいリモコンのボタンを押すことで、リモコンの赤外線信号を取得することができます。

赤外線信号の確認

IRKit デバイス名、赤外線信号の取得結果を利用し、Homebridge の設定ファイルを記述しましょう。

Homebridge の設定ファイルは ~/.homebridge/config.json に配置します。

Homebridge 設定ファイルの記述

$ curl -i "http://IRKit999A.local/messages" -H "X-Requested-With: curl"HTTP/1.0 200 OKAccess-Control-Allow-Origin: *Server: IRKit/3.0.0.0.g85190b1Content-Type: text/plain

{"format":"raw","freq":38,"data":[...]}

vi ~/.homebridge/config.json{ "bridge": { "name": "Homebridge", "username": “00:00:00:00:00:00” , "port": 51826, "pin": "031-45-154" },

"description": "IRKit Control",

"accessories": [ { "accessory": "IRKit", "name": "テレビ ", "irkit_host": "IRKit999A.local", "on_form": {"format":"raw","freq":38,"data” :[…]}, "o�_form": {"format":"raw","freq":38,"data” :[…]} } ]}

変更すべき箇所は、accessories 配下の name、irkithost、onform、off_form です。

name には操作する機器の名前を入力します。

irkit_host には IRKit のデバイス名を指定します。

onform、offform には確認した赤外線信号の取得結果をそのままペーストします。

IRKit999A.local

Page 8: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

8

以下のコマンドを実行し、Homebridge を起動しましょう。

実行中のまま、同じWi-Fi に接続した iOS のホームアプリにてアクセサリの追加を行います。途中「HomeKit コード」を聞かれるので、

Homebridge 起動時に表示されたコードをカメラから自動入力するか手動にて入力を行います。

機器がどの部屋に設置されているかを指定する際に、そのままの状態だと「ディフォルトの部屋」となりますが Siri で操作する際に、部屋の名

前を指定する必要があります。「リビング」など、指定しやすい名前にしておくと操作しやすいでしょう。

アクセサリの追加が完了するとオン・オフのボタンが表示されるので、実際に動作を確認してみます。

ここまで設定を行えば、Siri でコントロールすることも可能になります。先ほどの設定例では「テレビ」という名前を付けたので、Siri に「リ

ビングのテレビをつけて」と話しかければ、IRKit により赤外線が送出されます。

*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.*** WARNING *** Please fix your application to use the native API of Avahi!*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.*** WARNING *** Please fix your application to use the native API of Avahi!*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>[2017-2-27 19:50:12] Loaded plugin: homebridge-irkit[2017-2-27 19:50:12] Registering accessory 'homebridge-irkit.IRKit'[2017-2-27 19:50:12] ---[2017-2-27 19:50:12] Loaded config.json with 1 accessories and 0 platforms.[2017-2-27 19:50:12] ---[2017-2-27 19:50:12] Loading 1 accessories...[2017-2-27 19:50:12] [テレビ ] Initializing IRKit accessory...Scan this code with your HomeKit App on your iOS device to pair with Homebridge:

┌────────────┐ │ 031-45-154 │ └────────────┘

[2017-2-27 19:50:12] Homebridge is running on port 51826.

3-5 Homebridge の起動と iOS のホームアプリでの動作確認

Page 9: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

9

$ sudo apt install supervisor

$ sudo vi /etc/supervisor/conf.d/homebridge.conf[program:homebridge]command=/usr/local/bin/homebridge --user-storage-path /home/pi/.homebridgeuser=piautorestart=truestdout_logfile=/var/log/homebridge.logstdout_logfile_maxbytes=1MBstdout_logfile_backups=5stdout_capture_maxbytes=1MBredirect_stderr=true

supervisord は raspbian のリポジトリに含まれるので、apt を利用しインストールを行います。

supervisord で Homebridge のプロセスを管理するための設定ファイルを追加します。

$ sudo supervisorctl updatehomebridge: added process group$ sudo supervisorctl statushomebridge RUNNING pid 2080, uptime 0:00:05

homebridge の設定ファイルを supervisord に反映すると、Homebridge はすぐに起動します。supervisorctl の status コマンドを実行する

と、プロセスが正しく起動しているか確認することができます。

起動している状態を確認したら、iOS のホームアプリから問題なく操作が行えることを確認しましょう。

Raspberry Pi を次回起動する時には Homebridge も起動するようになり、デーモン化が完了します。

supervisord の設定

supervisord のインストール

supervisord の設定反映と動作確認

動作確認を終えたら、Homebridge をバックグラウンドでも動作させるためのデーモン化を行います。

Homebridge のデーモン化

Page 10: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

IRKit Internet HTTP API

10

HomeKit では、家の外から操作を行うには AppleTV か自宅に置いた iPad が必要となるため、それらのデバイスが無い場合には家の外から操

作を行うことができません。

そこで、IRKit が提供している IRKit Internet HTTP API を利用し、家の外からでもホームオートメーションが行えるようにしましょう。

IFTTT は様々なWeb サービス同士を自動的に連携させるサービスです。例えば、Instagram に投稿した写真を Google Drive に自動的にアッ

プロードする、などの連携を可能にします。

また、スマートフォンの情報をトリガーとして設定できるので、自宅に一定の距離まで近づいたときに、指定した動作で家電を起動させること

も可能です。

今回は、この機能を利用して、家に帰る前に IRKit Internet HTTP API を呼び出し、エアコンをつける、という連携を行いましょう。

第 4章

4-1 IFTTT+IRKit で家に帰る前にエアコンをつける

4-2 IRKit Internet HTTP API の準備

clienttoken の取得

$ curl -i "http://IRKit999A.local/keys" -d "" -H "X-Requested-With: curl"HTTP/1.0 200 OKAccess-Control-Allow-Origin: *Server: IRKit/3.0.0.0.g85190b1Content-Type: text/plain

{"clienttoken":"THE_CLIENT_TOKEN"}

deviceid、clientkey の取得

$ curl -i -d "clienttoken=THE_CLIENT_TOKEN” "https://api.getirkit.com/1/keys"HTTP/1.1 200 OKServer: openrestyDate: Mon, 27 Feb 2017 11:52:56 GMTContent-Type: application/json; charset=utf-8Content-Length: 94Connection: keep-aliveAccess-Control-Allow-Origin: *Access-Control-Allow-Headers: X-Requested-WithX-Content-Type-Options: nosni�

{"deviceid":"THE_DEVICE_ID","clientkey":"THE_CLIENT_KEY"}

clienttoken を取得します。

deviceid、clientkey を取得します。

Page 11: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

11

ブラウザ上の画面右上から「Sign Up」をクリックし、email アドレスと任意のパスワードを登録します。

(※iOS、Android アプリにも対応しています)

IRKit を IFTTT から操作するには、IRKit Internet HTTP API を呼び出し、連携させるので、HTTP のリクエストを送信できる「Maker

channel」を利用します。 ページ上部のメニューバー「Search」から「Maker」と入力し、検索結果に表示された「Maker channel」を選択。

「Connect」から、あらかじめ登録を行なっておきましょう。

4-3 IFTTT のユーザー登録

ここで取得した deviceid と clientkey を用いて IRKit Internet HTTP API を経由し IRKit を操作します。以下は、先程(3-4 Homebridge

の設定)リモコンの赤外線信号を確認するために実行したものを IRKit Internet HTTP API 経由で実行するコマンドの実行例です。実行後、送

出したいエアコンのリモコンを押すと、赤外線信号を確認することができます。

$ curl -i "https://api.getirkit.com/1/messages?clientkey=THE_CLIENT_KEY&clear=1"HTTP/1.1 200 OKServer: openrestyDate: Mon, 27 Feb 2017 11:58:01 GMTContent-Type: application/json; charset=utf-8Content-Length: 1076Connection: keep-aliveAccess-Control-Allow-Origin: *Access-Control-Allow-Headers: X-Requested-WithETag: "-718207882"X-Content-Type-Options: nosni�

{"message":{"format":"raw","freq":38,"data":[...]},"hostname":"IRKit999A","deviceid":"THE_DEVICE_ID"}

Page 12: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

12

IFTTT で新しいレシピを作ってみましょう。トップページ上部のメニューバーにある「My Applet」をクリックすると、これまでに作成・登録

した Applet(アプリ連携のレシピ)が表示されます。

ページ右上に表示されている「New Applet」から、新しいレシピを作成することができます。

このレシピを作成することで、指定エリアに入ると IRKit から赤外線信号が送出され、エアコンの電源がオンになります。

いかがでしたか? IRKit を使うことで、簡単に自宅をちょこっとスマートホーム化することができます。その他にも Raspberry Pi のセンサー

を活用することで、ある一定の温度以下になるとエアコンのスイッチが入るなど、工夫やアイデア次第で様々なことが可能になります。皆さんも、

普段の暮らしに IoT を取り入れてみませんか?

4-4 まとめ

IFTTT のレシピ作成

if +this then that の「+this」をクリックし、以下のトリガーを設定しましょう。

デバイスが指定したエリアへの侵入をトリガーに、アクションを実行します。

続いて、エリアを地図から指定します。あまりに小さいエリアを指定するとバッテリー消費が高くなるので、可能な範囲でエリアを広く指定しましょう。

Trigger: You enter an area

if this then +that の「+that」をクリックし、以下のアクションを設定しましょう。

任意のURLにリクエストを送るためのアクションです。以下の設定を行います。

Action: Make a web request

URL: https://api.getirkit.com/1/messagesMethod: POSTContent-type: application/x-www-form-urlencodedBody: clientkey=THE_CLIENT_KEY&deviceid=THE_DEVICE_ID&message={"message":{"format":"raw","freq":38,"data” :[…]},”hostname":"IRKit999A","deviceid” :” THE_DEVICE_ID” }

トリガーの設定

アクションの設定

Page 13: 自宅をちょこっとスマートホーム化してみよう - …...6 Raspberry Pi 3 を再起動するとGUIが立ち上がります。作業をSSHで行う場合はRaspberry

掲載記事利用上のご注意

掲載された回路、技術、プログラムなどを

利用して生じた全ての不利益、損害、事故など

DevicePlus 編集部・ローム株式会社は責任を負いかねます。

お問い合わせ