LoginSignup
18
19

More than 5 years have passed since last update.

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

必要なもの

  • myThings,BOCCOアプリがインストールされたスマホ
  • raspberry pi B
  • BOCCO本体
  • LED
  • タクトスイッチ
  • 抵抗10kΩ
  • 開発環境
    • 今回使用した環境は下記の通り
    • MacBook Pro(MacOSX 10.10.5)
    • raspberry pi B(Debian jessie)
    • 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