اینترنت اشیا IOT برد ESP8266 برد Nodemcu برد ویموس Wemos

کلید وای فای همه کاره WifiButton ارسال پیغام اضطراری در تلگرام

wifibotton سایت ifttt
نوشته شده توسط CiferTech

همانطور که در آموزش قبلی اشاره شد، کلید وای فای همه کاره به درخواست ما، فعالیتی مشخص انجام می‌دهد. در آموزش قبل با استفاده از سرویس‌های سایت IFTTT مانند Webhooks توانستیم تنها با یک کلیک اطلاعات مورد نیاز را دریافت کنیم. در این آموزش قصد داریم این فرآیند را در گروه تلگرامی یا کانال تلگرامی خود انجام دهیم. مثلا با تحریک کلید وای فای همه کاره یک پیام خوش آمد گویی در گروه ارسال کنیم. با استفاده از ربات تلگرامی IFTTT این مورد انجام می‌شود. این پروژه بر پایه سرویس‌های سایت IFTTT هست که مخفف if this then that است. در ادامه این آموزش با مرجع تخصصی ESP8266 به زبان فارسی، دیجی اسپارک همراه باشید.

 


کلید وای فای WifiButton


همانطور که در آموزش قبلی اشاره شد، فرض کنید یک کلید فیزیکی در اختیار دارید که با هر بار کلیک کردن وظیفه ای مشخص را انجام می‌دهد. از سفارش غذای مورد علاقه شما از نزدیک‌ترین رستوران تا خاموش و روشن کردن وسایل مختلف در خانه شما توسط این کلید انجام می‌شود. خب این ایده اولین بار توسط شرکت آمازون ارائه شد با اسم Amazon Dash Button اما به دو دلیل ما WifiButon خودمون رو میسازیم. اول اینکه هزینه خرید بالایی داره و دوم اینکه میتونیم بسازیمش!! در ضمن برای توضیحات تکمیلی خوبه که بدونید WifiButton رویداد هایی که برای اون تعریف شده باشه رو اجرا میکنه که در این آموزش رویداد مد نظر ما ارسال پیام در گروه تلگرامی یا کانال تلگرامی است.


کاربرد API در کلید همه کاره


API اختصاری برای عبارت “رابط برنامه ‌نویسی اپلیکیشن” (Application Programming Interface) است. API ها دارای تاریخچه وسیعی هستند و توضیح کامل آن شاید نیاز به یک مقاله کامل داشته باشد. اما در این پست سعی می کنم مفهوم آن را برای شما روشن‌تر مطرح کنم. فرض کنید سایتی وجود دارد که اطلاعات هواشناسی را در اختیار کاربران قرار می دهد اگر این سایت بخواهد اطلاعات را در لحظه برای کاربران در پلتفرم‌های مختلف ارسال کند از API استفاده می‌کند که کاربر با صدا زدن “Call” آن می‌تواند به اطلاعات دسترسی داشته باشد.

 


برد ESP8266 وای فای


ماژول های ESP32 و ESP8266 ساخت شرکت Espressif Systems از پر مصرف‌ترین و در دسترس‌ترین تراشه‌های اینترنت اشیا هستند. و همچنین قیمت پایین‌تری نسبت به دیگر تراشه‌های اینترنت اشیا دارند. همچنین برای توسعه کدهای آن می‌توانیم از نرم افزار Arduino استفاده کنیم که دسترسی آسان تری را برای کاربر فراهم می‌کند.

برخی از ویژگی‌های ESP8266

  • ماژول شبکه و میکروکنترولر ESP8266 یکی از معروفترین و ارزان ترین و دردسترس ترین تراشه های اینترنت اشیا است.
  • دارا بودن میکروکنترولر قدرتمند به همراه ارتباط شبکه WIFI داخلی،
  • پشتیبانی کامل فول استک TCP/IP
  • و همچنین با ارائه رابط های سخت افزاری کافی گزینه مناسبی برای کاربرد های کوچک و کم مصرف اینترنت اشیا میباشد.
  • این میکروکنترولر در سال ۲۰۱۴ به بازار عرضه گردید.

 


سرویس IFTTT


همینطور که قبلا اشاره کردم قرار است در آموزش از سرویس‌های سایت IFTTT استفاده کنیم. این سرویس‌ها به ما امکان دسترسی به دیگر سرویس‌هایی مانند Telegram و Webhooks را می‌دهند. که در این آموزش نیاز داریم. حالا چرا سرویس IFTTT ؟ در واقع این کلمه مخفف If this then that است. به این معنی که “اگر این پس آن” که در واقع اگر رویدادی که تایین کرده‌ایم اتفاق بیوفتد کاری که ما تایین کرده‌ایم اتفاق می‌افتد. در این آموزش به این صورت بوده که با فشردن کلید وای فای بر روی ESP یک API از طرف ما Call می‌شود. سپس اطلاعات مورد نیاز به کانال یا گروه تلگرامی ما ارسال خواهد شد.

 


تنظیمات کانال تلگرام


ابتدا در ربات تلگرامی IFTTT عضو شوید “دقت کنید ربات دارای تیک تایید تلگرام باشد، ربات های دیگری نیز با نام های مشابه وجود دارند”

wifibotton سایت ifttt

در این مرحله رباتی که بالا معرفی شد را به کانال یا گروه تلگرامی خود اضافه کنید، در ادامه ربات از شما درخواست میکند که به عنوان ادمین در گروه حضور داشته باشد و همچنین درخواست دسترسی هایی از شما میکند، قبول کنید.

wifibotton سایت ifttt wifibotton سایت ifttt

بسیار عالی تا این مرحله کانال/گروه تلگرامی آماده میزبانی از سرویس های سایت IFTTT است. در ادامه بایستی تنیماتی IFTTT را انجام دهیم.

 


تنظیمات سایت IFTTT


در این مرحله به سایت IFTTT مراجعه کنید و در بخش sign up در سایت ثبت نام کنید. سپس در بالای صفحه بر روی Create/Applets کلیک کنید.

wifibotton سایت ifttt

سپس در پنجره باز شده بر روی کلمه “THIS” کلیک کنید.

wifibotton سایت ifttt

در این بخش باید سرویس مورد نیاز را انتخاب کنیم، که مورد مدنظر ما Webhooks می باشد؛ این سرویس به ما به یک API اختصاصی می دهد. پس در قسمت جستجو کلمه Webhooks را سرچ کنید.

wifibotton سایت ifttt

پس از انتخاب سرویس Webhooks باید trigger مدنظر را انتخاب کنیم، این مورد درواقع کاری هست که بعد از هر بار Call اتفاق می افتد. پس مورد “Receive a web request” را انتخاب کنید.

wifibotton سایت ifttt

حالا باید برای trigger یک اسم انتخاب کنیم “این اسم را فراموش نکنید، در ادامه به آن نیاز خواهیم داشت” در این قسمت نام مدنظر ما Telegram می باشد.

wifibotton سایت ifttt

در این قسمت دوباره با صفحه “IF THIS THEN THAT” مواجه می شویم، این بار بر روی کلمه “THAT” کلیک کنید.

wifibotton سایت ifttt

این بار در نوار ابزار جستجو کلمه “Telegram” را سرچ کنید.

wifibotton سایت ifttt

در این مرحله باید “action” مد نظر را برای سروی تلگرام مشخص کنیم، همینطور که مشخص هست می توانیم از مواردی مانند send massage, send Photo, send video, send mp3 استفاده کنیم که ذر سناریو های مختلف کارای دارند، در این آموزش ما از مورد اول “Send Massage” استفاده می کنیم.

wifibotton سایت ifttt

در صفحه جدید باید اطلاعات action انتخاب شده را کامل کنیم، در مورد “۱” دومین گزینه را انتخاب کنید که شامل نام کانال/گروه تلگرامی شما می باشد. در مورد “۲” می توانیم پیامی که برای ما ارسال خواهد شد را شخصی سازی کنیم. و در نهایت با انتخاب گزینه “Create action” فرآیند را کامل کنید.

wifibotton سایت ifttt

در پنجره جدید از صحت اطلاعات اطمینال حاصل کنید و در نهایت بر روی “Finish” کلیک کنید.

wifibotton سایت ifttt

در صفحه اصلی سایت بر روی گزینه “Explore” کلیک کنید.

wifibotton سایت ifttt

در نوار ابزار جستجو “Webhooks” را سرچ کنید و بر روی “ٌWebhooks” کلیک کنید.

wifibotton سایت ifttt

در پنجره باز شده بر روی گزینه “Documentation” که در سمت راست بالای صفحه قرار دارد کلیک کنید.

wifibotton سایت ifttt

در این صفحه با وارد کردن نام Trigger که از قبل ساخته ایم می توانیم به API مدنظر در پایین صفحه دسترسی پیدا کنیم.

wifibotton سایت ifttt

حالا به چند روش میتوانیم این API را تست کنیم؛

  1. کپی کردن لینک و جستجوی آن در مرورگر.
  2. استفاده از محیط CMD و استفاده از دستور curl -X POST و سپس لینک.
  3. استفاده از گزینه Test it.

که در نتیجه اگر همه چیز درست باشد پیام مدنظر به شکل زیر برای ما در کانال/گروه به نمایش در می آید.

wifibotton سایت ifttt

خب حالا اگر بخواهیم فرآیند صدا زدن API توسط ماژول nodemcu صورت گیرد، باید از کد زیر استفاده کنیم؛ در قسمت ۱ و ۲ ssid و پسورد وای فای را وارد کنید و در قسمت ۳ , API که سایت در اختیار ما قرار داد را وارد کنید.

ساخت WifiButton

 


نحوه استفاده کلید وای فای


استفاده از این پروژه به این صورت می باشد که بار هر ریست کردن مدار، برای مثال در nodemcu با فرشدن کلید RST ماژول از حالت خواب “sleep mode” خارج می شود و API مورد نظر ما را call می‌کند.

 


تحلیل کد WifiButton


ابتدا ارتباط سریال با baud rate به مقدار ۱۱۵۲۰۰ شروع می شود، در ادامه تابع initWifi ارتباط وای فای بین ESP و روتر شما را ایجاد می کند، سپس تابع makeIFTTTRequest اجرا می شود که در خواستی به سرویس IFTTT ارسال می کند و در نهایت IFTTT به شما ایمیل را ارسال می کند.

 


کد پروژه کلید وای فای


کدهای زیر را روی برد ESP8266 آپلود کنید.

#include <ESP8266WiFi.h>

// Replace with your SSID and Password
const char* ssid     = "CiferTech";
const char* password = "123456789";

// Replace with your unique IFTTT URL resource
const char* resource = "https://maker.ifttt.com/trigger/button_pressed/with/key/dJQw8StSqmowG17lr3ZvEu";

// How your resource variable should look like, but with your own API KEY (that API KEY below is just an example):
//const char* resource = "/trigger/button_pressed/with/key/nAZjOphL3d-ZO4N3k64-1A7gTlNSrxMJdmqy";

// Maker Webhooks IFTTT
const char* server = "maker.ifttt.com";

void setup() {
  Serial.begin(115200); 

  initWifi();
  makeIFTTTRequest();

  // Deep sleep mode until RESET pin is connected to a LOW signal (pushbutton is pressed)
  ESP.deepSleep(0);
}

void loop() {
  // sleeping so wont get here
}

// Establish a Wi-Fi connection with your router
void initWifi() {
  Serial.print("Connecting to: "); 
  Serial.print(ssid);
  WiFi.begin(ssid, password);  

  int timeout = 10 * 4; // 10 seconds
  while(WiFi.status() != WL_CONNECTED  && (timeout-- > 0)) {
    delay(250);
    Serial.print(".");
  }
  Serial.println("");

  if(WiFi.status() != WL_CONNECTED) {
     Serial.println("Failed to connect, going back to sleep");
  }

  Serial.print("WiFi connected in: "); 
  Serial.print(millis());
  Serial.print(", IP address: "); 
  Serial.println(WiFi.localIP());
}

// Make an HTTP request to the IFTTT web service
void makeIFTTTRequest() {
  Serial.print("Connecting to "); 
  Serial.print(server);
  
  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
     Serial.println("Failed to connect, going back to sleep");
  }
  
  Serial.print("Request resource: "); 
  Serial.println(resource);
  client.print(String("GET ") + resource + 
                  " HTTP/1.1\r\n" +
                  "Host: " + server + "\r\n" + 
                  "Connection: close\r\n\r\n");
                  
  int timeout = 5 * 10; // 5 seconds             
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
     Serial.println("No response, going back to sleep");
  }
  while(client.available()){
    Serial.write(client.read());
  }
  
  Serial.println("\nclosing connection");
  client.stop();
}

 

 


وسایل مورد نیاز


ماژول ESP8266 V1.0 وای فای

ماژول ESP8266 وای فای با خروجی سریال ESP8266-12E

ماژول ESP8266 وای فای با خروجی سریال Esp8266-07

 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه

    • با سلام. محدودیتی فعلا به چشم من نخورده، از آونجایی که IFTTT در کل بر پایه کلاود شرکت آمازون هست، سیستم قابل اعتمادی می باشد.

  • IFTTT بازخورد نداره و برای ایران کار نمیکنه پس بی خودی تو این سایت ثبت نکنین …بنده همه جوره تست کردم IFTTT برای ایران حتی با فیلتر شکن هم بسته و بلاک هست

    • در چند هفته اخیر سیاست های IFTTT تغییراتی داشته که باعث شده برای استفاده از تمام امکانات نیاز به تهیه اشتراک باشه، ولی ما هم در ایران هستیم، تست کردیم، کار کرد و آموزش نوشتیم!!