照度センサを使って、トイレの使用状況をSlackからわかるようにしてみました。職場は2フロアあり、下のフロアがオープンスペースになっていおりトイレもここにあります。私は上のフロアで仕事をしていますので、トイレにいくには下のフロアに降りるのですが、トイレが1個しかないので、降りてみたら使用中で仕方なく上に戻るという非生産的な行動が多発していました。会社のトイレは家庭用のトイレ個室のような感じですので、こちたの記事のように扉の開閉センサーでの判定は難しい(使い終わって扉を閉められると使用中になりうる)ので、個室の電気がついていれば使用中とみなすことにして実装しました。いうとこんな感じです。B)があったので貰い受け、照度センサ:BH1750をバックオフィスの方にねだることで機材を揃えました。購入した照度センサはピンがはんだ付けされていないので別途ハンダゴテなども必要です。(これも買ってもらった)ラズパイとBH1750の接続や値の取得については、以下の記事の輝度センサ部分を参考とさせていただきました。http://jimaoka.hatenablog.jp/entry/raspi-sensor一通りセットアップを終えたら以下のPython3のコードで輝度を取得できることを確認しました。print(get_lux())私の環境では暗いときは100未満で、蛍光灯レベルでは200以上の値が出ていました。トイレ使用開始時にSlackにメッセージを通知してもいいのですが、それはあまりに監視されている感じもするので、SlackBotのステータスで使用中かどうかを表現するようにしました。空き状態とりあえず、ラズパイ上でSlackBotを動かすことにしました。SlackBotはslackbotを使うのが楽そうなので、こちらを使います。slackbotファイルはこんな感じで構成します。Tokenの取得Botを作成するので、事前にSlack側で作業をしておきます。トークンを確認しておきます。取得したトークンはslackbot_settings.pyに設定しておきます。'確認しておいたトークン'::Botによる会話このslackbotは話しかけられた際の応答の定義をplugins配下のスクリプトで定義します。以下をplugins/toilet.pyとして配置します。話しかけてね')このBotに対してといれと話しかけると、現在の明るさと空室状況を応答します。Botの在籍状況(ステータス)の設定これで、トイレにいく前にBotに話しかけておけば空室状況がわかるようになりましたが、毎回聞くのは面倒なのでステータスアイコンで判別したいわけです。今回利用しているslackbotにはBotアカウントの在籍・離席といったステータスを設定する機能がないようです。そのため、以下のusers.setPresenceというSlackのWEBAPIを直接利用します。https://api.slack.com/methods/users.setPresencePythonでHTTPリクエストをするのであれば、requestsが楽なので導入します。requestsあとはこんな感じでステータスを変更できました。status='away')).contentまた、空室状況にあわせてステータスを設定するには定期的に明るさを取得する必要がありますが、そのような定期実行の機能もなさそうでした。しかたないので、エントリポイントであるbot.pyでBotを起動する際に独自にスレッドを生やして定期実行させることにしました。最終的にbot.pyは以下のようになりました。main()これで以下のようにBotを起動すれば監視が開始されます。157:自動起動の設定ラズパイを起動した時点で、トイレの監視を自動的に有効化してほしいのでsystemdに登録しておきます。起動用のシェルスクリプトを書いておきます。/home/pi/apps/toi/bot.pyそして、systemdに登録するための設定をtoiletmonitor.serviceとして作成します。multi-user.target作成したtoiletmonitor.serviceを/etc/systemd/system/の配下に配置します。以下のように起動できるか確認しておきます。toiletmonitor問題なく動作ができたら、以下で自動起動を有効化します。toiletmonitorこれで、トイレにラズパイを置いて電源をいれるだけで監視が開始されるようになります。まとめ実際にこんな感じで会社のトイレに配置しています。今回のコード等は以下のリポジトリで公開していますのでよろしければご覧ください。https://github.com/denzow/iott/blob/master/toiletmonitor.service.sampleはじめて真面目にラズパイで遊んでみましたが、ハマりどころもすくなくなかなか楽しかったです。照度センサも3個入りでまだまだ余っていますので他の活用方法も考えてみたいと思います。2017の3日目です。embyを導入したISUCON11予選に参加して32位で敗退してきました。8はてなブログをはじめよう!denzowさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。