کنترل پین رزبری پای با ارسال SMS به IFTTT

محتویات
در این آموزش یاد خواهیم گرفت که چگونه پین های GPIO برد Raspberry Pi را از هر دستگاهی با اتصال به اینترنت کنترل کنیم. ما پروژه ای خواهیم ساخت که Raspberry Pi برای روشن کردن LED از پیام متنی SMS ارسال شده توسط یک دستگاه اندرویدی استفاده می کند. LED فقط برای نمایش نتیجه است و می توان آن را با هر دستگاهی جایگزین کرد که از سیگنال ورودی 3.3 ولت ورودی مانند رله یا ترانزیستور قدرت برای کنترل دستگاه های حتی بزرگتر استفاده می کند.
If This then That
If This then That (IFTTT) یک پلت فرم وب رایگان است که خدماتی مانند Gmail، Dropbox، Amazon Alexa و حتی Raspberry Pi را به هم متصل می کند.
IFTTT مانند یک دستور if استاندارد عمل می کند: اگر این شرط درست است، آن عمل را انجام دهید.
IFTTT از برنامه های کوچکی به نام اپلت استفاده می کند که IFTTT را برای انجام برخی رویدادها پیکربندی می کند.
وب هوک چیست؟
برای ادغام IFTTT با Raspberry Pi، به webhook نیاز داریم. Webhooks سرویسی است که رویدادها را از طریق درخواست های HTTP فعال می کند. درخواست های HTTP که به عنوان درخواست های وب نیز شناخته می شوند، پیام هایی هستند که کاربر به سرور ارسال می کند.
دو نوع درخواست وب وجود دارد: HTTP GET و HTTP POST
- HTTP GET یک درخواست وب است که داده ها را از یک مرورگر وب بازیابی می کند. هیچ چیز روی سرور تغییر نمی کند. فقط داده ها واکشی می شوند.
- از طرف دیگر، HTTP POST یک درخواست وب است که داده ها را به سرور منتقل می کند. یعنی چیز جدیدی به آن اضافه می کند.
یک مثال معمولی از درخواست GET، مرور یک وب سایت است. شما داده های مورد نیاز برای نمایش صفحه وب را در رایانه شخصی خود دریافت می کنید. از سوی دیگر، درخواست های POST برای تایپ متن در یک صفحه وب مانند نام کاربری و رمز عبور استفاده می شود.
یک سیستم webhooks معمولی به این صورت عمل می کند:
راه اندازی Raspberry PI برای کنترل از طریق اینترنت
برای نشان دادن نحوه استفاده از IFTTT برای کنترل پینهای GPIO برد Raspberry Pi، یک LED را به Raspberry Pi متصل میکنیم و آن را با Webhook از IFTTT روشن و خاموش میکنیم. استفاده از LED فقط یک راه خوب برای نشان دادن است. هر وسیله ای که توسط سیگنال دیجیتال کنترل می شود می تواند به این روش کنترل شود.
اینها قطعاتی هستند که شما نیاز خواهید داشت:
- رزبری پای
- برد بورد
- سیم های جامپر
- یک عدد LED
هنگامی که تمام قطعات را دارید، LED را به شکل زیر به Raspberry Pi وصل کنید:
راه اندازی IFTTT برای اتصال به رزبری پای
به وب سایت IFTTT بروید و یک حساب کاربری ایجاد کنید.
پس از ورود به سیستم، به نوار ابزار بالا سمت راست در صفحه اصلی خود بروید و Create را انتخاب کنید. این شما را به صفحه ای هدایت می کند که در آن می توانید شروع به ایجاد یک اپلت کنید.
اکنون با کلیک کردن روی “Add” یک شرط را تنظیم کنید:
سپس عبارت «SMS» را جستجو کنید.
بر روی «Android SMS» کلیک کنید، سپس «New SMS sent matches search» را انتخاب کنید:
هر بار پیامکی را با دستگاه Android خود ارسال میکنید که با کلمه کلیدی خاصی که بعداً تعیین کردهاید مطابقت دارد، این تریگر فعال میشود. توجه داشته باشید که هر شماره تلفنی که اس ام اس را ارسال کند و دارای کلمه خاص باشد تریگر فعال میشود.
بعد، کلمه کلیدی را که می خواهید برای راه اندازی LED استفاده کنید، مشخص کنید. بیایید از “LED ON” استفاده کنیم:
پس از وارد کردن “LED ON”، روی Create Trigger کلیک کنید. این شما را به منوی اصلی بازمی گرداند.
اکنون دوباره روی “Add” کلیک کنید:
سرویس webhooks را جستجو کنید.
make a web request را انتخاب کنید.
در مرحله بعد، نوع درخواست وب مورد نظر خود را مشخص کنید:
چگونه بفهمیم از چه URL در اینجا استفاده کنیم؟ این جایی است که Bottle وارد می شود.
دریافت درخواست HTTP در رزبری پای
Bottle یک فریمورک میکرو وب در پایتون است. با وارد کردن این دستور در ترمینال، Bottle را در Raspberry Pi خود دانلود کنید:
wget https://bottlepy.org/bottle.py
سپس، کد زیر را در یک ویرایشگر متنی مانند Nano در Raspberry Pi کپی کنید و آن را با پسوند “.py” ذخیره کنید:
n:
import RPi.GPIO as GPIO import time from bottle import route, run, template GPIO.setmode(GPIO.BOARD) GPIO.setup(3, GPIO.OUT) GPIO.output(3, False) @route('/LED/:ledstate') def ledtrigger(ledstate=0): if ledstate == '0': GPIO.output(3, False) return 'LED OFF' elif ledstate == '1': GPIO.output(3, True) return 'LED ON' run(host='0.0.0.0', port=8081)
ابتدا کتابخانه های مورد نیاز را وارد می کنیم. سپس پین LED را به عنوان خروجی تنظیم می کنیم و سیگنال پیش فرض را روی LOW یا False قرار می دهیم.
در مرحله بعد، ما سرور وب را با رسیدگی به درخواست ها به URL های خاص راه اندازی می کنیم. @route('/LED/:ledstate')
درخواستها را در 192.168.100.24:8081/LED/1
یا 0 دریافت میکند. آدرس IP در اینجا آدرس IP برد Raspberry Pi شما است.
اگر آدرس IP Raspberry Pi خود را نمی دانید، ifconfig را در ترمینال وارد کنید و قسمت wlan0 را پیدا کنید. آدرسی که بعد از inet می آید آدرس IP شماست.
سپس از دو if برای کنترل وضعیت LED استفاده می کنیم. مقدار بازگشتی به محض شروع عمل در مرورگر وب شما چاپ می شود.
URL های زیر را در هر مرورگر وب از هر دستگاه متصل به وای فای خانگی خود وارد کنید:
- چراغ LED را روشن میکند: 192.168.100.24/8081/1
- چراغ LED را خاموش میکند: 192.168.100.24/8081/0
اکنون به IFTTT برگردید و URL را در درخواست وب webhooks خود وارد کنید. یکی از اشکالات این پیکربندی این است که شما به دو اپلت نیاز دارید. یکی برای روشن کردن LED و دیگری برای خاموش کردن آن. برای اپلتی که LED را خاموش می کند، از LED OFF به عنوان کلمه کلیدی استفاده کنید.
امیدواریم این مقاله به شما کمک کرده باشد تا از IFTTT با Raspberry Pi برای کنترل LED استفاده کنید. در نظرات زیر به ما اطلاع دهید که این پروژه چگونه برای شما کار می کند!