Gmail送信をワイヤレスボタンで実行する

以前に、[**Slackとワイヤレスボタンで「呼び出しシステム」を作ってみた！**](https://qiita.com/mikawan/items/ac196bbb5506a3251c55)を投稿しましたが、利用者側がslackなどを使用できない場合も多いと思います。そこで今回は通知方法を一般的なEmailにしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247209/b6df2c4c-f15b-df16-4219-04b7ac18d25a.png)

今回は、ホワイトボードマーカーが切れた場合の総務へのメール通知をボタン操作で行うことを想定しています。
メール本文には、ボタンを押した時間が記載されるようにします。

【タイトル】マーカーの交換
【本文】　ボタンを押した時間　＋　ホワイトボードマーカーを交換してください。
　　　　　（例：15:40　ホワイトボードマーカーを交換してください。）

#使用したもの
###ハードウェア

- Windows 10 PC（バージョン1809）
- Gravioレンタルデバイス
    -  Gravioワイヤレススイッチ（ワイヤレスボタンスイッチ）


###ソフトウェア

- Gravio
    - Gravio Studio Ver.2.2.2111.0
    - Gravio Server Ver.2.2.2354.0
    
###サービス
- Gmail

#事前準備
###Gmailアプリ用パスワードの取得
GravioはGmailの2段階認証プロセスに対応していないため、アプリ用パスワードの取得が必要です。
パスワードの取得方法は以下のとおりです。

1. Gmailアカウントページを開く
2. ’セキュリティ’＞’アプリ パスワード’の順でクリック
3. 生成するアプリとデバイスを任意で選択し、"生成"をクリック
4. 表示されたパスワードをメモ
 
メールアドレスとメモしたパスワードを使用して、Gravioで設定をしていきます。
#Gravioの設定
Gravioの設定は以下の3STEPです。

1. ワイヤレススイッチの設定
2. メールを送信する設定
3. スイッチが押されたタイミングで2.が動作するように設定

まずは、ワイヤレススイッチの設定をします。

##ワイヤレススイッチの設定

[こちら](https://doc.gravio.com/manuals/gravio-setup-guide/1/ja/topic/sensor-devices)を参照し設定を進めます。

ワイヤレススイッチのLEDがチカチカっと光り、下記画面が表示されることを確認します。
![センサーペアリング](https://qiita-image-store.s3.amazonaws.com/0/247209/26466d73-f13e-9c68-8473-41276029deaf.png)

これで、Gravioとワイヤレススイッチが接続されました。

###センサーの登録
次にワイヤレススイッチをデータ収集対象として登録します。

1. エリア・レイヤーを登録する
画面右上の”＋”ボタンをクリックし、エリアを作成します。
エリアを作成すると自動的にレイヤーが作成画面が表示されるので、SENSING DEVICE TYPEにAqara-WirelessSwitchを選択します。

2. レイヤーにデバイス（センサー）を登録する
一番右のデバイスウィンドウの左上の”＋”を選択し、デバイスを追加します。
デバイスのスライドボタンをONにすることで、データの収集が開始されます。


ここまでの設定で、スイッチが押された時にデータを収集できるようになりました。

##メールを送信する設定

[アクションカードを作成](https://qiita.com/mikawan/items/3d93543566680afda868#%EF%BC%91%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%89%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)し送信するメール内容を設定します。

ステップの追加の"+"をクリックし、"SendMail"コンポーネントを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247209/6aa5b7f6-e577-1f42-21c4-96507643427f.png)

プロパティに以下の内容を設定します。

|項目|内容|
|:---|:---|
|基本プロパティ設定を使う|チェックを外す|
|件名|マーカーの交換|
|本文|ToStringFromDateTime(ToLocalTime(Now()),"HH:mm")+"　ホワイトボードマーカーを交換してください。"|
|受信先|宛先メールアドレス（任意）|
|送信元|送信者の名前（任意）|
|送信元ユーザー名|Gmailアカウント|
|パスワード|事前準備でメモしたパスワード|
|SMTPサーバー|smtp.gmail.com|
|ポート番号|465|
|SSL|チェックを入れる|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247209/ef4d38a0-9dc3-0621-303f-e8eaeb4c87df.png)

`ToLocalTime(Now())`は、Gravio Serverが動作しているPCのLocaltimeで表示することができます。
こちらの関数を使用しない場合は、UTCの時刻が表示されます。

以上で、メールを送信する設定が完了しました。

動作の確認は、右上の矢印をクリックすると動作が確認できます。

##動作タイミングの設定
スイッチを押したタイミングで動作するように、動作タイミング（トリガー）を設定します。
トリガータブを表示し、右上の"＋"をクリックし、新規トリガーを追加します。
トリガーの各項目は以下のように設定します。

|項目|設定値|
|:---|:---|
|トリガー名|（任意）|
|エリア|設定したワイヤレススイッチのエリア|
|レイヤー|設定したワイヤレススイッチのレイヤー|
|アクション名|作成したアクションカード名|
|送信元ID|空白|
|Interval|5（任意）|
|Classic/Threshold Trigger|Classic Trigger|
|Button Press|Single press|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247209/08a9a3e4-831e-2128-13be-5d1798223055.png)

以上ですべての設定が完了しました。

#動作確認
スイッチを押すとメールが届きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247209/f40102c4-fd49-fe28-cadd-954da98f5af6.png)


#あとがき
スイッチを押して、ホワイトボードマーカー切れをメールで通知してみました。
今回はメール送信のみのアクションでしたが、音声による通知や照明を点灯させて通知といった他の通知方法を追加することができます。
簡単に拡張できるので、ぜひいろいろ試していただければと思います。



【参考】
[他のメールクライアントでGmailを使用する方法](https://support.google.com/mail/answer/7104828?authuser=3&authuser=3&authuser=3&hl=ja&authuser=3&visit_id=636915201421740968-1399297712&rd=3)

[2段階認証ができないアプリケーションでGmailを使用する方法](http://www.codyltech.com/faq/smtpimap%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF%E3%83%BC%E3%81%ABgmail%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B/)