در این آموزش میخواهیم با استفاده از ربات پیام رسان بله پروژه اینترنت اشیاء بسازیم تا برق وسایل مختلف منزل را به راحتی از راه دور و تنها با استفاده از دکمههای ربات کنترل کنیم! همچنین دمای محیط را با استفاده از ربات اندازه گیری میکنیم!
در آموزش اتصال ربات تلگرام به آردوینو – قسمت اول و آموزش اتصال ربات تلگرام به آردوینو – قسمت دوم، در خصوص نحوهی ساخت ربات به کمک Botfather و هم چنین برقراری ارتباط با سرورهای تلگرام برای اتصال دستگاههای IOT را با این پیامرسان محبوب به همراه سورس کامل آن را نیز منتشر کردیم. همچنین در آموزش اتصال ربات تلگرام به آردوینو ESP8266 – ربات تلگرام در خانه، نگاهی کاربردیتر به مقوله ربات تلگرام داشتیم.
در این آموزشها شما یاد خواهید گرفت که چگونه بهطور عملی یک ربات تلگرام برای پروژه اینترنت اشیاء خود بسازید. همچنین پس از فیلتر شدن تلگرام، در اینترنت اشیاء و اتصال به ربات تلگرام بدون محدودیت و فیلتر، نحوه اتصال ESP8266 به سرور تلگرام بدون استفاده از پراکسی را توضیح دادیم.
خب دوستانی نظر دادند که چرا ما این آموزش را با یک پیام رسانی وطنی که قابلیت ربات هم داره انجام نمیدید و صد البته نظر اونها هم منطقی و هم پسندیده بود, پس لازم دونستیم این آموزش را هم مثل همیشه بصورت رایگان اینجا منتشر کنیم.
برای ساخت ربات جدید و راه اندازی آن در پیامرسان بله نیز، تا حد زیادی مراحل شبیه به راه اندازی ربات در تلگرام میباشد، بنابراین توصیه میکنم حتماً مقالات بالا را مطالعه کنید.
با این آموزش همراه باشید.
تغییرات کتابخانه ZeusTgBot
API ربات بله، تا حد زیادی با API ربات تلگرام یکسان است ولی علی رغم ادعای بله مبتنی بر سازگاری API آن با ربات تلگرام، در برخی موارد متدها کاملاً یکسان نبوده و تطابق کامل وجود ندارد. خوشبختانه متدهایی که در کتابخانه زئوس بات وجود دارند، با متدهای مشابه آن در بله مطابقت دارند و تنها تفاوت در آدرس API میباشد.
آدرس API ربات تلگرام بهصورت زیر است:
https://api.telegram.org/bot{token}/{methode}
و آدرس API ربات بله نیز به این شکل میباشد:
https://tapi.bale.ai/bot{token}/{methode}
بنابراین در پروژه ZeusTgBot که از صفر توسط تیم ما نوشته شده است، تفاوت تنها در جایگذاری و ساخت آدرس API میباشد. اما چالش بعدی، اتصال ESP8266 از طریق SSL میباشد.
اتصال ایمن ESP8266 از طریق SSL
یکی از چالشهای مهم برای اتصال بردهای الکترونیکی به اینترنت، مبحث اتصال ایمن از طریق SSL یا همان HTTPS میباشد. یک ارتباط ایمن نیازمند پیش نیازهای متفاوتی از جمله تنظیم بودن ساعت کلاینت و سرور، داشتن fingerprint معتبر و… میباشد. در صورتی که هریک از پارامترهای اتصال ایمن برقرار نباشد، ممکن است اتصال با موفقیت صورت نگیرد. مهیا کردن این ویژگیها بر روی سخت افزار میتواند کمی پیچیده باشد. اما به کمک کتابخانههای ESP8266 به راحتی میتوان یک ارتباط ایمن برقرار ساخت.
روش های موجود
اولین روش، تست اتصال بدون استفاده از SSL است. اگر بدون استفاده از https و با http به سرور بله درخواستی ارسال نمایید، این سرور به طور خودکار شما را به SSL منتقل میکند. یعنی Force HTTPS Redirection بر روی این سرور فعال میباشد. بنابراین شما تنها باید از طریق ارتباط ایمن به این سرور درخواست ارسال نمایید. بنابراین به سراغ گزینه بعدی میرویم. گزینه بعدی، استفاده از کتابخانه WiFiClientSecureBearSSL خواهد بود. در این روش برای اتصال ایمن، شما نیاز به اثرانگشت یا fingerprint دارید. معمولاً این اثرانگشتها تنها برای یک آدرس خاص ساخته شده و دارای زمان انقضا میباشند. پس از این زمان شما میبایست مجدداً اثر انگشت جدیدی را برای ارتباط ایمن تولید کنید. اما خوشبختانه کتابخانه فوق، قابلیتی دارد که با استفاده از آن، میتوانید بدون استفاده از اثرانگشت به https متصل شوید، اما این روش از امنیت کمتری برخوردار است. شما میتوانید از هر دو روش برای اتصال استفاده کنید. برای این کار کافی است در فایل ZeusTgBot.cpp یکی از این دو خطوط را کامنت و دیگری را از حالت کامنت خارج کنید.
//client->setFingerprint(fingerprint); client->setInsecure();
اثر انگشت را نیز میتوانید بهدست آورده و در فایل ZeusTgBot.h ویرایش کنید.
const uint8_t fingerprint[20] = {0x5A, 0xCF, 0xFE, 0xF0, 0xF1, 0xA6, 0xF4, 0x5F, 0xD2, 0x11, 0x11, 0xC6, 0x1D, 0x2F, 0x0E, 0xBC, 0x39, 0x8D, 0x50, 0xE0};
نحوه راه اندازی ربات
راه اندازی ربات بسیار ساده است! کتابخانه جدید، بر پایه کتابخانه ZeusTgBot و با زبان آردوینو نوشته شده است. شما میتوانید فایل برنامه اصلی main.ino را در ویرایشگر آردوینو یا ویرایشگر حرفهای باز کنید. سپس نام کاربری و رمز عبور وای فای خود را به همراه توکن رباتی که از بات فادر بله دریافت کردید، در قسمت زیر جایگذاری کنید:
#define Ssid "" #define Password "" #define Bot_Key "" #define ProxyPage "PROXY URL"
این کتابخانه هم برای ربات بله و هم برای تلگرام به همراه پروکسی قابل استفاده است. برای استفاده از ربات بله، تنها کافی ست تا هنگام ساختن شیء جدید از روی کلاس ZeusTgBot ، پارامتر دوم را که isBale است، مقدار ture وارد کنید.
Zeus_TgBot Bot(Bot_Key, true, true);
همچنین برای راه اندازی سنسور دما، شما میبایست کتابخانه آن را نیز به آردوینو اضافه کنید. این کار بسیار ساده است و در ادامه خواهید خواند.
دریافت دمای محیط
قبلاً درسایت راهاندازی سنسور دما DS18b20 با آردوینو و پروتکل onewire (تک سیمه) توضیح داده شده است. شما از طریق این آموزش، میتوانید کتابخانه Dallas را به آردوینو اضافه کنید. در پیام رسان بله، شما میتوانید با ارسال دستور دما به ربات هوشمند ، دمای محیط را بهدست آورید.
تصاویری از ربات در محیط بله
وقتی کاربر برای اولین بار ارتباط با ربات را در محیط بله با دستور استارت /start شروع میکند، با پیامی مشابه زیر مواجه میشود:
کاربر به راحتی میتواند با استفاده از دکمههای تغییر وضعیت، وضعیت روشن یا خاموش بودن هریک از چراغهای متصل به ESP8266 را تغییر دهد.چراغها به طور پیش فرض خاموش هستند. پس از فشردن هر کلید، مشاهده خواهید کرد که ربات پیام جدیدی را ارسال نکرده و همان پیام قبلی را برای شما ویرایش میکند تا از شلوغی بیش از حد جلوگیری شود!
با هر بار فشردن کلیدها، همچنان همان دکمههای زیر پیام در ربات بله در دسترس هستند و میتوانید مجدداً وضعیت لامپها را کنترل کرده و حالت دلخواه خود را فعال کنید.
توجه داشته باشید که منظور از لامپها، در واقع دستگاههای متفاوتی است که شما میتوانید از راه دور کنترل کنید. در این پروژه برای نمایش صحت عملکرد ربات، از LED استفاده شده است. شما میتوانید تعداد دستگاههای بیشتری را با منوها دلخواه خود توسط این ربات کنترل کنید.
ویدئو عملکرد مدار
منبع:سیسوگ