#もくじ
その1 ~システム概要 ←本記事です
その2 ~GPIOを利用したスイッチの状態検知
その3 ~アルゴリズム設計
その4 ~ハードウェアの準備
その5 ~自動メール送信でハマる
その6 ~キャリアグレードNAT下の端末に外部からSSHでアクセスする
その7 ~総括
#はじめに
こんにちは。
エンジニア...とはいっても機械系エンジニアのmaitechと申します。
プログラミングに関してはズブの素人ですが,過去にプラレールというおもちゃをラズパイでラジコン化したときにラズパイの大きな可能性に感銘を受け,せっかくならもっと誰かのためになるものを作りたいと思い,今回「Raspberry PiによるSOS発報システム」というものを作った次第です。
これは,遠く離れた誰か...例えば一人暮らしの高齢者宅にSOSボタンを設置し,そのボタンが押されると他の誰かに連絡がいくというシステムです。
具体的には,母が田舎で一人暮らしをしている妻の実家にボタンを設置し,そのボタンが押された際に私と妻のスマホにメールが飛ぶというシステムを作りましたので,まずは自分のための備忘録として記事にしてみようと思います。
(これから書いていく記事がQiitaの記事として適切かどうかという点については一抹の不安がありますが...)
#実現する機能・要件
- 宅内に複数設置されたSOSボタンが押されたときに,SOSボタンが押された場所(脱衣所,トイレ,台所,etc.)と緊急連絡先等の情報をあらかじめ設定された宛先にメールで送信する
- 12時間ごとにドア(玄関,トイレ,冷蔵庫,etc.)が開かれた回数をあらかじめ設定された宛先にメールで送信する(システムの動作確認を兼ねる)
- 遠隔地からソフトウェアのメンテナンスが可能
#システムの全体構成
システムの全体構成は下図の通りです。
Home Aは私の自宅,Home Bは妻の実家となります。
システムの核はRaspberry Pi Zero WHで,スイッチの状態検出にはGPIOを使用します。
当然ながらメールの送信にはシステムをインターネットに接続する必要がありますが,妻の実家には現時点ではネット環境がないので,格安Simを使って接続することにしました。
Simはロケットモバイルの神プラン(通信速度制限200kbps,通信量無制限で月額298円)で,LTEルーターとしてはNECのAterm HT100LNを準備しました。
このルータにグローバルIPアドレスが割り当てられれば,あとはDDNSを使うなり,IPアドレスをメール通知するなりすれば外部からのアクセスは容易なのですが,当該SimではキャリアグレードNAT下でネットに接続されるようで,外部からアクセスするのはそう簡単な話ではなさそうです...。
#課題
とまぁ開発初期段階ではこんな状況だったわけですが,私のスキルレベルで課題となったのは
- ドアスイッチやSOSボタンスイッチの回路構成と状態検出
- ラズパイからの自動メール送信
- キャリアNAT下にあるシステムへの外部からのSSH接続
というところで,この辺の内容も含めてその2以降の記事にしようかと考えています。