Arduinoドアセンサー:IFTTT経由でFacebook Messengerにリアルタイム通知(※現在非対応)
⚠️ 重要な注意事項
IFTTTはFacebookのポリシー変更により、Facebook Messengerサービスを終了しました。 そのため、本プロジェクトで紹介されている「ドア開閉をMessengerで通知」する機能は**現在使用できません**。代替として、IFTTTの「Notifications」「Email」「Webhooks」「Telegram」「Slack」「Discord」等のアクションサービスをご利用ください。本記事は学習・参考目的でアーカイブとして掲載しています。
学習できるトピック
- Arduino - Wi-Fi通信(PHPoC WiFi Shield使用)
- Arduino - ドアセンサー(磁気リードスイッチ)
- Arduino - IFTTT Webhooks連携
システム構成
Arduino UNO + PHPoC WiFi Shield + 磁気接点スイッチ(リードスイッチ)でドア開閉を検知し、IFTTT Webhooks経由で通知を送信する構成です。PHPoC ShieldはSSL/TLS対応のHTTPSクライアント機能を内蔵しており、証明書管理なしでIFTTTのHTTPSエンドポイントに直接アクセスできます。
配線
- リードスイッチ片側 → GND
- リードスイッチもう片側 → アナログピンA0(内部プルアップ利用)
- PHPoC WiFi ShieldをArduino UNOにスタック
IFTTTアプレット作成手順(参考・現在Messenger不可)
- IFTTTで「Create Applet」
- トリガー: 「Webhooks」→「Receive a web request」
- イベント名:
door_open - アクション: 任意のサービス(例: Notifications, Email, Telegram等)
- メッセージ内容に
{{OccurredAt}}等のingredientを埋め込み - 「Create action」→「Finish」
Webhooksキーの取得
https://ifttt.com/maker_webhooks にアクセスし、「Documentation」をクリックして表示されるキーをコピーし、ArduinoスケッチのIFTTT_WEBHOOKS_KEYに設定。
使用ライブラリ
- PHPoCライブラリ - PHPoC Shield専用、ライブラリマネージャからインストール
- ezButtonライブラリ - チャタリング除去付きボタン/スイッチ読み取り
Arduinoスケッチ
// Tutorial: https://forum.phpoc.com/articles/tutorials/1241-arduino-ssl-web-client
#include <Phpoc.h>
#include <ezButton.h>
String IFTTT_WEBHOOKS_KEY = "xxxxxxxxxxxxxxxxxxxxxx"; // ここにWebhooksキーを設定
char server_name[] = "maker.ifttt.com";
PhpocClient client;
ezButton button(A0); // A0ピンに接続したリードスイッチ
void sendNotification() {
// IFTTT WebhooksへHTTPS GETリクエスト送信
if (client.connectSSL(server_name, 443)) {
Serial.println("Connected to server");
client.println("GET /trigger/door_open/with/key/" + IFTTT_WEBHOOKS_KEY + " HTTP/1.1");
client.println("Host: maker.ifttt.com");
client.println("Connection: close");
client.println();
}
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
}
}
Serial.println();
Serial.println("disconnecting from server.");
client.stop();
}
void setup() {
Serial.begin(9600);
// PHPoC Shield初期化(SPI/ネットワークログ有効)
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
button.setDebounceTime(100); // 100msチャタリング除去
}
void loop() {
button.loop(); // 必須: 内部状態更新
if (button.isPressed()) {
Serial.println("door is opened");
sendNotification();
delay(100);
} else if (button.isReleased()) {
Serial.println("door is closed");
}
}
代替通知サービスの設定例
IFTTT Notifications(スマホプッシュ通知)
アクションで「Notifications」→「Send a notification」を選択。IFTTTアプリをスマホにインストールしログインしておくとプッシュ通知が届きます。
IFTTT Email
アクションで「Email」→「Send me an email」を選択。IFTTTアカウントのメールアドレスに通知が届きます。
Telegram Bot
- Telegramで@BotFatherからボット作成、トークン取得
- IFTTTで「Telegram」→「Send message」を選択、ボットトークンとチャットID設定
- グループにボット追加すれば家族全員に通知可能
LINE Notify
IFTTTにLINE Notifyサービスがない場合は、Webhooks→Webhooksの「Make a web request」でLINE Notify APIを直接叩く設定も可能です(アクセストークン必要)。
産業用途向け代替プロジェクト
より堅牢で低コストな産業用ドア監視システムとして、PHPoC単体(Arduino不要)で実装したプロジェクトが公開されています:
PHPoC Monitoring Door Open via Messenger
関数リファレンス(学習用)
Serial.begin()/Serial.println()delay()/millis()for/while/if elseloop()/setup()String操作:toInt(),substring(),indexOf(),remove(),equals()
まとめ
本プロジェクトは「Arduino + Wi-Fiシールド + IFTTT」によるIoT通知の基本パターンを学ぶ優れた教材です。Messenger連携は終了しましたが、Webhooksを核とした「センサー検知 → HTTPSリクエスト → 任意のアクション」というフローは現在も広く通用します。PHPoC ShieldのSSL/TLSネイティブ対応は、証明書管理の手間なくセキュアなクラウド連携を実現する強力な武器です。ぜひ代替サービスで実装し、IoTの第一歩を体験してください。
製造プロセス
- Arduino UnoでAtmel AT89シリーズを簡単プログラミング──ステップバイステップガイド
- K30 CO2センサで室内空気質をリアルタイム監視する
- 非接触温度スクリーニングゲート:Arduino MKR1000で迅速・高精度な検温
- Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
- リアルタイム森林火災監視システム: SMSアラート機能付き
- Arduino UNO + WiFiシールドで温度をWebリアルタイム表示 — シリアル出力だけでグラフ化
- 学校向けスマート体温監視システム: 正確、リアルタイム、安全
- Intel Curie搭載Arduino 101によるモーションアクティブ照明システム
- Arduinoと超音波センサーで自動ドアを制御:LCD・ブザー付き完全ガイド
- スマートキーレスドアロック:ArduinoとAndroid Bluetoothでパスワード制御
- ArduinoとESP8266で作るWi-Fi対応スマートドアロック — スマホで解錠