esp8266 mqtt

استفاده از MQTT در ESP8266

در این پست به استفاده از پروتکل MQTT در ESP8266 می پردازیم. خب اول از همه باید کمی در مورد MQTT صحبت کنیم.

MQTT

MQTT یک پروتکل ارتباطی ماشین با ماشین است. یک روش ایده آل در پلتفرم‌های IOT برای ارتباط بین دستگاه‌ها می‌باشد.در این مطلب یک برنامه‌ی ساده برای اتصال یک ESP8266 با بروکر MQTT را مورد بررسی قرار می‌دهیم. بروکرها معمولا پولی هستند یا اینکه شما باید سروری تهیه کنید و بروکر خود را روی آن راه اندازی کنید. ولی در اینجا ما از یک بروکر رایگان استفاده می کنیم.

MQTT چیست؟

MQTT یک سیستم برای انتشار و دنبال کردن یک پیغام است. به این صورت که یک دستگاه می تواند پیغامی را از طریق بروکر منتشر کند. و یک یا چند دستگاه دیگر به آن پیغام گوش دهند. آن پیغام می‌تواند یک فرمان برای انجام کاری باشد. یا انتشار وضعیت خوانده شده از یک سنسور باشد.

MQTT Client: دستگاهی است که روی آن کتابخانه‌ی MQTT نصب شده و می تواند به MQTT broker متصل شود. چه انتشار دهنده‌ی پیغام و چه دنبال کننده‌ی آن، هر دو کلاینت محسوب می‌شوند.

MQTT Broker: بروکر تمام پیغام ها را دریافت می کند. و تعیین می‌کند که کدام کلاینت دنبال کننده‌ی کدام پیغام است. و پیغام را برای آن کلاینت می‌فرستد.

کد برنامه:

من در این برنامه از ESP8266 سری یک استفاده کرده ام.

برای راه اندازی ماژول به این مطلب مراجعه کنید.

در ادامه خط به خط برنامه را دنبال می کنیم.

اول از همه باید کتابخانه های لازم را صدا بزنیم. اولین کتابخانه ای است که برای استفاده از ESP8266 لازم است. دومین کتابخانه هم برای استفاده از MQTT مورد نیاز می‌باشد.

در این قسمت SSID و پسورد مودم خود را وارد کنید. چون برای استفاده از MQTT باید به اینترنت متصل باشیم.

در ادامه هم اسم سروری که بروکر ما روی آن نصب است را می‌نویسیم. ما از این بروکر رایگان استفاده کرده‌ایم.

در این قسمت اول یک آبجکت از وایفای درست می کنیم و بعد آن را به عنوان ورودی به آبجکتی که از کتابخانه‌ی MQTT ایجاد می‌کنیم، می‌دهیم.

این قسمت فانکشن SETUP ما در برنامه است.

اول ارتباط سریال را راه اندازی میکنیم. در ادامه تابعی که برای اتصال به مودم نوشته ایم را صدا می زنیم. در آخر هم دو دستور برای راه اندازی MQTT را می نویسیم.

خط اول میگه که با چه سروری و با چه پورتی ارتباط برقرار کند. در خط دوم هم تابعی که برای گرفتن پیغام ها نوشته ایم را می دهیم. تا تمام پیغام ها را به این تابع بفرستد.

این تابع برای وصل شدن به مودم است

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

این قسمت یک تابع برای اتصال به MQTT نوشته ایم. که در قسمت لوپ اتصال چک می شود و هر وقت اتصال قطع بود این تابع صدا زده می‌شود.

این تابع به این پیچیدگی ای که می بینید نیست و فقط سه خط آن مهم و مورد نیاز است.

خط اول که دستور اتصال است که یک نام دلخواه هم داخل آن قرار می دهیم. اگر چند دستگاه قرار است به یک بروکر متصل شوند این نام نباید تکراری باشد.

چیزی که در اینجا مهم است این می باشد، که پیغام های ما تحت یک عنوان انتشار می یابد. و ما به یک عنوان گوش می دهیم.

این دو خط تعیین می کنند که ماژول ما تحت چه عنوانی پیغام ارسال کند. و به چه Topic گوش بدهد.

اگر برنامه‌ی شما بزرگ است و قرار است لحظه‌ای کارهایی انجام بدهد بهتر است از delay استفاده نکنید. می توانید این قسمت را به این صورت با تابع ()millis هم بنویسید.

این قسمت داخل لوپ برنامه‌ی خود قرار دهید. به این صورت دیگر برنامه‌ی شما در وقفه گیر نمی کنید.

برای آشنایی بیشتر با این کتابخانه به این صفحه مراجعه کنید.

امیدوارم این مطلب کمکی به علاقه مندان به اینترنت اشیاء کرده باشد. بحث MQTT مفصل است و باید بیشتر مطالعه کنید.

دیدگاه ها :

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

نشانی ایمیل شما منتشر نخواهد شد.