18
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

myThingsAdvent Calendar 2015

Day 14

BOCCOをmyThingsを使ってしゃべらせてみた

Posted at

みなさんこんにちは!

ユカイ工学の角田です.
もうすぐクリスマスですね。

さて、myThingsとBOCCOの連携が11月より開始されました。
そこで、本記事ではBOCCOとmyThingsを連携させて、raspberry piのボタンを押したらBOCCOが喋る、というデバイスを作ってみたいと思います.
今回は簡単にBOCCOと連携を行う為、IDCFサービスを使って実装します.

BOCCOとは?

BOCCOはこちらのムービーのような感じで、家族をつなぎます。
子供が返ってきた情報を玄関のドアにくっつけたセンサを使って、離れて仕事をするお父さんのスマホに通知します。お父さんとしては、子供が帰ってきた時間がわかって安心ですね。また、BOCCOロボットに対して仕事中でも簡単にメッセージを送ることができます。逆にスマホをまだ持っていない子でも、ロボット経由で家族にメッセージを送ることができます。

BOCCO紹介動画
BOCCO紹介動画

BOCCOとmyThingsの連携例

BOCCOをリビングなど家族が集まる場所に置いて、
・天気
・Gmail
などと連携すると便利です.

以下のようにmyThingsアプリで天気とのセットを作成すると、BOCCOが今日の天気や、気温をしゃべってくれます!

thumb_IMG_3329_1024 2.jpg

myThingsとBOCCOで天気予報を喋らせてみた(動画)
BOCCOとmyThingsを連携

今回作成したもの

今回作成したデバイスは、下の写真に写っている木製の入れ物です。
筐体にある、BOCCOの鼻を押したら、myThings経由でBOCCOが定型文を喋ってくれるというものです。
先日、筐体を、Yahoo!のmyThingsチームにも見ていただいたのですが、カワイイと好評でした。よかった!

thumb_DSC08971_1024.jpg

鼻を押した時、筐体のBOCCOの目が光ります。

thumb_DSC08972_1024.jpg

以下イメージ動画です。
myThingsとIDCFでBOCCOを喋らせてみた

IDCFとの連携

               全体構成

mythings.png

必要なもの

  • 今回使用した環境は下記の通り
  • 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.py
    from 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.py
    conf = {
         "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からとっています。
    raspberry pi.png

    myThingsセットアップ

    IDCF仮想サーバと、raspberry piのアクションが終わったら最後に、myThingsアプリの方で、BOCCOとの組み合わせを作成します。

    myThingsの右上の+ボタンからトリガーとアクションの組み合わせを作成します。

    thumb_IMG_3352_1024.jpg

    ここにトリガーとしてIDCF、アクションとして、BOCCOを入れていきます。

    thumb_IMG_3353_1024.jpg

    まずトリガーとしてIDCFを認証します。
    認証が完了すると、以下のようにIDCFのチャンネルに、チェックマークがつきます

    thumb_IMG_3354_1024.jpg

    IDCFチャンネルをタップすると、トリガー選択画面に移ります。先ほどの設定で、「trigger-1」を設定していたので、「trigger-1」を選択します。

    thumb_IMG_3356_1024.jpg

    次にアクションを選択します。
    BOCCO認証のためには、BOCCOアプリでアカウントを作成しておく必要があるので、事前にアカウントを作成します。

    BOCCOアプリを立ち上げて左上の歯車マークを押します

    IMG_3368.jpg

    「sign up」でアカウント登録ができます。
    ここでBOCCOチャンネル認証のために、登録しておきます。

    BOCCOの
    IMG_3366.jpg

    BOCCOアプリでアカウントが作成できたら、myThingsアプリに戻り、BOCCOチャンネルを認証します。
    認証に成功すると、IDCFと同様にチェックマークがつきます

    thumb_IMG_3357_1024.jpg

    自分のBOCCOの名前と、喋らせたい内容を入力します。終えたら下のOKを押します
    thumb_IMG_3359_1024.jpg

    今回は例として以下のように登録しました。最後に一番下の「作成」を押して登録完了です

    thumb_IMG_3361_1024.jpg

    これで準備完了です

    動作

    BOCCOに通知がいくと以下のようにmyThingsに通知がきます

    thumb_IMG_3363_1024.jpg

    まとめ

    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

    http://www.idcf.jp/cloud/iot/detail01.html

18
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?