こんにちは、プリンス伊藤です。

前回に引き続き、ハッカソンについての紹介になります。今回は誰しもが経験したことのある問題についての解決策を提案してくれました!どうぞ御覧ください!


はじめに

我々髙橋組は、身近なトイレについての問題を解決するべく、Raspberry Piとスマートフォンによる、トイレの空き状況照会システムを構築しました。

背景

弊社の男子トイレには小便器がなく、大便器が2つあるだけです。 そのため満室になる頻度が高く、用を足そうとトイレに赴いたものの、満室で用を足せなかったという事案がしばしば発生していました。 そのため、自席からトイレの空き状況を確認できるソリューションが必要でした。

本システムについて

トイレの個室の開閉をRaspberry Piで検知し、トイレの空き状況をAPIサーバに通知します。 トイレの空き状況はAPIサーバを介してiOSデバイスとApple Watchから確認できます。 満室時、希望すればプッシュ通知がiOSデバイスとApple Watchで受け取れます。

システム構成

前述のとおりトイレ個室の開閉はRaspberry Piで検知します。 サーバサイドはAmazon Web ServicesのAPI GatewayとLambdaとDynamoDBとMobile Hubを使用しました。 空き状況の照会には専用のiOS用アプリを使用します。

構成図

構成図は下記のようになります。

構成図

個室の開閉検知について

赤外線や超音波センサーの利用も検討しましたが、個室の壁と錠前が金属同士で触れ合っていることに着目し、両端に電子ワイヤーを取り付け、電気が通るか通らないかで開閉を判断するようにしました(図参照)。

錠前

サーバサイドについて

業務ではないので好きに作りました。 機能としてはごく単純なものだったので、ロジックはEC2を使わずLambdaとnode.jsで実装しました。 APIはAPI Gatewayを、データの保存にはDynamoDBを、プッシュ通知はMobile Hubを介してSNSを利用しました。 今回Mobile Hubはプッシュ通知でしか使っていませんが、余裕があればユーザサインインやテストなども利用したかったです。

空き状況照会用アプリについて

iPad/iPhone/Apple Watchに対応するアプリを制作しました。Watchアプリは、watchOS 2に対応したライブラリの設定に少し手間どりましたが、通信モデルはiOS用と共通化できたので簡単に作れました。 Amazon SNS によるプッシュ通知の実装がすごく簡単で便利でした。

iPadアプリの画面


トイレに行ったら満席でなくなく戻ってくるという悲しい出来事はこれを導入すればもう起きませんね!