پیشرفته⏱ 22 دقیقه مطالعه

MQTT یک پروتکل سبک پیام‌رسانی است که برای ارتباط بین دستگاه‌های IoT و سرور طراحی شده. در این مدل، دستگاه‌ها پیام را روی یک «موضوع» (Topic) منتشر (Publish) می‌کنند و دستگاه‌های دیگر می‌توانند روی همان موضوع مشترک (Subscribe) شوند.

اجزای اصلی MQTT

  • Broker: سروری که پیام‌ها را مسیریابی می‌کند (مثل HiveMQ یا Mosquitto)
  • Publisher: دستگاهی که پیام می‌فرستد (مثلاً ESP32 با داده دما)
  • Subscriber: دستگاه یا داشبوردی که پیام را دریافت می‌کند
  • Topic: مسیر رشته‌ای مثل home/livingroom/temperature
PYTHON
import network
from machine import Pin
from time import sleep
from umqtt.simple import MQTTClient

# اتصال Wi-Fi (کد کامل در درس ۱۱)
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
while not wlan.isconnected():
    sleep(1)

client = MQTTClient("esp32-academy", "broker.hivemq.com")
client.connect()
print("به بروکر MQTT متصل شد")

counter = 0
while True:
    counter += 1
    payload = "سلام شماره {}".format(counter)
    client.publish("esp32-academy/demo", payload)
    print("ارسال شد:", payload)
    sleep(3)
⚠️ هشدار

بروکرهای عمومی مانند broker.hivemq.com فقط برای آزمایش مناسب هستند؛ برای پروژهٔ واقعی از بروکر اختصاصی یا سرویس‌های ابری امن استفاده کنید.

پروژهٔ نهایی این فصل: ایستگاه هواشناسی بی‌سیم

با ترکیب سنسور DHT22 (درس ۷)، Wi-Fi (درس ۱۱) و MQTT، می‌توانید دما و رطوبت را هر چند ثانیه یک‌بار به یک داشبورد آنلاین ارسال کنید.

ایستگاه هواشناسی بی‌سیم با MQTT (پروژهٔ رسمی Wokwi) باز کردن در Wokwi ↗

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود.

🛠️ کارگاه عملی

کارگاه عملی: شبیه‌سازی بالا را اجرا کنید، به آدرس hivemq.com/demos/websocket-client بروید، به موضوع wokwi-weather سابسکرایب شوید و مقدار سنسور DHT22 را در شبیه‌ساز تغییر دهید تا پیام‌های زنده را ببینید.

❓ در الگوی MQTT، دستگاهی که پیام تولید می‌کند چه نامیده می‌شود؟
طراحی و توسعه: امین شیخ نجدیglcd.ir