Amazon Dash Buttonでgmailにメールが届くようにした

やりたい事

同居している婆様の体調が優れなかったので、婆様にやばいと感じたらボタン押下してもらい私のgmailに連絡がくるようにしたかった。エマージェンシーボタン。

なぜAmazon Dash Buttonなのか

丁度Amazon Dash Buttonで遊んでみたかったのと、視覚的にボタンを押すだけの機能しかなかったので機械に拒絶反応を示す婆様でも「取り敢えず押せば孫がかけつけてくる」と受け入れてもらえると思ったため。

実装

用意したもの


参考

blog.roy29fuku.com qiita.com github.com


手順

Amazon Dash ButtonのIP設定とMAC取得は割愛

1. centOS7にPythonライブラリをインストール

pip install amazon-dash

2. 任意の場所に作業ディレクトリを作成

mkdir amazon_hack.d

3. amazon-dashの設定ファイルを作成

vi amazon-dash.yml

# amazon-dash.yml
# -----------------
settings:
  delay: 1                      # next execution will do after delay
devices:
  00:fc:8b:fc:84:af:         # amazonDash's MAC add
   name: echo               # function name
   user: amazones         # user
   cmd: . send_mail.sh  # execute command
4. スクリプトの作成

vi send_mail.sh

# !/bin/bash

source send_mail_text.sh
echo $text | mail -s $title $add

vi send_mail_text.sh

# !/bin/bash

add="メール@gmail.com"
title="【通知】VOXボタンが押された!"
text="家に要電話"
5. 実行

amazon-dash run

結果

f:id:trece013:20180315113933j:plain
無事に届きました!
これで婆様の体調不良にすぐ駆けつけられます。

完成までに詰まった箇所

・pipってなんぞや
Pythonのライブラリをインストール・管理するためのシステム。
yum -y install python-pip ※要EPELリポジトリ
Amazon Dash Buttonの押下を検知した時にamazon-dashがエラーを吐く
user(今回だとamazones)に適切なsudo権限を与えていなかった。
・mailコマンドでgmailにメールが届かない
gmailの仕様だった
qiita.com

感想&改善点

最初はスクリプトじゃなくてプログラムでメール送信を実装しようと考えていたのですが、プログラム用意してる時間が勿体無いと思ってmailコマンドで送信する方法にしました。が、gmailの仕様で初期状態ではメール受け取らない問題を解決するのに時間がかかってしまい、実装が終わる頃には婆様の体調が回復してボタンは不要になりました。まあ、良かったです。現在は冷蔵庫にぶら下げて”もしもの時“用に待機しています。

今回の実装では"私一人にしか連絡が回らない"事と、サーバからメール送信→受信という点でNotificationsのように"連絡が来ても直ぐ気づく事が難しい"という事に気づきました。もしかしてポンコツなのでは。

調べてみると…

  1. Google Cloud Messagingを使用しAndoridアプリを自作、サーバからプッシュ通知を端末に送信
  2. LINEのMessaging APIを使用して、連絡したい家族を専用グループに追加してサーバからメッセージを送信

が候補で使えそうだなと思いました。APIって凄い!!

遠距離の家族の事も考えるとLINE案が一番手っ取り早いのかなと。しかしながら家族がLINEの通知を切っていたら、それはそれで当初のメール案と変わらないのではと思いましたがそれはまた別の時にでも(˘ω