MOSQUITTO_PUB(1) Commands MOSQUITTO_PUB(1)

mosquitto_pub - کلاینت انتشار پیام‌های ساده در پروتکل MQTT نسخه‌های ۵، ۳.۱.۱ و ۳.۱

mosquitto_pub [options] -t topic {payload-options}

options:
[auth-options] [connection-options] [misc-options] [mqtt-options] [output-options] [publish-options] [tls-certificate-options | tls-psk-options]

auth-options:
[-u username] [-P password]

connection-options
{[-h hostname] [--unix socket path] [-p port-number] | -L URL}
[-A bind-address] [--nodelay] [-S] [--ws]
[--proxy socks-url]

misc-options:
[-o config-file]

mqtt-options:
[-c] [-D command identifier value] [-i client-id] [-I client-id-prefix] [-k keepalive-time] [-x session-expiry-interval] [-V protocol-version]
[--will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain]]

output-options:
[-d] [--quiet]

payload-options:
-f file | -l | -m message | -n | -s

publish-options:
[-q message-QoS] [-r] [--repeat count] [--repeat-delay seconds]

tls-certificate-options:
[--no-tls]
{--cafile file | --capath dir}
[--tls-use-os-certs]
[--cert file] [--key file]
[--ciphers ciphers] [--insecure] [--tls-alpn protocol] [--tls-keylog file] [--tls-version version]
[--tls-engine engine] [--keyform {pem | engine}] [--tls-engine-kpass-sha1 kpass-sha1]

tls-psk-options:
--psk hex-key --psk-identity identity [--ciphers ciphers] [--tls-version version]

mosquitto_pub [--help]

mosquitto_pub یک کلاینت ساده برای پروتکل MQTT نسخه ۵، ۳.۱.۱ و ۳.۱ است که یک پیام منفرد را بر روی یک موضوع (topic) منتشر کرده و سپس خارج می‌شود.

این کلاینت از اتصالات رمزنگاری‌شده با TLS پشتیبانی می‌کند. اکیداً توصیه می‌شود برای هرگونه کاربردی فراتر از ساده‌ترین تنظیمات آزمایشی، از اتصال رمزنگاری‌شده استفاده کنید.

جهت فعال‌سازی اتصالات TLS هنگام استفاده از گواهی‌های x509، می‌توان یکی از گزینه‌های --cafile یا --capath را مشخص کرد.

همچنین اگر از گزینه -p 8883 استفاده شود، گواهی‌های ارائه‌شده توسط سیستم‌عامل بارگذاری خواهند شد و نیازی به مشخص کردن هیچ‌یک از گزینه‌های --cafile یا --capath نخواهد بود.

برای فعال‌سازی اتصالات TLS در صورت استفاده از TLS-PSK، باید از گزینه‌های --psk و --psk-identity استفاده کنید.

سه روش برای ارائه گزینه‌ها به mosquitto_pub وجود دارد: فایل پیکربندی پیش‌فرض، یک فایل پیکربندی مشخص‌شده، یا گزینه‌ها در خط فرمان.

فایل پیکربندی پیش‌فرض در مسیر $XDG_CONFIG_HOME/mosquitto_pub یا $HOME/.config/mosquitto_pub در سیستم‌های سازگار با POSIX، یا در مسیر %USERPROFILE%\mosquitto_pub در سیستم‌های ویندوز قرار دارد.

محتوای فایل پیکربندی باید شامل گزینه‌ها باشد، هر گزینه در یک خط به صورت: -option value. اگر گزینه‌ها در خط فرمان نیز مشخص شوند، آن گزینه‌ها مقادیر تعیین‌شده در فایل پیکربندی را بازنویسی خواهند کرد. استثنای این قاعده گزینه‌های نوع پیام هستند که تنها یکی از آن‌ها می‌تواند مشخص شود. همچنین توجه داشته باشید که در حال حاضر برخی گزینه‌ها را نمی‌توان نفی کرد، مانند -S. گزینه‌های رمزنگاری TLS را می‌توان با گزینه --no-tls غیرفعال کرد.

خطوطی از فایل پیکربندی که با نویسه # شروع می‌شوند به عنوان توضیحات در نظر گرفته شده و پردازش نمی‌شوند.

پیشنهاد می‌شود فایل‌های پیکربندی عمدتاً برای احراز هویت به کار روند. استفاده از فایل پیکربندی امکان احراز هویت را بدون نیاز به نمایش نام کاربری و گذرواژه در خط فرمان فراهم می‌کند.

از نسخه ۲.۱ در دسترس است.

یک فایل پیکربندی را می‌توان با گزینه -o config-file در خط فرمان مشخص کرد. در صورت استفاده از گزینه -o فایل پیکربندی پیش‌فرض بارگذاری نخواهد شد.

قالب آن همانند فایل پیکربندی پیش‌فرض است.

-A

اتصال خروجی را به یک نشانی IP یا نام میزبان محلی متصل (bind) می‌کند. در صورتی که نیاز به محدود کردن ارتباطات شبکه به یک رابط خاص دارید از این آرگومان استفاده کنید.

-c, --disable-clean-session

غیرفعال‌سازی «نشست تمیز» (clean session) / فعال‌سازی حالت کلاینت پایدار (persistent). با استفاده از این آرگومان، به کارگزار (broker) دستور داده می‌شود که هنگام اتصال کلاینت، نشست‌های موجود برای همان شناسه کلاینت (client id) را پاک نکند و با قطع اتصال کلاینت، نشست هرگز منقضی نشود. کلاینت‌های MQTT نسخه ۵ می‌توانند با آرگومان -x مدت‌زمان انقضای نشست خود را تغییر دهند.

هنگامی که یک نشست روی کارگزار پایدار بماند، اشتراک‌های کلاینت پس از قطع اتصال حفظ می‌شوند و پیام‌های بعدی با سطوح کیفیتی QoS 1 و QoS 2 که برسند ذخیره می‌گردند. زمانی که کلاینت دوباره متصل شود و نشست را پاک نکند، تمامی پیام‌های صف‌بندی‌شده را دریافت خواهد کرد.

در صورت استفاده از این گزینه، شناسه کلاینت باید به صورت دستی با --id تنظیم شود.

--cafile

مسیر یک فایل حاوی گواهی‌های مرجع گواهی (CA) معتبر و کدگذاری‌شده با فرمت PEM را مشخص می‌کند. برای فعال‌سازی ارتباط امن SSL/TLS استفاده می‌شود.

همچنین ببینید: --capath

--capath

مسیر پوشه‌ای حاوی گواهی‌های مرجع گواهی (CA) معتبر و کدگذاری‌شده با فرمت PEM را مشخص می‌کند. برای فعال‌سازی ارتباط امن SSL/TLS استفاده می‌شود.

برای کارکرد صحیح --capath باید پسوند فایل‌های گواهی «.crt» باشد و هر بار که گواهی جدیدی اضافه یا حذف می‌کنید، دستور «openssl rehash <path to capath>» را اجرا نمایید.

همچنین ببینید: --cafile

--cert

مسیر فایل حاوی گواهی کدگذاری‌شده با فرمت PEM برای این کلاینت را مشخص می‌کند (در صورتی که سرور آن را درخواست کند).

همچنین ببینید: --key و بخش «اتصالات رمزنگاری‌شده».

--ciphers

فهرستی از الگوریتم‌های رمزنگاری TLS سازگار با OpenSSL برای پشتیبانی در کلاینت. برای اطلاعات بیشتر به ciphers(1) مراجعه کنید.

-d, --debug

فعال‌سازی پیام‌های اشکال‌زدایی (debug).

-D, --property

تنظیم ویژگی‌های MQTT نسخه ۵ برای این کلاینت. در صورت استفاده از این گزینه، کلاینت به عنوان کلاینت MQTT نسخه ۵ تنظیم خواهد شد. این گزینه دو شکل دارد:

-D command identifier value

-D command identifier name value

command شناسه دستور یا بسته MQTT است و می‌تواند یکی از مقادیر CONNECT، PUBLISH، PUBACK، PUBREC، PUBCOMP، SUBSCRIBE، UNSUBSCRIBE، DISCONNECT، AUTH یا WILL باشد. ویژگی‌های در دسترس برای هر دستور در بخش ویژگی‌ها فهرست شده‌اند.

identifier نام ویژگی مورد نظر برای افزودن است. این نام مطابق مشخصات استاندارد است، اما خط تیره «-» به عنوان جداکننده کلمات به کار می‌رود؛ به عنوان مثال: payload-format-indicator. جزئیات بیشتر در بخش ویژگی‌ها آمده است.

value مقدار ویژگی مورد نظر است که نوع داده آن وابسته به همان ویژگی مشخص است.

name فقط برای ویژگی user-property به عنوان اولین رشته از جفت‌رشته‌ها به کار می‌رود. در این حالت، value رشته دوم جفت خواهد بود.

-f, --file

ارسال محتوای یک فایل به عنوان بدنه پیام.

--help

نمایش اطلاعات راهنمای استفاده از دستور.

-h, --host

مشخص کردن میزبان مقصد برای اتصال. مقدار پیش‌فرض localhost است.

-i, --id

شناسه‌ای که برای این کلاینت استفاده می‌شود. در صورت مشخص نشدن، شناسه کلاینت با توجه به نسخه MQTT مورد استفاده تولید می‌شود. برای نسخه v3.1.1/v3.1، کلاینت شناسه‌ای با قالب mosq-XXXXXXXXXXXXXXXXXX تولید می‌کند که در آن X با نویسه‌های الفبایی-عددی تصادفی جایگزین می‌شود. برای نسخه v5.0، کلاینت شناسه‌ای با طول صفر ارسال می‌کند و سرور شناسه‌ای برای کلاینت تولید خواهد کرد.

-I, --id-prefix

پیشوندی که با افزودن شناسه فرایند (PID) کلاینت به انتهای آن، شناسه کلاینت ساخته می‌شود. این گزینه در شرایطی که کارگزار از گزینه clientid_prefixes استفاده می‌کند کاربرد دارد. نمی‌توان آن را هم‌زمان با آرگومان --id به کار برد.

--insecure

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

-k, --keepalive

تعداد ثانیه‌های بین ارسال دستورات PING به کارگزار به منظور اطلاع‌رسانی اینکه کلاینت هنوز متصل و فعال است. مقدار پیش‌فرض ۶۰ ثانیه است.

--key

مسیر یک فایل حاوی کلید خصوصی کدگذاری‌شده با فرمت PEM برای این کلاینت جهت انجام احراز هویت دوطرفه TLS با سرور.

همچنین ببینید: --cert و بخش «اتصالات رمزنگاری‌شده».

--keyform

نوع کلید خصوصی مورد استفاده هنگام برقراری اتصالات TLS را مشخص می‌کند. این مقدار می‌تواند «pem» یا «engine» باشد. این پارامتر زمانی مفید است که از ماژول TPM استفاده شده و کلید خصوصی با آن ایجاد شده باشد. مقدار پیش‌فرض «pem» است که به معنای استفاده از فایل‌های کلید خصوصی معمولی است.

همچنین ببینید: --tls-engine.

-L, --url

مشخص کردن کاربر، گذرواژه، نام میزبان، پورت و موضوع به صورت هم‌زمان در قالب یک نشانی URL. قالب نشانی باید به شکل زیر باشد: mqtt(s)://[username[:password]@]host[:port]/topic یا ws(s)://[username[:password]@]host[:port]/path

بسته به طرح نشانی (scheme)، پورت پیش‌فرض مقادیر متفاوتی خواهد داشت: mqtt:// - 1883، mqtts:// - 8883، ws:// - 80، wss:// - 443.

-l, --stdin-line

ارسال پیام‌های خوانده‌شده از ورودی استاندارد (stdin)، با تفکیک هر خط به یک پیام مجزا.

-m, --message

ارسال یک پیام تکی از طریق خط فرمان.

-n, --null-message

ارسال یک پیام تهی (با طول صفر).

--nodelay

غیرفعال‌سازی الگوریتم نِیگل (Nagle) برای سوکت. این کار تاخیر پیام‌های ارسالی را کاهش می‌دهد، که به‌ویژه برای پیام‌های کوچک با تواتر کم ملموس است. استفاده از این گزینه ممکن است منجر به ارسال بسته‌های بیشتری نسبت به حالت معمول شود.

--no-tls

از نسخه ۲.۱ در دسترس است.

غیرفعال‌سازی کامل استفاده از رمزنگاری TLS. این گزینه زمانی کاربرد دارد که گزینه‌های TLS را در یک فایل پیکربندی تعیین کرده‌اید اما قصد دارید آن گزینه‌ها را موقتاً غیرفعال کنید. همچنین استفاده خودکار از TLS را هنگام اتصال به پورت 8883 متوقف می‌سازد.

-o config-file

از نسخه ۲.۱ در دسترس است.

بارگذاری گزینه‌ها از یک فایل پیکربندی. بخش‌های «فایل پیکربندی پیش‌فرض» و «فایل پیکربندی» در ابتدای بخش گزینه‌ها را مشاهده کنید.

-p, --port

اتصال به پورت مشخص‌شده. در صورت تعیین نشدن، مقدار پیش‌فرض ۱۸۸۳ برای MQTT ساده یا ۸۸۸۳ برای MQTT بر روی TLS استفاده خواهد شد.

-P, --pw

تعیین گذرواژه برای احراز هویت در کارگزار. استفاده از این آرگومان بدون مشخص کردن نام کاربری در نسخه‌های v3.1 یا v3.1.1 پروتکل MQTT نامعتبر است.

همچنین گزینه --username را مشاهده کنید.

--proxy

مشخص کردن یک پروکسی SOCKS5 برای اتصال از طریق آن. انواع احراز هویت «None» و «username» پشتیبانی می‌شوند. مقدار socks-url باید به صورت socks5h://[username[:password]@]host[:port] باشد. پیشوند پروتکل socks5h به این معنی است که نام‌های میزبان توسط پروکسی ترجمه می‌شوند. نمادهای %25، %3A و %40 در صورت وجود در نام کاربری یا گذرواژه به ترتیب به %، : و @ تبدیل می‌شوند.

اگر نام کاربری داده نشود، هیچ تلاشی برای احراز هویت انجام نمی‌شود. اگر پورت داده نشود، مقدار پیش‌فرض ۱۰۸۰ استفاده می‌شود.

اگر میزبان به صورت نشانی IPv6 داده شود، باید درون کروشه قرار گیرد؛ مانند socks5h://[::1]:1080. توجه داشته باشید که کروشه‌ها در برخی پوسته‌ها معنی خاصی دارند، بنابراین ممکن است لازم باشد نشانی پروکسی داخل نقل‌قول تکی یا دوتایی قرار گیرد.

نسخه‌های بیشتری از SOCKS ممکن است در آینده بسته به نیاز اضافه شوند و از پیشوندهای پروتکل متفاوتی استفاده کنند، همان‌طور که در curl(1) توضیح داده شده است.

--psk

ارائه کلید از پیش اشتراک‌گذاشته‌شده (PSK) به صورت هگزادسیمال (بدون پیشوند 0x) مطابق با کلید تعریف‌شده در کارگزار جهت استفاده از رمزنگاری TLS-PSK. برای فعال‌سازی TLS-PSK باید گزینه --psk-identity نیز مشخص شود.

--psk-identity

شناسه کلاینت برای استفاده در پشتیبانی از TLS-PSK. در صورتی که کارگزار برای آن پیکربندی شده باشد، می‌توان از این مقدار به جای نام کاربری استفاده کرد.

-q, --qos

تعیین سطح کیفیت خدمات (Quality of Service) برای پیام، از بین مقادیر ۰، ۱ و ۲. مقدار پیش‌فرض ۰ است.

--quiet

با تعیین این آرگومان، هیچ خطای زمان اجرایی چاپ نخواهد شد. این موضوع پیام‌های خطای مربوط به ورودی نامعتبر کاربر را شامل نمی‌شود (مانند استفاده از --port بدون تعیین شماره پورت).

-r, --retain

در صورت فعال بودن این گزینه، پیام به عنوان «آخرین مقدار معتبر شناخته‌شده» در کارگزار نگهداری (retain) خواهد شد. برای اطلاعات بیشتر به mqtt(7) مراجعه کنید. توجه داشته باشید که پیام‌های با طول صفر هرگز نگهداری نمی‌شوند؛ اگر پیامی با طول صفر و فلگ retain ارسال کنید، هرگونه پیام نگهداری‌شده قبلی روی آن موضوع پاک خواهد شد.

--repeat

اگر حالت انتشار برابر با -m، -f یا -s باشد (یعنی حالت‌هایی که فقط یک پیام تکی ارسال می‌شود)، می‌توان از --repeat برای تعیین تعداد دفعات تکرار ارسال پیام استفاده کرد.

همچنین ببینید: --repeat-delay.

--repeat-delay

در صورت استفاده از --repeat، رفتار پیش‌فرض این است که پیام‌های تکراری بلافاصله پس از تحویل پیام قبلی ارسال شوند. با استفاده از --repeat-delay می‌توان تعداد ثانیه‌های انتظار پس از تحویل پیام قبلی پیش از انتشار پیام بعدی را مشخص کرد. این مقدار الزامی به عدد صحیح بودن ندارد و می‌تواند اعشاری باشد.

توجه داشته باشید که هیچ تضمینی برای فاصله زمانی دقیق بین پیام‌ها وجود ندارد؛ این گزینه صرفاً حداقل زمان از تحویل یک پیام تا شروع انتشار پیام بعدی را تعریف می‌کند.

-s, --stdin-file

خواندن پیام از ورودی استاندارد (stdin) و ارسال تمام محتوا به عنوان یک پیام واحد.

-S

استفاده از جستجوهای رکوردهای SRV در DNS برای تعیین میزبان مقصد جهت اتصال. در صورت استفاده به همراه -h جستجو را روی _mqtt._tcp.<host> انجام می‌دهد؛ در غیر این صورت از _mqtt._tcp.<local dns domain> استفاده می‌کند.

-t, --topic

موضوع (topic) در MQTT که پیام باید روی آن منتشر شود. برای اطلاعات بیشتر درباره موضوعات MQTT به mqtt(7) مراجعه کنید.

--tls-alpn

تعیین پروتکل مورد استفاده هنگام اتصال به کارگزاری که چندین پروتکل را روی یک پورت ارائه می‌دهد (مانند MQTT و WebSockets).

--tls-engine

شناسه یک موتور معتبر OpenSSL (موتور رمزنگاری). این موارد را می‌توان با دستور openssl engine فهرست کرد.

همچنین ببینید: --keyform.

--tls-engine-kpass-sha1

هش SHA1 گذرواژه کلید خصوصی در هنگام استفاده از یک موتور TLS. برخی از موتورهای TLS مانند موتور TPM ممکن است برای دسترسی به گذرواژه نیاز داشته باشند. این گزینه امکان ارسال مستقیم هش SHA1 با کدگذاری هگزادسیمال گذرواژه به موتور را فراهم می‌کند، به جای اینکه از کاربر برای وارد کردن گذرواژه سوال شود.

همچنین ببینید: --tls-engine.

--tls-keylog file

از نسخه ۲.۱ در دسترس است.

ثبت گزارش اطلاعات اتصال TLS در file. این گزینه به ابزارهایی مانند tcpdump، wireshark و mqttshark امکان رمزگشایی ترافیک TLS و بررسی ترافیک MQTT را می‌دهد. در Wireshark این کار با تنظیم گزینه (Pre)-Master-Secret log filename برای پروتکل Transport Layer Security قابل انجام است.

این گزینه فقط باید برای اشکال‌زدایی استفاده شود و هرگز نباید در محیط عملیاتی به کار رود.

--tls-use-os-certs

در صورت استفاده، گواهی‌های مرجع گواهی (CA) ارائه‌شده توسط سیستم‌عامل بارگذاری و مورد اعتماد قرار می‌گیرند. این گزینه می‌تواند در ترکیب با --cafile و --capath یا به تنهایی برای فعال کردن حالت TLS استفاده شود. در صورتی که از -L mqtts://... استفاده شود یا پورت برابر با ۸۸۸۳ باشد و هیچ گزینه گواهی دیگری تعیین نشده باشد، این گزینه به صورت پیش‌فرض فعال خواهد بود.

--tls-version

انتخاب نسخه پروتکل TLS مورد استفاده هنگام برقراری ارتباط با کارگزار. گزینه‌های معتبر شامل tlsv1.3 و tlsv1.2 هستند. مقدار پیش‌فرض tlsv1.2 است. این مقدار باید با نسخه پروتکل مورد استفاده کارگزار مطابقت داشته باشد.

-u, --username

تعیین نام کاربری برای احراز هویت در کارگزار.

همچنین آرگومان --pw را مشاهده کنید.

--unix

اتصال به کارگزار از طریق سوکت محلی دامنه یونیکس (unix domain socket) به جای سوکت TCP. این گزینه جایگزینی برای -h و -L است؛ به عنوان مثال: mosquitto_pub --unix /tmp/mosquitto.sock ...

برای پیکربندی Mosquitto جهت گوش دادن روی سوکت یونیکس، گزینه socket_domain در mosquitto.conf(5) را بررسی کنید.

-V, --protocol-version

تعیین نسخه پروتکل MQTT مورد استفاده هنگام اتصال به کارگزار راه دور. می‌تواند مقادیر 5، 311، 31، یا حالت‌های طولانی‌تر mqttv5، mqttv311 یا mqttv31 باشد. مقدار پیش‌فرض 311 است.

--will-payload

مشخص کردن پیامی که توسط کارگزار ذخیره می‌شود و در صورت قطع ناگهانی و غیرمنتظره اتصال این کلاینت ارسال خواهد شد. این گزینه باید همراه با --will-topic استفاده شود.

--will-qos

سطح کیفیت خدمات (QoS) برای پیام وصیت (Will). مقدار پیش‌فرض ۰ است. این گزینه باید همراه با --will-topic استفاده شود.

--will-retain

در صورت تعیین، اگر اتصال کلاینت به طور غیرمنتظره قطع شود، پیام ارسالی به عنوان یک پیام نگهداری‌شده (retained) تلقی خواهد شد. این گزینه باید همراه با --will-topic استفاده شود.

--will-topic

موضوعی (topic) که در صورت قطع ناگهانی و غیرمنتظره اتصال کلاینت، پیام وصیت روی آن ارسال می‌شود.

--ws

برقراری اتصال با استفاده از وب‌سوکت (WebSockets) به جای TCP ساده.

-x

تنظیم ویژگی session-expiry-interval در بسته CONNECT. در صورت استفاده از این گزینه، کلاینت به عنوان کلاینت MQTT نسخه ۵ تنظیم خواهد شد. عددی بین 0 تا 4294967294 تعیین می‌کند که نشست پس از قطع اتصال کلاینت تا چند ثانیه معتبر بماند، یا برای نشستی که هرگز منقضی نمی‌شود از مقادیر -1، 4294967295 یا ∞ استفاده کنید. در صورت ارائه گزینه -c مقدار پیش‌فرض -1 و در غیر این صورت 0 خواهد بود.

اگر نشست با استفاده از -x یا -c طوری تنظیم شود که هرگز منقضی نشود، باید شناسه کلاینت مشخص گردد.

کلاینت می‌تواند پیامی را نزد کارگزار ثبت کند تا در صورت قطع اتصال غیرمنتظره، به صورت خودکار ارسال شود. برای اطلاعات بیشتر به mqtt(7) مراجعه کنید.

حداقل نیاز برای این ویژگی، استفاده از --will-topic جهت تعیین موضوعی است که پیام وصیت باید روی آن ارسال شود. این کار منجر به ارسال پیامی با طول صفر، بدون نگهداری (non-retained) و با سطح QoS 0 خواهد شد.

از آرگومان‌های --will-retain، --will-payload و --will-qos برای تغییر سایر پارامترهای وصیت استفاده کنید.

گزینه -D / --property امکان افزودن ویژگی‌ها را در مراحل مختلف اجرای mosquitto_pub فراهم می‌کند. ویژگی‌های پشتیبانی‌شده برای هر دستور به شرح زیر است:

•authentication-data (داده دودویی - توجه: به عنوان رشته رفتار می‌شود)
•authentication-method (جفت‌رشته UTF-8)
•maximum-packet-size (عدد صحیح بی‌علامت ۳۲ بیتی)
•receive-maximum (عدد صحیح بی‌علامت ۱۶ بیتی)
•request-problem-information (عدد صحیح بی‌علامت ۸ بیتی)
•request-response-information (عدد صحیح بی‌علامت ۸ بیتی)
•session-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی؛ توجه: به جای آن از -x استفاده کنید)
•topic-alias-maximum (عدد صحیح بی‌علامت ۱۶ بیتی)
•user-property (جفت‌رشته UTF-8)

•content-type (رشته UTF-8)
•correlation-data (داده دودویی - توجه: به عنوان رشته رفتار می‌شود)
•message-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی)
•payload-format-indicator (عدد صحیح بی‌علامت ۸ بیتی)
•response-topic (رشته UTF-8)
•topic-alias (عدد صحیح بی‌علامت ۱۶ بیتی)
•user-property (جفت‌رشته UTF-8)

•session-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی)
•user-property (جفت‌رشته UTF-8)

•content-type (رشته UTF-8)
•correlation-data (داده دودویی - توجه: به عنوان رشته رفتار می‌شود)
•message-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی)
•payload-format-indicator (عدد صحیح بی‌علامت ۸ بیتی)
•response-topic (رشته UTF-8)
•user-property (جفت‌رشته UTF-8)
•will-delay-interval (عدد صحیح بی‌علامت ۳۲ بیتی)

در صورت موفقیت مقدار صفر و در صورت بروز خطا مقداری غیر صفر بازگردانده می‌شود. اگر اتصال توسط کارگزار در سطح MQTT رد شود، کد خروج همان کد دلیل CONNACK خواهد بود. در صورت بروز هر خطای دیگری، کد خروج مقدار بازگشتی libmosquitto است.

کدهای CONNACK در MQTT نسخه v3.1.1:

•0 موفقیت‌آمیز (Success)
•1 اتصال رد شد: نسخه پروتکل نامعتبر است (Connection refused: Bad protocol version)
•2 اتصال رد شد: شناسه پذیرفته نشد (Connection refused: Identifier rejected)
•3 اتصال رد شد: سرور در دسترس نیست (Connection refused: Server unavailable)
•4 اتصال رد شد: نام کاربری یا گذرواژه نادرست است (Connection refused: Bad username/password)
•5 اتصال رد شد: فاقد مجوز (Connection refused: Not authorized)

کدهای CONNACK در MQTT نسخه v5:

•0 موفقیت‌آمیز (Success)
•128 خطای نامشخص (Unspecified error)
•129 بسته ناقص یا بدشکل (Malformed packet)
•130 خطای پروتکل (Protocol error)
•131 خطای وابسته به پیاده‌سازی (Implementation specific error)
•132 نسخه پروتکل پشتیبانی نمی‌شود (Unsupported protocol version)
•133 شناسه کلاینت نامعتبر است (Client ID not valid)
•134 نام کاربری یا گذرواژه نادرست است (Bad username or password)
•135 فاقد مجوز (Not authorized)
•136 سرور در دسترس نیست (Server unavailable)
•137 سرور مشغول است (Server busy)
•138 مسدود شده (Banned)
•139 سرور در حال خاموش شدن است (Server shutting down)
•140 روش احراز هویت نادرست است (Bad authentication method)
•141 پایان مهلت زنده ماندن (Keep alive timeout)
•142 نشست توسط اتصال دیگری تصاحب شد (Session taken over)
•143 فیلتر موضوع نامعتبر است (Topic filter invalid)
•144 نام موضوع نامعتبر است (Topic name invalid)
•147 سقف دریافت رد شد (Receive maximum exceeded)
•148 نام مستعار موضوع نامعتبر است (Topic alias invalid)
•149 بسته بیش از حد بزرگ است (Packet too large)
•148 نرخ ارسال پیام بیش از حد بالاست (Message rate too high)
•151 سهمیه مصرف تمام شده است (Quota exceeded)
•152 اقدام مدیریتی (Administrative action)
•153 قالب داده بدنه نامعتبر است (Payload format invalid)
•154 نگهداری پیام پشتیبانی نمی‌شود (Retain not supported)
•155 سطح کیفیت خدمات پشتیبانی نمی‌شود (QoS not supported)
•156 از سرور دیگری استفاده کنید (Use another server)
•157 سرور منتقل شده است (Server moved)
•158 اشتراک‌های هم‌رسان پشتیبانی نمی‌شود (Shared subscriptions not supported)
•159 نرخ برقراری اتصال بیش از حد مجاز است (Connection rate exceeded)
•160 حداکثر زمان مجاز اتصال (Maximum connect time)
•161 شناسه‌های اشتراک پشتیبانی نمی‌شود (Subscription IDs not supported)
•162 اشتراک‌های با نویسه عمومی پشتیبانی نمی‌شود (Wildcard subscriptions not supported)

سایر کدها:

•27 پایان مهلت انتظار برای دریافت پیام (Timed out waiting for message)

انتشار اطلاعات دما بر روی میزبان محلی (localhost) با سطح کیفیت خدمات QoS 1:

•mosquitto_pub -t sensors/temperature -m 32 -q 1

انتشار برچسب زمان و اطلاعات دما به یک میزبان راه دور بر روی پورت غیر استاندارد و با QoS 0:

•mosquitto_pub -h 192.168.1.1 -p 1885 -t sensors/temperature -m "1266193804 32"

انتشار وضعیت کلید روشنایی. پیام به صورت نگهداری‌شده (retained) تنظیم می‌شود زیرا ممکن است فاصله زمانی زیادی میان رویدادهای تغییر وضعیت کلید وجود داشته باشد:

•mosquitto_pub -r -t switches/kitchen_lights/status -m "on"

ارسال محتوای یک فایل به دو روش:

•mosquitto_pub -t my/topic -f ./data
•mosquitto_pub -t my/topic -s < ./data

ارسال داده‌های تحلیل‌شده مصرف برق از یک کنتور Current Cost، با خواندن از ورودی استاندارد (stdin) به طوری که هر خط به عنوان یک پیام جداگانه ارسال شود:

•read_cc128.pl | mosquitto_pub -t sensors/cc128 -l

روشن کردن یک وسیله برقی با استفاده از zigbee2mqtt و یک پریز هوشمند با پیکربندی مناسب:

•mosquitto_pub -t zigbee2mqtt/power-microwave/set -m '{"state":"ON"}'

$XDG_CONFIG_HOME/mosquitto_pub, $HOME/.config/mosquitto_pub, $HOME/snap/mosquitto/current/.config/mosquitto_pub (برای نسخه‌های نصب‌شده از طریق snap)

فایل پیکربندی برای گزینه‌های پیش‌فرض.

اطلاعات مربوط به اشکالات mosquitto را می‌توانید در نشانی زیر بیابید: https://github.com/eclipse-mosquitto/mosquitto/issues

mosquitto(7), mqtt(7), mosquitto_rr(1), mosquitto_sub(1), mosquitto(8), libmosquitto(3), mosquitto-tls(7)

Roger Light <roger@atchoo.org>

04/03/2026 Mosquitto Project