みなさんこんにちは!
ユカイ工学の角田です.
もうすぐクリスマスですね。
さて、myThingsとBOCCOの連携が11月より開始されました。
そこで、本記事ではBOCCOとmyThingsを連携させて、raspberry piのボタンを押したらBOCCOが喋る、というデバイスを作ってみたいと思います.
今回は簡単にBOCCOと連携を行う為、IDCFサービスを使って実装します.
BOCCOとは?
BOCCOはこちらのムービーのような感じで、家族をつなぎます。
子供が返ってきた情報を玄関のドアにくっつけたセンサを使って、離れて仕事をするお父さんのスマホに通知します。お父さんとしては、子供が帰ってきた時間がわかって安心ですね。また、BOCCOロボットに対して仕事中でも簡単にメッセージを送ることができます。逆にスマホをまだ持っていない子でも、ロボット経由で家族にメッセージを送ることができます。
BOCCOとmyThingsの連携例
BOCCOをリビングなど家族が集まる場所に置いて、
・天気
・Gmail
などと連携すると便利です.
以下のようにmyThingsアプリで天気とのセットを作成すると、BOCCOが今日の天気や、気温をしゃべってくれます!
myThingsとBOCCOで天気予報を喋らせてみた(動画)
今回作成したもの
今回作成したデバイスは、下の写真に写っている木製の入れ物です。
筐体にある、BOCCOの鼻を押したら、myThings経由でBOCCOが定型文を喋ってくれるというものです。
先日、筐体を、Yahoo!のmyThingsチームにも見ていただいたのですが、カワイイと好評でした。よかった!
鼻を押した時、筐体のBOCCOの目が光ります。
IDCFとの連携
全体構成
必要なもの
- myThings,BOCCOアプリがインストールされたスマホ
- raspberry pi B
- BOCCO本体
- LED
- タクトスイッチ
- 抵抗10kΩ
- 開発環境
- 今回使用した環境は下記の通り
- MacBook Pro(MacOSX 10.10.5)
- raspberry pi B([Debian jessie](https://www.raspberrypi.org/downloads/raspbian/))
- IDCF開発環境
IDCF環境構築
IDCFの開発環境構築は以下の記事を参考にさせていただきました。
http://qiita.com/masato/items/f9be4a15216fe29de7fb
ありがとうございます.今回は「trigger-1」と「action-1」を使いメッセージを送受信します。
以下のコマンドで、tokenとuuidを確認します。
docker-compose run --rm iotutil show -- --keyword action-1
uuidとtokenが表示できたらそれをメモしておきます。
raspberry pi側で設定をするときに使います。raspberry piプログラム
raspberry pi側ではpythonで、HTTPポストするためのコードを書きます。
こちらの記事を参考にしました
http://qiita.com/masato/items/152870ff7fd2f5d96cf1まず、raspberry piにログインして、idcf用に適当なディレクトリを作ります
mkdir Documents/bocco/idcf && cd Documents/bocco/idcf
次に、raspberry piから、IDCFでHTTPポストするコードを書きます。
タクトスイッチを押すとLEDが点滅し、trigger1情報がポストされる仕組みです。bocco.pyfrom time import sleep import json import requests import RPi.GPIO as GPIO from config import conf #pin setting BUTTON = 18 LED = 23 #HTTP setting url = "http://{0}/data/{1}".format(conf["IDCF_CHANNEL_URL"], conf["TRIGGER_1_UUID"]) payload = {"trigger":"on"} headers = { "meshblu_auth_uuid": conf["TRIGGER_1_UUID"], "meshblu_auth_token": conf["TRIGGER_1_TOKEN"] } #GPIO Setting GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTON, GPIO.IN) GPIO.setup(LED,GPIO.OUT) # LED blink def blink(): count = 0 while count < 3: GPIO.output(LED,True) sleep(0.3) GPIO.output(LED,False) sleep(0.3) count += 1 def main(): while True: if GPIO.input(BUTTON): print("Button Pressed") r = requests.post(url, headers=headers, data=payload) blink() else: GPIO.output (LED,False) if __name__ == '__main__': main()
ここに先ほど、メモを取ったtriggerと tokenを埋めていきます。
今回使用した環境では以下のようになりました。config.pyconf = { "IDCF_CHANNEL_URL": "xxx.xxx.xx.xxx",#仮想マシンのIPアドレスを入力 "TRIGGER_1_UUID": "23da0f87-8528-457a-a6e1-5e8eb169c2cf", "TRIGGER_1_TOKEN": "ad7556d4", "TRIGGER_2_UUID": "a40489e2-fd46-4eae-9838-d5fc497a62d3", "TRIGGER_2_TOKEN": "a43e7341", }
タッチセンサとLEDの実装
以下のように配線しました。
raspberry piの電源は、microUSBからとっています。
myThingsセットアップ
IDCF仮想サーバと、raspberry piのアクションが終わったら最後に、myThingsアプリの方で、BOCCOとの組み合わせを作成します。
myThingsの右上の+ボタンからトリガーとアクションの組み合わせを作成します。
ここにトリガーとしてIDCF、アクションとして、BOCCOを入れていきます。
まずトリガーとしてIDCFを認証します。
認証が完了すると、以下のようにIDCFのチャンネルに、チェックマークがつきますIDCFチャンネルをタップすると、トリガー選択画面に移ります。先ほどの設定で、「trigger-1」を設定していたので、「trigger-1」を選択します。
次にアクションを選択します。
BOCCO認証のためには、BOCCOアプリでアカウントを作成しておく必要があるので、事前にアカウントを作成します。BOCCOアプリを立ち上げて左上の歯車マークを押します
「sign up」でアカウント登録ができます。
ここでBOCCOチャンネル認証のために、登録しておきます。BOCCOアプリでアカウントが作成できたら、myThingsアプリに戻り、BOCCOチャンネルを認証します。
認証に成功すると、IDCFと同様にチェックマークがつきます自分のBOCCOの名前と、喋らせたい内容を入力します。終えたら下のOKを押します
今回は例として以下のように登録しました。最後に一番下の「作成」を押して登録完了です
これで準備完了です
動作
BOCCOに通知がいくと以下のようにmyThingsに通知がきます
まとめ
myThings経由でBOCCOを喋らせることができました。
今回は簡易的に、タクトスイッチでしたが、この記事をみて、他のセンサ等で、応用して頂けたら幸いです。
#参考にしたサイト
以下のサイトを参考にさせていただきました。
ありがとうございます。
http://qiita.com/masato/items/152870ff7fd2f5d96cf1#raspberry-pi%E4%B8%8A%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8Bpython%E3%81%8B%E3%82%89%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%82%92%E3%81%A0%E3%81%99