Raspberry PiとTwilioで実現するトイレ占有センサー:音声通話とSMSで通知
概要
ハッカースクールでの活動中、施設の2つのトイレ(メインワークスペース隣と地下)のリアルタイム占有状況を把握できれば、無駄な待ち時間を減らし利便性が向上することに気づきました。
このソリューションでは、電話やSMSでトイレの空き状況を確認できます。Raspberry Piに取り付けたシンプルな光センサーがトイレの照明を監視し、照明が点いていれば「使用中」と判断します。
Raspberry PiはHerokuでホストされたFlaskアプリケーションに定期的に状態を送信します。このアプリはTwilioからの着信リクエストも受信し、ユーザーが専用のTwilio番号に電話やSMSを送ると、現在の占有状況を音声合成(TTS)またはSMSで返答します。
音声/SMSインターフェースに加え、@gelstudiosが直感的なWebダッシュボードを開発し、センサーのリアルタイム状態を表示しています。
サーバー構成
Twilio
Twilioは、RESTful APIを通じて電話の発着信とSMSの送受信を簡素化するクラウド通信プラットフォームです。TwilioのPythonヘルパーライブラリとクイックスタートチュートリアルを活用し、電話番号をFlaskのエンドポイントに接続しました。
Heroku
Herokuはフルスタックアプリケーションのデプロイに適したマネージドプラットフォームです。Heroku Dev Centerのガイドに従い、Python/Flaskアプリをセットアップし、HTTPSでTwilioとの安全な通信を確保しました。
サーバーコード
Webアプリケーションの完全なソースコードはGitHubで公開されています:twilio-light-sensor-server/run.py
/twilio/voiceおよび/twilio/textルートはTwilioからの着信リクエストを受け付けます。ユーザーが電話をかけたかSMSを送ったかに応じて、現在のトイレ占有状況を反映したレスポンスを生成し、Twilio経由で音声またはテキストとして配信します。
/updateルートはRaspberry PiセンサーからのHTTP POSTペイロードを受信します。各ペイロードにはsensor_idとsensor_valパラメータが含まれ、サーバーは送信元を特定して内部状態を更新します。
詳細については、元のプロジェクト記事を参照してください:Voice– and SMS–Enabled Light Sensor Using Raspberry Pi and Twilio
製造プロセス
- 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
- Raspberry PiでTMP006赤外線温度センサーを使う – Pythonライブラリとセットアップガイド
- オプトカプラとRaspberry Piで24Vサーモスタットのイベントをログ記録・グラフ化
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry Piで低コスト土壌水分センサーを構築 - スマート灌漑に活用
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- Raspberry Pi、DHT11、ThingSpeakで作る初めてのIoTプロジェクト
- Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
- Raspberry Pi光センサーチュートリアル - LDRを配線してPythonで光量を読み取る