コンセプト
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'
}