はじめに
会社の男子トイレは個室1つ。
作業部屋を出て廊下を渡った先にトイレがそこにある。
集中して作業をしている最中にトイレへ行きたくなって使用中だったときのイラっと感をなくすためにトイレを監視するシステムをつくりました。
やったこと
(個室なので)照度センサーでトイレを使用中であるかを検知してESP-WROOM-02でIFTTTへメール通知。
IFTTTからTwitterへトイレ監視情報をツイートします。
最終的にはトイレの使用状況に変化があればツイートするようにします。
用意するもの
工程
○電子工作編
ESP-WROOM-02のピンアウトとDFR0026の説明書をにらめっこして配線します。
Deep-sleepから復帰するためにGPIO16ピンとRSTピンを接続することを忘れずに。
ESP-WROOM-02でアナログデータを取得する(AnalogRead()を使用する)際はTOUTピンを使用します。しかしTOUTピンは電圧が1.0vまでしか扱えません。
ESP-WROOM-02の電源電圧は3.3vで、そのままTOUTピンに繋げるとボードが壊れる可能性があります。そこで分圧をして3.3Vから1.0Vに電圧を下げます。
○Arduino編
ESP-WROOM-02からGmailへ送信する箇所はここからソースをダウンロード。
ソースを一部抜粋
void loop() {
int illuminance;
illuminance = analogRead(A0);
int diff = abs(rtcData.lastIlluminance - (int)illuminance);
if(diff > 300) { // 照度300luxより大きな差がある場合を検出
:
// send mail
Gsender *gsender = Gsender::Instance();
String subject = "";
if((int)illuminance > 300) {
subject = "男子トイレ使用中";
}
else {
subject = "男子トイレ空いてます!";
}
if(gsender->Subject(subject)->Send("trigger@applet.ifttt.com", "時刻:" + String(elem.getString("datetime")) + "<br />照度:" + String(illuminance))) {
Serial.println("Message send.");
} else {
Serial.print("Error sending message: ");
Serial.println(gsender->getError());
}
}
:
}
class Gsender
{
protected:
Gsender();
private:
const int SMTP_PORT = 465;
const char* SMTP_SERVER = "smtp.gmail.com";
const char* EMAILBASE64_LOGIN = "<Gメールアカウント base64>";
const char* EMAILBASE64_PASSWORD = "<Gメールパスワード base64>";
const char* FROM = "<Gメールアドレス>";
};
今回作ったソースはこちら
○サービス連携
Arduinoからメール送信して、メール受信をトリガーにツイートします。
ESP-WROOM-02(Arduino) -> Gmail -> IFTTT -> Twitter
ESP-WROOM-02からメール送信するにはSMTPサーバに接続してメールを送信しますが、Gメールアカウントで「安全性の低いアプリがアクセスするのを許可する」設定にしないと認証で失敗します。
IFTTT でアカウントを作成後、画面上部メニュー[My Applets] -> [New Applet]を選択。
Ifの次の[+]から[Email] -> [Send IFTTT any email]を選択。
thenの次の[+]から[Twitter] -> [Post a tweet]を選択。
Twitterのアカウントと連携して、Tweet textを下記のようにして[Create action]でAppletを作成します。
<pre>
{{Subject}}
{{BodyHTML}}
</pre>
○完成品
見た目は雑ですが明るさに変化があるとツイートするトイレ監視のできあがり。
参考
http://arduino-esp8266.readthedocs.io/en/latest/libraries.html?highlight=TOUT
https://www.dfrobot.com/wiki/index.php/DFRobot_Ambient_Light_Sensor_SKU:DFR0026
http://qiita.com/azusa9/items/65a5c3772c41631b5ca1
http://qiita.com/ryokai/items/9b0c56616b4550eb05f1
http://www.instructables.com/id/ESP8266-GMail-Sender/
http://tech.thejoestory.com/2016/10/esp8266-gmail-send-email.html