![](https://duino4projects.com/wp-content/uploads/2021/06/Wind-Speed-Monitor-Via-MQTT.jpg)
یک بار به دلیل باد نتوانستم پهپاد را کنترل کنم، بنابراین می خواهم سرعت باد را اندازه گیری کنم تا بدانم آیا برای پرواز پهپاد در طبیعت مناسب است یا خیر. بنابراین من به این فکر می کنم که چگونه سرعت باد را در میدان اندازه گیری کنم و می توانم آن را از هر جایی از راه دور بررسی کنم. با تشکر از آردوینو و MQTT، پس از روزها یادگیری/مطالعه، و همچنین برخی از ماژول های سخت افزاری Makerfabs، این را به خوبی حل کردم.
در این آموزش، من می خواهم به سادگی MQTT و نحوه ساخت یک شبکه MQTT برای بدست آوردن سرعت باد یک مکان خاص را معرفی کنم.
مرحله 1: MQTT چیست؟
انتقال تله متری صف پیام (MQTT) یک پروتکل ماشین به ماشین است که برای انتشار/اشتراک ارسال پیام بسیار سبک طراحی شده است. پهنای باند و منابع مورد نیاز شبکه را به حداقل می رساند و در عین حال از قابلیت اطمینان با کوچک نگه داشتن هدر بسته ها تا حد ممکن اطمینان حاصل می کند.
MQTT یک پروتکل انتقال است که برای اینترنت اشیا توسعه یافته است. این به ویژه برای دستگاه هایی با قدرت محاسباتی کم بهینه شده است. و دستگاه ها را برای سناریوهای مختلف برنامه های IoT مناسب می کند. راهاندازی یک سیستم MQTT برای رسیدگی به نیازهای پیامرسانی میخانه/فرعی شما میتواند مزایای قدرتمندی برای فرآیند شما داشته باشد:
- توسعه به راحتی.
- مقیاس پذیری قوی
- انتقال و دریافت اطلاعات به سرعت و کارآمد.
- کاهش مصرف پهنای باند شبکه
مرحله 2: حمل و نقل MQTT
![](https://duino4projects.com/wp-content/uploads/2021/06/MQTT-Transports.jpg)
MQTT معمولاً از طریق TCP/IP اجرا میشود، اما میتواند از سایر انتقالهای دو جهته نیز استفاده کند. MQTT روش هایی را برای نشان دادن اقدامات مورد نظر برای انجام روی منابع شناسایی شده تعریف می کند.
روش ها در MQTT عبارتند از:
- اتصال - منتظر می ماند تا اتصال با سرور برقرار شود.
- قطع اتصال - منتظر می ماند تا کلاینت MQTT هر کاری را که باید انجام شود به پایان برساند و جلسه TCP/IP قطع شود.
- اشتراک - از سرور می خواهد که به مشتری اجازه دهد در موضوعات مشترک شود.
- لغو اشتراک - از سرور می خواهد که به مشتری اجازه دهد اشتراک موضوعات را لغو کند.
- انتشار – پس از ارسال درخواستها به کلاینت MQTT، بلافاصله به رشته برنامه بازمیگردد.
یک شبکه MQTT شامل مشتری MQTT و کارگزار MQTT است. MQTT Client می تواند هر دستگاهی باشد، از یک میکروکنترلر گرفته تا یک سرور تمام عیار، که کتابخانه MQTT را اجرا می کند و از طریق هر شبکه به کارگزار MQTT متصل می شود. کارگزار MQTT مسئول دریافت کلیه پیام ها، فیلتر کردن، تصمیم گیری و ارسال پیام ها به مشتریان مشترک است.
به جای برقراری ارتباط با یک سرور، دستگاهها و برنامههای سرویس گیرنده MQTT موضوعاتی را منتشر میکنند که توسط یک کارگزار اداره میشود و مشترک میشوند. پیام ها به جای اینکه مستقیماً از مشتری به مشتری تحویل داده شوند، در «موضوعات» منتشر می شوند. سپس کارگزار آن پیام ها را به هر مشتری مشترکی تحویل می دهد. MQTT اساساً یک پروتکل انتشار/اشتراک است. این به مشتریان اجازه می دهد تا به عنوان ناشر، مشترک یا هر دو با هم ارتباط برقرار کنند.
مرحله 3: پیام MQTT
پیام MQTT ارسال شده شامل «موضوعات» و «بارگذاری» است. "موضوعات" هسته اصلی MQTT است. "بارگیری" محتوای خاصی است که مشترک می خواهد.
در شبکه MQTT، مشتری باید ابتدا درخواست اشتراک را به کارگزار ارسال کند تا در یک موضوع مشترک شود. درخواست می تواند شامل چندین موضوع باشد. کارگزار با یک پاسخ تایید شده اشتراک به درخواست پاسخ می دهد. اشتراک ها همچنین دارای یک تنظیمات QoS هستند که می توان از آن برای کاهش کیفیت سرویس پیام منتشر شده استفاده کرد. سه سطح مختلف کیفیت خدمات (QoS) به طراحان شبکه اجازه میدهد بین به حداقل رساندن انتقال داده و حداکثر کردن قابلیت اطمینان یکی را انتخاب کنند.
- QoS 0 (صفر) برای اطمینان از اینکه پیام بیش از یک بار به مقصد نمی رسد استفاده می شود.
- QoS 1 زمانی استفاده می شود که تحویل پیام حیاتی باشد. این امر با قرار دادن پیام ها در صف تا زمانی که مشترک قادر به دریافت آن باشد به دست می آید.
- QoS 2 زمانی استفاده می شود که پیام باید یک بار و تنها یک بار برسد.
در بسیاری از موارد، پیام همیشه در تنظیمات QoS پایین منتشر می شود. MQTT می تواند اجازه دهد تا پیام ها در کارگزار ذخیره شوند تا زمانی که دستگاه برای دریافت آنها آماده شود.