今回お話ししたいこと
みなさんこんにちは、西本です。TECHSCORE Advent Calendar 2016の16日目、本日の当番は私です。今日は、インターネットにつながる鍵穴「Hackey」を買ってみましたので、ちょっと試してみたいと思います。
インターネットにつながる鍵穴
HackeyはCerevo社(https://www.cerevo.com/ja/)が販売しているキースイッチで、Wi-Fiを使ってインターネットに接続することができるIoT(Internet of Things=モノのインターネット)デバイスの1つです。円錐台の形をした本体には鍵穴が1つ。ここに鍵を差して、右にひねれば「ON」、左にひねれば「OFF」をWebサービスに伝えることができます。また、本体にはLEDインジケーターが内蔵されており、Webサービスから通知を受け取ると点灯します。電源はマイクロUSB給電。バッテリーは内蔵していませんから、本体だけを持ち運んで使うことはできません。価格はCerevo社の直販サイトで9,980円(税別、送料別)。私はAmazon.co.jpにて購入しましたが、本体価格は同じだったものの送料無料で入手できました。
Hackeyの詳しいセットアップ方法はここでは割愛しますが、次のような手順になります。
- Hackeyの公式サイトにてMy Hackeyアカウントを登録する。
- PINコードが発行されるので書き留めておく。
- Hackeyの電源を入れる。
- PCもしくはスマートフォンからHackeyのWi-Fiアクセスポイントに接続する。
- Hackeyにブラウザからアクセスし、「Set Accerss Point」からHackeyがインターネットに接続する際に使用するWi-Fiアクセスポイントを登録する。
- 続いて「Register this Hackey」からMy HackeyアカウントとPINコードを入力し、My HackeyアカウントとHackey本体とを紐付ける。
メニューはすべて英語ですが、オンラインマニュアル(https://hackey-manual.cerevo.com/ja/)にスクリーンショット付きで手順が解説されています。My HackeyアカウントとHackey本体の紐付けが完了すれば、セットアップは完了です。USBケーブルを抜き差ししてHackeyを再起動させると、Hackeyは先程設定したWi-Fiアクセスポイントに接続を試みます。
Webサービスとの連携方法=Webhook
HackeyはWebhookを使って次の2つのことを行うことができます。
- 鍵を右にひねった時(ON)と左にひねった時(OFF)にPOSTでHTTPリクエストを送る
- GETでHTTPリクエストを受け取るとHackey本体のLEDインジケーターを点灯させる
Webhookの設定はMy Hackeyのダッシュボードにて行います。ダッシュボードにログインすると、My Hackeyアカウントに紐付けられているHackeyの設定状態が表示されます。スクリーンショットではモザイクをかけていますが、「Hackey_」の後の文字列がHackeyのデバイスIDです。
ダッシュボードでは「Webhook Action」と「LED通知」の2つの設定を行うことができます。
Webhook Actionでは、鍵をひねった時に通知を送るWebサービスのURLを指定します。「アクション追加」をクリックすると次のような画面になります。
「Webhook送信タイミング」の「ON」は鍵を右にひねった時を、「OFF」は左にひねった時を指しています。ON/OFFどちらも同じ動作を行いたい時は、ON/OFFそれぞれに同じ設定を行います。
鍵をひねると、次のJSONが指定のURLにPOSTで送信されます。
1 2 3 4 5 6 |
{ "hackey": { "device_id": "デバイスID", "event": "turn_onもしくはturn_off" } } |
LED通知では、Webサービスから通知を受け取った時にLEDインジケーターを光らせるためのURLを発行します。「アクション追加」をクリックすると次のような画面になります。
ここではLEDインジケーターを「何色」に「何秒間」光らせるかを設定します。色は「Red」「Green」「Blue」「Yellow」「Purple」から選択できます。試しに「60秒間青色に光らせる」URLを発行してみます。
ダッシュボードに戻ると、次のような画面になりました。
ここで表示されているURLにGETでHTTPリクエストを送信すると、HackeyのLEDインジケーターは60秒間青く光ります。「テスト」をクリックすると、実際の動きを試してみることができます。
鍵をひねるとTwitterでつぶやいてみる
鍵をひねるとTwitterに「オヒルー」とつぶやくよう設定してみます。今回はHackeyとTwitterとの連携に、Yahoo! JAPANが提供しているスマートフォンアプリ「MyThings(https://mythings.yahoo.co.jp/)」を使用しました。MyThingsは異なるWebサービスやIoTデバイスを組み合わせて、「A社のサービスで○○が発生したら(これをトリガーと呼びます)、B社のサービスで○○を行う(これをアクションと呼びます)」といった設定ができるものです。こうしたサービスは「ハブサービス」と呼ばれています。MyThingsには利用可能なIoTデバイスとしてあらかじめHackeyが登録されていますから、Webhookを意識しなくともHackeyを使った組み合わせを設定できます。
MyThingsの詳しい設定方法はここでは割愛しますが、次のような手順になります。まず、「組み合わせ一覧」から新規の組み合わせを作成します。
最初にトリガーの部分「○○したら」を設定します。タップするとMyThingsが対応しているWebサービスやIoTデバイスの一覧が表示されますから、ここからHackeyを選択します。はじめてMyThingsでHackeyを利用する時は、My Hackeyアカウントの認証が入ります。次のように設定すれば、トリガーの作成は完了です。
続いて、アクションの部分「○○する」を設定します。タップすると先ほどと同様にWebサービスやIoTデバイスの一覧が表示されますから、ここからTwitterを選択します。はじめてMyThingsでTwitterを利用する時は、Twitterの認証が入ります。次のように設定すれば、アクションの作成は完了です。
これで「Hackeyの鍵を右にひねったら」「Twitterでオヒルーとつぶやく」設定が完了しました。試しにHackeyの鍵を右にひねってみます。
Hackeyを買ってしばらくの間は、自分のデスクに置いてお昼休みのたびに「オヒルー」とつぶやいていましたが、1週間ほどで止めました。私が会社にいない時間に「オヒルー」が投稿されるミステリーが発生したからです。誰ですか、私がいない間に鍵をひねったのは。
いろいろと活用方法を考えてみる
シンプルにON/OFFしかできないHackeyですが、何かを行いたい時に、わざわざパソコンやスマートフォンを開かなくても、鍵をひねるだけで実行できるのは便利だと思います。
例えばカップル2人で1つずつHackeyを持ってみましょう。ベッドサイドに置いておいて、寝る前に鍵をひねると、相手のHackeyが赤く光ります。それに答えて相手が鍵をひねると、こちらのHackeyが赤く光ります。1990年代はクルマのブレーキランプで感情を伝えていましたが、21世紀の今はIoTで感情を伝える時代です。もちろん2人とも、ベッドサイドのHackeyをずっとガン見しているわけではないと思いますから、寝る前にはLineで連絡を取り合ってください。
もう少し凝った使い方を考えてみます。例えば何かのデータの集計値を見たいとしましょう。集計元のデータは結構多く、集計を開始してから結果が出るまでに10分かかるとします。こうした場合、夜間バッチにて前日のデータをあらかじめ集計するよう仕込んだりするかも知れませんが、毎日見たいデータではなく、必要に応じてたまに見たい程度です。不要な負荷処理は避けたい。となると、見たい時に管理画面にアクセスして、集計開始ボタンを押すことになります。ここにHackeyを導入してみましょう。
- Hackeyの鍵をひねって集計開始をシステムに伝える。
- システムは集計を開始すると、HackeyのLEDを赤色に10秒間点灯させる。
- システムは集計が終了すると、指定のメールアドレスに集計結果を伝えるメールを送信し、HackeyのLEDを青色に5分間点灯させる。
鍵をひねった後、LEDインジケーターが赤く光るのを見て集計が開始されたことを確認します。しばらくするとLEDインジケーターが青く光っていますから、自分のメールボックスを確認すると集計結果が届いています。
鍵について
鍵の種類は100種類あり、そのうち1種類の鍵がスペアを含めて2個、ランダムに同梱されています。つまり、Hackeyを2つ買って同じ種類の鍵が入っている確率は1%です。可能性としてないわけではありませんから、セキュリティを重視しなければならないシーンで導入するのは難しいと思います。逆に鍵を紛失してしまった場合も、もう1つHackeyを買ってくれば簡単に済むわけではありません。
また、鍵は誰でもひねることができてしまいます。鍵穴に差しっぱなしにして置いておくのは避けたほうがいいでしょう。そうでないと、私みたいに気づかないところで「オヒルー」とつぶやかれてしまいます。