3. @IFTTTを使用したセキュリティシステム

このプロジェクトでは、侵入者や迷い込んだ動物が自宅に侵入した場合に検出するPIRセンサーを使用したセキュリティデバイスを作成します。そのような場合には、メールで警告が届きます。

最も基本的なサービスとしてWebhookが使用されます。 Raspberry Pi Pico WからIFTTTのサービスにPOSTリクエストが送信されます。 IFTTTを使用して、Webhookを傍受し、メールを送信するAppletを作成します。

1. 必要なコンポーネント

このプロジェクトで必要なコンポーネントは以下の通りです。

便利なのは、キット全体を購入することです。リンクはこちら:

名前

キット内容

リンク

ケプラーキット

450+

Kepler Kit

以下のリンクから個々に購入することも可能です。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico W

1

BUY

2

マイクロUSBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

トランジスタ

1(S8050)

BUY

6

抵抗器

2(1KΩ, 10KΩ)

BUY

7

ボタン

1

BUY

8

アクティブ ブザー

1

9

Li-po充電モジュール

1

10

18650バッテリー

1

11

バッテリーホルダー

1

12

PIR モーションセンサーモジュール

1

BUY

2. 回路を作成する

警告

Li-po Charger Moduleが図に示されているように接続されていることを確認してください。それ以外の場合は、ショートが発生し、バッテリーと回路が損傷する可能性があります。

../_images/3.ifttt_mail_bb.png

3. IFTTTの設定

IFTTTは、さまざまなデータサービスを連携する多様な方法を提供する無料のサービスです。

ここでは、IFTTTにデータを送信するWebhook(カスタムURL)に反応するAppletを作成します。 その後、IFTTTが代わりにメールを送信します。

以下の手順でIFTTTで設定してください。

  1. IFTTT にアクセスして、ログインまたはアカウントを作成します。

    ../_images/ifttt-1.png
  2. Create(作成) をクリックします。

    ../_images/ifttt-2.png
  3. If This(これが起きたら) イベントを追加します。

    ../_images/ifttt-3.png
  4. Webhooks(ウェブフック) を検索します。

    ../_images/ifttt-4.png
  5. Receive a web request(ウェブリクエストを受け取る) をタップします。

    ../_images/ifttt-5.png
  6. イベント名(例:SecurityWarning)を入力し、 Create trigger(トリガーを作成) をクリックします。

    ../_images/ifttt-6.png
  7. Then That(それがあれば) イベントを追加します。

    ../_images/ifttt-7.png
  8. Emailを検索します。

    ../_images/ifttt-8.png
  9. Send me an email(私にメールを送る) をクリックします。

    ../_images/ifttt-9.png
  10. Subject(件名)Body(本文) を入力し、 Create action(アクションを作成) をクリックします。

    ../_images/ifttt-10.png
  11. Continue(続ける) をクリックして、設定を完了します。

    ../_images/ifttt-11.png
  12. タイトル名を変更して、完了です。

    ../_images/ifttt-12.png
  13. 自動的にApplet詳細ページにリダイレクトされ、Appletが現在接続されていること、およびスイッチを切り替えて開始/終了することができることが確認できます。

    ../_images/ifttt-13.png

4. スクリプトの実行

  1. すでにIFTTTのAppletを作成したわけですが、Pico WがIFTTTにアクセスするためにはAPIキーも必要です。これは Webhooks Settings から取得できます。

    ../_images/ifttt-14.png
  2. それをRaspberry Pi Pico W内の secrets.py スクリプトにコピーします。

    ../_images/3_ifttt4.png

    注釈

    Pico Wに do_connect.pysecrets.py スクリプトがない場合は、 1. ネットワークへのアクセス を参照してそれらを作成してください。

    secrets = {
    'ssid': 'SSID',
    'password': 'PASSWORD',
    'webhooks_key': 'WEBHOOKS_API_KEY'
    }
    
  3. kepler-kit-main/iot ディレクトリ下の 3_ifttt_mail.py ファイルを開き、 File(ファイル) -> Save as(名前を付けて保存) をクリックするか、 Ctrl+Shift+S を押します。

    ../_images/3_ifttt1.png
  4. ポップアップウィンドウで Raspberry Pi Pico を選択します。

    ../_images/3_ifttt2.png
  5. ファイル名を main.py に設定します。同じファイルがすでにPico Wに存在する場合は、プロンプトが表示されます。

    ../_images/3_ifttt3.png
  6. USBケーブルを抜いて、Li-poチャージャーモジュールでRaspberry Pi Pico Wに電源を供給できるようにします。スクリプトが実行されているときにブザーの音が聞こえます。PIRモジュールが通り過ぎる人物/生物を検出すると、ブザーが鳴り続け、警告のメールが送信されます。ボタンを押してスクリプトを再起動できます。

仕組みについて

Raspberry Pi Pico Wはインターネットに接続する必要があります。その詳細は 1. ネットワークへのアクセス に記載されています。このプロジェクトでは、それをそのまま使用します。

from do_connect import *
do_connect()

PIRモジュールからのデータを読み取り、何かが通り過ぎると検出された場合には motion_detected() 関数を呼び出します(データは0から1)。

import machine

sensor = machine.Pin(17, machine.Pin.IN)

sensor.irq(trigger = machine.Pin.IRQ_RISING, handler = motion_detected)

次にPico WがIFTTTにデータを送信します。IFTTTに送信する message はURLの文字列であることがわかります。 IFTTTは secrets['webhooks_key'] で送信者を識別し、 event でトリガーされるイベントを識別します。 したがって、それらが正確であることを確認してください。

import urequests
from secrets import *

event = 'SecurityWarning'
message = f"https://maker.ifttt.com/trigger/{event}/with/key/{secrets['webhooks_key']}"

def motion_detected(pin):
    urequests.post(message)
    print(message)
    global warn_flag
    warn_flag = True
    sensor.irq(handler = None)

motion_detected() が呼び出されると、変数 warn_flagTrue に設定され、ブザーが鳴り続けます。

while True:
    if warn_flag == True:
        alarm.toggle()
        time.sleep_ms(50)

ここでのボタンの目的は、スクリプトを再起動することです。

button = machine.Pin(16, machine.Pin.IN)

def reset_device(pin):
    machine.reset()

button.irq(trigger = machine.Pin.IRQ_RISING, handler = reset_device)