myThingsをつかったHackeyからslackへのメッセージ通知

販売されたばかりの[Hackey](http://hackey.cerevo.com/ja/)を使って、[myThings](http://mythings.yahoo.co.jp/)経由でslackへの通知をさせてみました。
[Hackey](http://hackey.cerevo.com/ja/)は[Cerevoさん](http://www.cerevo.com/ja/)が販売している、ウェブサービスを制御するための鍵型スイッチです。
あえて鍵でon/offすることで、リアルなアクションをネットと連携させられる点が魅力です。通知系のチャンネルが充実しているmyThingsとも相性がよいとおもいます。
Hackeyはwebhook方式に対応しているサービスを前提にトリガーを通知できるため、myThingsでこれをうけられるようにするため、[webscript.io](https://www.webscript.io/)を利用してみました。

![IMG_3061.png](https://qiita-image-store.s3.amazonaws.com/0/51786/3e64a744-ec89-7678-595e-bd99d8e707d7.png)


##概要
今回は、これからがっつり開発をするぞ！というときに、自ら気合をいれると同時に、チームメンバー（特に上司）に**”邪魔しないでほしい！”**というアピールをするという想定にしました。
Hackeyの鍵をONにすると、IDCFチャンネルのtrigger-1に通知がいき、指定のslackの部屋に"集中モードに入ります！"というメッセージをいれるようにします。

myThingsと自作デバイスでどのようなことができるかについてきになるかたは、[公式サイト](http://www.idcf.jp/cloud/iot/?cid=yj_mythings)や[こちらの情報](http://qiita.com/mac008008/items/0f2cebc4b0728b89cd39)を参照ください。

##Hackeyをセットアップ
1. myHackeyへのアカウント登録
[myHackey](http://hackey-app.cerevo.com/)にアクセスして、サインアップします。
ここで発行されるPINコードがデバイス登録のさいに必要になります。

1. Hackeyのwifi接続
電源をいれるとHackey自体がWifiのAP(Hackey-xxxxxxx)として動作しているので、設定用のPCで該当APに接続の上、http://192.168.4.1にアクセスします。
"Set Access Point"を選び、wifi設定を入力します。

1. Hackeyのアクティベーション
"regist this hackey"から、アクティベーションを行います。

![スクリーンショット 2015-09-25 9.30.58.png](https://qiita-image-store.s3.amazonaws.com/0/51786/f97dd5d4-7aa4-72ef-55c2-0e973f1e93c6.png)

##myThingsサーバの設定
[masatoさん](http://qiita.com/masato)の[myThingsをはじめよう - Part2](http://qiita.com/masato/items/f9be4a15216fe29de7fb)をベースに、myThingsサーバを構築します。
myThingsサーバとのやりとりのためにowner、Hackeyとのやりとりのためにtrigger-2を利用するので、ownerとtrigger-2のUUIDとTOKENをメモっておいてください。

##webscript.ioの設定
[webscript.io](https://www.webscript.io/)は、サーバーをたてずにWebサーバー機能を提供するサービスで、[GitHub](https://github.com/)や[Stripe](https://stripe.com/)などのwebサービスでwebhookのターゲットとして利用することが多いようです。ここでは無料ユーザでできる機能で対応します。

1. ターゲットの設定
webscript.ioのsignupをすませます。signup後にhackeyからの通知先のターゲットを設定します。
scriptから"create a New Script"を選択します。
![スクリーンショット 2015-09-27 12.36.35.png](https://qiita-image-store.s3.amazonaws.com/0/51786/07469c68-26b1-dcc5-af4b-3c7abaea1ed1.png)


ターゲットのURLはここでは、**mythings.webscript.io/turnon**とします。

![スクリーンショット 2015-09-25 23.21.49.png](https://qiita-image-store.s3.amazonaws.com/0/51786/9be68805-9d1d-7863-84ae-e8f8e4d44ada.png)


1. スクリプトの設定
"script"を選択し、ターゲットにアクセスがあった場合は、IDCFチャンネルサーバのtiger-2へ通知をとばすように設定します。
**myThingsサーバの設定**でメモした、trigger-2のUUIDとTOKENを以下の画面で入力してください。

![script2.png](https://qiita-image-store.s3.amazonaws.com/0/51786/1c0bb97f-9224-bb05-ab43-fa3f7be56ec7.png)

```
local status = http.request({
	method='post',
	url='http://{IP Address}/data/{trigger-2のUUID}',
	headers={
		meshblu_auth_uuid='{trigger-2のUUID}',
		meshblu_auth_token='{trigger-2のTOKEN ID}'
	}}).statuscode
```

スクリプトを保存すれば設定は終了です。
webscript.ioの無料ユーザーは、スクリプト保存期間が7日間に限定されるので、継続的に利用をしたい場合は有料ユーザーになる必要があります。

##webhookアクションの設定
myhackeyにアクセスし、webhookアクションの設定をおこないます。
ダッシュボードの**Hackeyのステータス**"から、Webhook actionの**アクションの追加**を選択し、webscript.ioで設定したターゲットのURLを登録します。

![target設定.png](https://qiita-image-store.s3.amazonaws.com/0/51786/912931d9-dc95-dfe3-ca6a-6a4f3aff96f5.png)


##myThingsアプリでの組み合わせ設定
・IDCFチャンネルサーバの登録
[myThingsをはじめよう - Part4: 「IDCF」チャンネルを認証する](http://qiita.com/masato/items/3d958b4b427020b83b94)を参考に、IDCFチャンネルの登録を行ってください。
たまにうまくIDCFチャンネルが認証ができないケースがあるようです。myThingsアプリから一旦ログアウト/ログインしてから、認証をするとうまくいくようです。

・トリガーとアクションの設定：IDCFチャンネルとslackチャンネルの設定
IDCFチャンネルをトリガーとして選択し、trigger-2を選択します。
その後、slackチャンネルでメッセージを出力したい箇所とメッセージを設定します。

![image1 (2) copy.jpg](https://qiita-image-store.s3.amazonaws.com/0/51786/6b38368b-1b69-52e5-a9ef-15d4b48c0617.jpeg)


##動作結果
ということで、実際に鍵をまわしてみます！ガチャ！
![IMG_3062.png](https://qiita-image-store.s3.amazonaws.com/0/51786/cc796fbb-6ae6-981e-7e58-4c70f9e8b59c.png)


myThingsサーバからIDCFチャンネルサーバへのポーリングは、15分おきになっているので、今回はmyThingsアプリから手動実行で強制的に状態を確認させます。
![image](https://qiita-image-store.s3.amazonaws.com/0/51786/3cf6cd64-c654-35ff-fca5-b649b8e1add8.png)

slackのメッセージをみてみると、通知されました！！
![スクリーンショット 2015-09-27 22.58.52.png](https://qiita-image-store.s3.amazonaws.com/0/51786/c2b5a90f-b51f-4e49-d41e-6fad4fe78c32.png)



ここではswitch onの事例だけですが、triggerをもう一つ追加するこで、switch offの設定も簡単にできます。また、hackeyには外部からhttpでコントロールできるLEDがついています。myThingsで取得できる天気やスケジュールの状況などと連携して、色をかえるのもおもしろいとおもいます。