ワタナベ書店

読んだ本の感想とか美味しかったお店の紹介とかLinuxの知見とか好きなことを好きなだけ書くブログです。

Siriで部屋中の家電を操作できるようにして未来のお部屋を作ってみた

はじめに

この記事はお家ハックアドベンドカレンダー7日目の記事です。

昨日は@ajimiteiさんのDMM.make AKIBA の hue をハックしてみたでした。
hueはおうちハックの事始めとしておすすめの製品です。いろいろな言語でライブラリも充実しているし、日本語でのハック情報もたくさんあります。ぜひおうちハックを初めてみたいという人はhueから初めてはどうでしょうか。

概要

タイトルどおり、Siri(Homekit)を中心に未来のお部屋を作ってみました。

デモです。全家電をSiriで操作できるようにしました。

動画の各コマンドについて軽く説明すると、
「部屋の電気をつけて」→ hueの電気をつける
「部屋の温度は」→ netatmoから部屋の温度を取得する
「テレビの電源をつけて」→ IRKitからテレビの赤外線を送信する
というようにSiriから各家電に命令を送ったり、情報を受信したりしています。

純化した構成図としてはこんなかんじです。
最初はHomekitのみで構築しようとしましたが、構築していくうちにHomekitの欠点が見えてきたのでIFTTTと二本立てで構築しました。

f:id:iuyui:20151206195710j:plain

解説

Homekitとは

Appleが提唱する家電の集中管理システムです。

コンセプトとしてはSiriの音声操作で家電を操作できるということです。

例えば
「Hey、Siri 部屋の明かりをつけて」と言えば部屋の明かりがオンになったり、
Hey、Siri ベランダの温度は?」と言えばベランダに設置してるセンサから温度を取得して教えてくれたり、
Hey、Siri おやすみ」と言えば部屋の明かりがすべて消え、エアコンを静音モードにしたりできます。

詳細については下記リンクが詳しいです。

http://iot.mb.cloud.nifty.com/iotcolumn/apple_iot%E4%BA%8B%E4%BE%8B_homekit

日本で販売している対応製品と解説を書いたのでこちらも参考にして下さい。

Homekitの機能解説とデモ

Homekitでは以下の内容に従いデバイスを振り分けします。
ユーザーは好きなようにHomekitにつなげたデバイスを部屋や場所、状況などで配置や設定を行い、Siriでコマンドを出しやすくできます。

  • バイス
    Homekitに登録される各家電、ガジェットのことです。電球1つから固有の名前がふられます。また、デバイスの名前はHomekitアプリ側でも変更可能です。
    各デバイスの操作は「Hey Siri、[デバイス名]を◯◯して」という風に操作します。

  • ルーム
    各デバイスをまとめる単位です。例えば寝室というルームを設定し、そこにLED電球を1ついれたり、リビングというルームを設定し、そこにLED電球を2つ、テレビ、エアコンを設定するなどします。
    ルームにいれたデバイスは抽象化され「Hey Siri、[ルーム名]のXXを◯◯して」と操作できます。例えば「Hey Siri、リビングの明かりを消して」と命令し、電球2つを同時に操作できるわけです。

  • ゾーン
    各ルームをまとめる単位です。例えば寝室と書斎が2Fにあった場合は2階というゾーンを設定したり、ベランダと玄関で外というゾーンを設定できます。
    ゾーンはルームの家電をまとめて操作できる仕組みで、基本的にルームと使い方は変わりません。「Hey Siri、2階の明かりを消して」を言えば2階すべての明かりが消えます。

  • シーン
    各デバイスの設定を一括で変更できます。例えばおはようというシーンを作り、部屋の明かりをオン、テレビをNHKに選択というコマンドを「おはよう」のシーンに設定すれば、「Hey Siri、おはよう」と話かけることで、1つの命令で部屋の明かりが点灯し、テレビがNHKを表示します。

www.youtube.com

  • スケジュール
    シーンで設定した設定を日時指定で実行できます。例えば07:00におはようのシーンを実行ができます。

Homekitを日本で試すには

海外ではすでにたくさんの製品がHomekit対応で発売されているようですが、日本ではまだ1つしか発売されていません。海外ずるい。
悔しいので調べてみたらhomebridgeというHomekitのオープンソース実装がありました。

また多くのプラグインが存在し、hueやnetatmoなど、日本で売られている製品のプラグインもありました。

部屋のLED電球を操作することができる、Philips hue。

Philips hue(ヒュー) スターターセット 929000259907 リテールパッケージ

Philips hue(ヒュー) スターターセット 929000259907 リテールパッケージ

https://github.com/thkl/homebridge-philipshue

こちらはHomekit対応のhueが発売されたので、そちらを買ったほうが良いです。

Philips Hue(ヒュー) スターターセット v2   929001156101 【AmazonAlexa認定取得製品】

Philips Hue(ヒュー) スターターセット v2 929001156101 【AmazonAlexa認定取得製品】

湿度、気圧、湿度、二酸化炭素濃度や騒音レベルなどを計測するNetatmo ウェザーステーション

これで、Homekitで幾つか家電を操作することが出来ましたが、赤外線のみや未対応の家電も操作したかったので幾つかプラグインを書きました。

IRKitとhomebridgeの連携

IRKitはAmazonで買えるプログラム可能な赤外線リモコンです。

homebridgeに対応させるためにプラグインを書きました。
このプラグインをインストールすることでSiriでIRKitが操作可能になります(家電のON/OFFが可能になります)。

PS4とhomebridgeの連携

PS4は赤外線がないので、ネットワークからブートする必要があります。
ps4-wakerという便利なプログラムがありましたのでそれを使いました。

それを実行させるためにHomekitからコマンドを実行させるプラグインを書きました。
homebridgeを実行しているサーバでコマンドを実行するだけなので別のアプリの実行などにも使用可能です。

インストールと設定方法

homebridgeのインストールはとても簡単で、node.js実行環境があるパソコンで次のコマンドでインストール、実行できます。

sudo npm install -g homebridge
homebridge

各種プラグインのインストールもnode.jsのnpmコマンドでインストールします。

npm install -g homebridge-philipshue
npm install -g homebridge-netatmo
npm install -g homebridge-irkit
npm install -g homebridge-cmd

設定ファイルはホームディレクトリの「.homebridge/config.json」に記載し、そこに記載したデバイスがHomekitに読み込まれます。

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    
    "description": "This is an example configuration file with one fake accessory and one fake platform. You can use this as a template for creating your own configuration file containing devices you actually own.",

    "accessories": [
        {
            "accessory": "WeMo",
            "name": "コーヒーメーカー"
        }
    ],

    "platforms": [
        {
            "platform" : "PhilipsHue",
            "name" : "Hue"
        }
    ]
}

ここでnameに記載する名前がSiriのHomekit対応デバイス一覧に登録されるので。「Siri、コーヒーメーカーをオンにして」と言えばSiriがコーヒーメーカーオンにします。例えばこれがテレビの電源を操作する場合だったらテレビと名前を変更する必要があります。

また、Homekit対応製品を操作する場合はHomekit対応アプリをiOSバイスにインストールする必要があります。Homekit対応アプリはいくつかありますが以下の2つのアプリどちらかがおすすめです。

Eve for HomeKit

Eve for HomeKit

  • Eve Systems GmbH
  • ライフスタイル
  • 無料

Insteon+

Insteon+

  • Smartlabs
  • ユーティリティ
  • 無料

どちらもフリーで使用でき、アプリを購入しなくてもHomekitの管理ができるようになります。
僕はinsteon+を使用しています。

Homekitの欠点

Homekitをメインに家電の運用をして、いくつか問題点が判明しました。

  1. インターネットを経由して家電の操作はできない
    Homekitはインターネットにはつなぎにいきません。
    基本的には内部(家のネットワーク内)で完結しているので、各種デバイスをインターネットから操作することは出来ません。
    ただし、Apple TVを設置している場合はApple TV経由でHomekitを操作できるようです。
  2. 条件を設定してのデバイスの実行はできない
    部屋の温度が10度以下ならエアコンをオンにするなどの条件を設定してデバイスを操作するというような仕組みは、現状Homekitで設定できないようになっています。
    これはコンセプトとしてSiriでコントロールすることが前提なので、シンプルな機能となっていることが原因なのではないかと思います。
  3. 特殊なデバイスはHomekitに設定できない
    例えばFitbitの活動量計とか体重計はHomekitに接続できません。
    バイスのON/OFFや設定の変更を主な操作とするのがHomekitなので、あまりそういう機器のプロファイルは用意されておりませんでした。よって、体重計や活動量計などあまりスマートホームに関係のないデバイスとの連携はHomekitは苦手なようです。

よってHomekitの欠点を補足するためにIFTTTを導入しました。

IFTTTの導入

IFTTTは基本的にWEBサービスと実デバイスを連携しています。
前回の記事で紹介したように、 Mackerelとデバイスを連携させたり、

LaMetricにWEBサービスの情報を表示させるために使用しています。

また、Fitbitの体重計で体重を測ったらiPhoneに通知とかそういう細かいこともしています。

IFTTT Recipe: 体重を記録したら通知 connects fitbit to pushbullet

このように、ある閾値になったらトリガーをオンにするような使い方や、WEBサービスから情報を取得するような使い方はHomekitでは難しいため、IFTTT等の別サービスを併用するといいと思います。

それで結局便利になったの?

カーチャンJ( 'ー`)しくらい便利になった
カーチャン、テレビつけてとか、電気消してとか、そういう横着をデバイスで代替する程度の便利さは感じました。
ありがとうカーチャン…正月は帰るね…。

逆にセンサからの通知などはまだ各アプリに頼るとこがあり、その辺は前述したとおり、別なサービス(IFTTTなど)に頼る必要がありそうです。
更に言うのであればセンサで検知して明かりをつける程度なら、センサ付きLED電球を買う方がスマートかなと思います。

我が家のお家ハックのロードマップ

tado社のSmart AC Controlを購入しており、Homekitの対応が予定されているのでエアコンまわりはIRKitの操作からリプレイス予定です。

また、お財布や定期入れなど、無くしてはいけないものにBluetoothタグを仕込んで音を鳴らしたいと思っているのですが、その製品の中でハック可能な製品があればHomekitに組み込みたいと考えています。だいたいお財布をなくすのは部屋の中なので簡単に鳴らせるようにしておきたいです。

CEREVOのHackeyも購入を検討中です。
実物でネットのコマンドを叩けるならばいろいろ使い道がありそうです。

目覚まし時計も少し気になっていたのですが、起きたらその時だけネットに接続する機能があれば欲しかったなぁ。

謝辞

先人の方々のブログ記事がなければ僕がIoTに手をだすことはなかったです。

ということで未来のお部屋を作ってみたでした。 明日のおうちハックはbohemian916さんです!

追記

構築して1年後のお話もかきました

senyoltw.hatenablog.jp