カテゴリー内の他の記事

温度センサーを使ってランチを決めよう!(オートランチセレクト)

フォローする

(著者:サイボウズ 北川 恭平

はじめに

私が所属する、サイボウズ システムコンサルティング本部 cybozu.com ソリューショングループでは、今IT界隈で流行っていると思われるIoT(Internet of Things)を実践的に学ぶために、「Raspberry Pi」を使ってkintoneとの実用的な連携サンプルをいくつか作成しました。
実生活で使うだけではもったいないと思い立ち、cybozu developer networkでそれらを本日より公開していきます。
予定では、IoT企画として最大6本を定期的に掲載する予定ですが、大人の事情で変更が起こりうる点ご了承ください。

やりたかったこと

今週は私の作成したものをご紹介します。
その名も「オートランチセレクト」。

突然ですが、暑い時は冷たいもの、寒い時は暖かいものが食べたくなるかと思います。しかしながら、食べたいものを求めてふらっとランチにいきたいけれどお店が分らない!なんてことはないでしょうか。
それを、解決するのがこの「オートランチセレクト」です。
ざっくりとした流れは以下です。

  1. Raspberry Piをつかって温度センサーより気温情報を取得
  2. 気温情報より気温に適した料理をランダムに選択
  3. ぐるなびAPIを使ってこの選択した料理が食べられるお店をランダムに取得
  4. kintoneアプリにこのお店の情報を登録

 

主にJAVAとRubyをつかってこれらの処理を実現しました。

準備

Raspberry Pi

  • Raspberry Pi Model B Revision 2

温度センサー

  • こちらに同梱されていた温度センサー

ぐるなびAPIアカウント

  • こちらよりぐるなびWebサービス用新規アカウントを発行します

kintoneアプリ

以下2つのアプリを用意します

<カテゴリアプリ>
気温によって食べたくなりそうな料理にカテゴリ分けするためのアプリです

フィールド名 フィールドコード フィールドタイプ
Food Name food 文字列(1行)
グループ group ラジオボタン

<ランダムランチアプリ>
選び出した飲食店情報を登録するためのアプリです

 

フィールド名 フィールドコード フィールドタイプ
本日のおすすめランチ店舗 recomm 文字列(1行)
店舗URL link リンク
店舗住所 address 文字列(1行)
センサーで観測した気温 temper 数値
ヒットしたグループ group 文字列(1行)

気温の取得

こちらを参考に、温度温度センサーを装着しRubyにて気温を取得しました。

Javaサンプル

今回、Javaの外部ライブラリとして以下の二つを使いました。

  • 取得した気温をもとにカテゴリを決定し、カテゴリアプリにREST APIでGET リクエストを送信し料理を取得します。(サンプルコードは抜粋して掲載しています)
  • 店舗情報の取得は、ぐるなびAPIの店舗検索APIを利用しました。店舗検索部分の詳細はぐるなび店舗検索APIのJAVAのサンプルをご参考ください。
  • 最後に、取得した情報をランダムランチアプリに登録していきます。
  • 実行する際は、別途設定ファイルにて以下を設定します。
    パラメータ名 設定値
     domain  cybozu.com環境のドメイン名
    basicname ベーシック認証をのログイン名
    basicpass ベーシック認証のパスワード
    cateId カテゴリー登録アプリのアプリ番号
    cateToken カテゴリー登録アプリのAPIトークン
    lunchId ランダムランチアプリのアプリ番号
    lunchToken ランダムランチアプリのAPIトークン

実行してみた

それでは、作成したスクリプトを実行してみます。一定間隔で気温を10回はかりその気温の平均値をもとにランチのお店を選び出します。

おお!どうやら無事にランチがkintoneに登録されたようなので、kintoneを確認しましょう。
定期実行×通知設定をしておけばこんな風にお昼前に自動で通知ができますね。

店舗名、URL、店舗住所、気温、料理のカテゴリが登録されました。(ぐるなびAPIのパラメータで特定の地点の半径~km以内のお店といった指定ができます。)

最後に

この仕組みを考えついた当初からうすうす気づいてはいたのですが、オフィス内で実行しても空調により気温がほぼ一定に保たれているため、常に同じグループしか選ばれないという所が欠点です。ただ、自分の知らないお店をランダムにサジェストしてくれるワクワク感はなんともいえないものがあります。

興味のある方は是非お試しいただければと思います。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

ログインしてコメントを残してください。
Powered by Zendesk