ESP32からIFTTTを使ってLINE Notifyで通知を送ってみた

  • 8
    いいね
  • 3
    コメント

秋月電子通商で売っているESP32-DevKitC ESP-WROOM-32開発ボードでHTTPS通信ができたので、IFTTTを使ってLINEに通知を送ってみました。

今回はLINEでの通知に、LINE BusinessのMessaging APIとは別の、LINE Notifyを利用します。
LINE Notifyは片方向の通知しか利用できず、LINEのユーザーアイコンのようなものも設定できませんが、通知先にトークのグループ、または「1:1でLINE Notifyから通知を受け取る」を設定するだけでお手軽に利用することができます。

動作環境

ESP32側

  • ESP32-DevKitC ESP-WROOM-32開発ボード
    • Arduino IDEを利用
    • WiFi(WPA2-PSK, 2.4GHz)の接続先
      • ルーター(AtermWG1800HP2)
        • ESP32との距離は4mくらい
      • iPhone 6s (テザリング)
        • テザリングをオンオフしたりしても再接続するようにした
    • LED (使用ピン: IO2, GND)
      • 適当な抵抗も入れておいてください
    • PIRモーションセンサー (使用ピン: IO5, GND, 5V)
      • 検出範囲内で動きがあると出力が2秒程度Highになる

IFTTT側

  • Maker Channel + LINE (Notify)
    • 例: If maker Event "test", then send message (works with LINE)
    • 通知先を「1:1でLINE Notifyから通知を受け取る」に設定

製作したスケッチ

https://github.com/mascii/WiFiClientSecure-IFTTT

スケッチの設定

config.h には、SSIDとWPAキー、IFTTTのMaker ChannelのEventとKeyを設定します。

certificate.h には、 maker.ifttt.com の証明書を予め設定しておきます。
リポジトリ内の certificate.h には maker.ifttt.com の証明書がセットされていますが、 maker.ifttt.com 以外にアクセスしたい方は、以下のFirefoxのスクリーンショットを参考にしてください:


鍵マークをクリック


詳細を表示


セキュリティ→証明書を表示...


詳細で一番上の階層の証明書を書き出し、 bash convcert.sh (証明書ファイル)certificate.h を作成

説明

スケッチ

このスケッチはスケッチの例の WiFiClientSecure を参考にしています。

PIRモーションセンサーがON/OFFを繰り返すため、 loop 関数ではセンサー反応後、約10秒はセンサーの反応を無視するようにしています。あまりスケッチを変更することなく、タクトスイッチ等にも対応できるかと思います。
LEDはPIRモーションセンサーが反応した際などに点灯させたり、エラー発生時に点滅させたりしています。

LINE Notify

うまく動作すると、このような感じでLINEに通知が来ます。

今回は活用していませんが、ESP32側で取得した値をLINEに通知することもできます。

今回やりたかったけど出来なかったこと

Google Apps Scriptという、JavaScriptを書いてAPIを作ることができるサーバーサイドスクリプト環境をESP32から利用してみようと思ったのですが、APIにアクセスしようとするとリダイレクトがあり、うまくいきませんでした。
調べてみるとHTTPSRedirectというWiFiClientSecureを拡張してリダイレクトに対応したライブラリもあるようなのですが、うまく使うことができませんでした。

Google Apps ScriptはHTTPSも必須なのですが、実はIFTTTのMaker ChannelはHTTPSじゃなくても良いので、今回はあまりHTTPSにする意味はなかったかもです...
実際、 #include <WiFiClientSecure.h>#include <WiFiClient.h> に変更、 443 番を 80 番に変更して証明書関連をコメントアウトしても問題なく動いてしまいます。
IFTTTのMaker Channel以外でHTTPSを利用したい方がいらっしゃったら、この情報を活用していただけたらと思います。

ESP32を触ってみて

  • 2017年4月現在、ESP8266に比べると情報がとにかく少ないのが実情です
    • ESP8266で十分な場合が多いと思います
  • 正直なところ、Arduino IDEでの開発ではESP32の性能をうまく引き出せないような気がします
    • とはいえ、SRAMの容量が倍増している恩恵は受けられる
  • WiFiはRaspberry Pi 3のオンボードWiFiと違い、ちゃんと飛ぶ感じでした
  • ESP32-DevKitC ESP-WROOM-32開発ボードを買われる方は、ブレッドボードの幅に注意