LoginSignup
6
5

More than 5 years have passed since last update.

スモールデバイスでセンサー情報を収集して、クラウドで集計・解析する with Slack

Posted at

コンセプト

raspberry pi 等のスモールデバイスにセンサーを接続して情報を収集する場合、
情報の永続性や集計・解析結果へのアクセスの容易性等から
クラウドと連携すると便利です。
色々なやり方がありますが、自分はSlackが慣れているので、Slackを用いました。

センサーからの情報を収集・解析する事によって、健康に資する使い方が様々あります。
照度センサーによる情報を解析すると、例えば一人暮らしの場合、寝室は
 日没後は暗くなる(もしくは遮光カーテンで昼間も暗いまま)
 帰宅後に明るくなる
 睡眠時に暗くなる
 日照または起床後の室内灯で明るくなる
となるので、
 夜間の暗い時間を測定すれば睡眠時間を
 夜に暗くならなかった場合、点灯したまま寝落ちした事を
把握出来ます。

点灯したままの睡眠は質が低いので健康に良くありませんし
睡眠時間が短いのも良くありません。
睡眠時間が長くても、細切れ睡眠だと効率が落ちます。

という訳で、寝室の照度を観測すると、健康に関する情報が取得できます。

システム構成

スモールデバイス --> http リクエスト --> Slack WebHook --> Slack

クラウドサーバーで
 Slack用Hubot --> 発言ログファイル
 発言ログファイルをバッチ処理
 処理結果をWebやSlackのチャンネル等で閲覧可能に

Slackは無料でサービスを作れるので、コスト面で有利です。
クラウドサーバーは、IDCFの毎月500円定額サーバーを自分は使用しています。

スモールデバイスでのセンサー出力をファイル化する部分・Slackを立てる部分・Slack WebHookを設定する部分は、情報ソースが沢山ありますので割愛させて頂きます。

スモールデバイスからのhttpリクエスト

自分は、下記のようなbashの関数を作成して使用しています。

function call_slack_webapi {
  if [ $# -lt 2 ] ; then
     msg="${FUNCNAME[0]} text url <channel> <username> <icon_emoji>"
     show_usage_and_quit "$msg"
  fi
  text="$1"
  url=$2
  channel=${3:-#general}
  username=${4:-webhookbot}
  icon_emoji=${5:-:ghost:}
  out_text=$(now)' '"$text"
  json="payload={\"channel\": \"$channel\", \"username\": \"$username\",
       \"text\": \"$out_text\", \"icon_emoji\": \"$icon_emoji\"}"
  set +u
  curl -s -S -X POST --data-urlencode "$json" $url >/dev/null 2>&1
  set -u
}
function now {
  TZ=Japan date '+%Y-%m-%d %H:%M:%S'
}
6
5
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
6
5