懇親会放浪記

自称CLIエバンゲリストが各地のJAWS懇親会を巡ります。いつかは旅人

SORACOMでメール着信通知

SORACOM リリース 1周年記念リレーブログ に参加させていただきます。
昨年のSORACOM ユーザーグループ発足記念 リレーブログにも参加させていただき、前回はSORACOM Airによる電話ネタでしたので今回は新サービスのCanal & Gateを使ったメールネタで物理デバイスを動かして遊んでみました。

メールの着信を物理的に知りたい

何か他のことをしていると、メールが届いたかパソコンの画面を確認するのが面倒。
パソコンの前にいても、MS-DOS時代からの影響か画面はフルスクリーンで使う習慣なのでアイコンとか見ないのです。
何か画面以外でメールが届いたよと知らせてくれると便利ですよね。
携帯電話に転送している人が多いかもしれませんが、組織のポリシーで禁止されていてこれはできない。という人も多いはず。
そこで視覚的に確認できるデバイスを作成し、これで着信通知をしようと思います。
unixシステムでよく使われていたbiffの物理版ですね。

 

・物理デバイス
今回はRaspberry PI3で作成しました。
メールが届くと光るLEDと、距離センサ(使い方は後述)をつないだ簡単なものです。
SORACOM Airをラズパイへ接続しようとすると、ラズパイよりも通信モジュールが高くなってしまいがちです。
ラズパイ3にはWiFiが搭載されているので、適当なWiFiルータへSORACOM Airを入れて通信はそちらにまかせると安価で、配線もスマートです。

・作ってみた

f:id:ntuser:20161029015326j:plain

モバイルバッテリーによる電池稼働も可能で、完全にコードレス運用も可能。
もちろんすぐに電池が減ってきますから実際に使う場合は電源を。。。

 

・どう通信するか
メールサーバへの接続をラズパイにさせるのは認証情報を保存することとなり、セキュリティ上からも好ましくありません。
目的はメールが届いたことを知ることですから、ラズパイが待ち受けておき通知を受けるようにすれば認証情報を保存しなくてすみます。
これをラズパイへapache httpdとCGIで実装することにしました。

 

・通信経路

認証情報やメール本文が流れないとはいえ、外部ネットワークとの通信はなるべくしたくないものです。
そこで、AWS上のVPCへ閉域網内の通信でつなぎ込めるSORACOM Canalを使います。

SORACOM Canalは皆様ご存じの通りVPCへ自由な通信を可能とします。
EC2インスタンスへSSHログインしたりメンテナンスにとても便利ですね。
今回はラズパイ側がサーバとなりますからVPC側からの通信を受けなければなりません。
通常と逆方向になるため、ラズパイが固定IPアドレスでそこへ接続できなければなりませんから、SORACOM Gateを使う事になります。
これによりVPC上の他のサーバと同じ感覚でラズパイへ接続され要件を満たします。

 

・ラズパイへメールの着信を知らせるプログラムをどこへ置くか。
SORACOM Canalは接続したVPCとしか通信出来ません(Direct Connect先のネットワークとは通信不可)。
このため自分のPCから通知しようとすると色々細工をしなければなりませんから、今回はVPC内のEC2インスタンスから行います。
仕組みは至って簡単で、新しいメールが届いたらラズパイのCGIを呼び出すだけです。

 

・通知の方法
メールが届く都度、音が鳴るようでは他の作業の邪魔になりますからLED通知にします。
既に点灯状態で更に新しいメールが届いても、既に点灯していますから何も変わらず邪魔になりません。

・消灯の方法
通知によって点灯したLEDをどう消灯するか。
メールが届いたからといって差出人や表題を確認するかもしれないけど、全てをすぐに読むわけではありませんから、既読になったら消灯させるといった実装では点灯しっぱなしになってしまいます。
「わかった」 と自分の意志消灯させるのがスマートですね。
ここはSORACOMさんのIoT標準セットであるラズパイ+距離センサを使って、デバイスへ手を少し近づけたら消灯させることにしました。
SORACOMさんから提供されているハンズオン用のPythonコードを改変してさくっと実装。
ありがとうソラコム中の人。

 

動かしてみる

メールが届くとLEDが点灯します。

f:id:ntuser:20161029022334j:plain
その後、別のメールが届いても状態はこのままです。

わかった。と手を近づけると消灯します。

f:id:ntuser:20161029022459j:plain

とても単純ですね。
机の上に置いておくと新聞を読んだりしているときに便利です。

 

まとめ

SORACOMの新機能を使うとセキュアに実装できました。
しかしこれを使い続けるのは趣味としては難しく実験のみとなってしまいました。
そう、CanalやGateはいささか高価なのです。
ハンズオンなどで作ったのを消し忘れると翌月びっくりすることになりますから、皆様お気を付けください。
最後までお読みくださいましてありがとうございました。