Skip to content

MQTT クライアントエラーコード

MQTTプロトコルを介して接続されたデバイスに対して、サーバーの一般的なエラーコードについて以下に説明します。

MQTT v3.1.1

MQTT v3.1.1プロトコルには10種類のリターンコードのみがあります。これらのリターンコードは意味が限定的であり、同じリターンコードの値でもメッセージによって異なる意味を持つ場合があります。

CONNACKパケット

CONNECTパケットには6種類のリターンコードのみ存在します。サーバーから返されるCONNACKパケットのリターンコードが0の場合のみ、接続が正常に確立されたことを示します。

リターンコード説明
00x00 Connection accepted接続が受理されました
10x01 Connection rejected for unsupported protocol versionクライアントが要求したMQTTプロトコルのバージョンをサーバーがサポートしていません
20x02 Connection rejected for rejected client IDクライアントIDは正しいUTF-8文字列ですが、サーバーによって許可されていません
30x03 Connection rejected for unavailable serverネットワーク接続は確立されていますが、MQTTサービスが利用できません
40x04 Connection rejected for damaged username or passwordユーザー名またはパスワードのデータ形式が不正です
50x05 Connection rejected for unauthorizedクライアント接続が認可されていません
6-255Reserved for future将来のために予約されています

SUBACKパケット

SUBACKパケットには4種類のリターンコードのみ存在します。リターンコード0x80は失敗を示し、それ以外はサブスクライブ成功を示します。値0、1、2はサブスクライブされたメッセージの最大QoS値を表します。

リターンコード説明
00x00 success最大許可QoS 0のメッセージ
10x01 success最大許可QoS 1のメッセージ
20x02 success最大許可QoS 2のメッセージ
1280x80 Failure失敗

MQTT v5.0

MQTT v5.0プロトコルではリターンコードが理由コードに名称変更され、より多くの種類のエラーを示すために理由コードが追加されました。

以下の表は理由コードの値と、その理由コードを含むコントロールパケットの一覧です。

10進数16進数名前パケット
00x00SuccessCONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, UNSUBACK, AUTH
00x00Granted QoS 0SUBACK
10x01Granted QoS 1SUBACK
20x02Granted QoS 2SUBACK
40x04Disconnect with Will MessageDISCONNECT
160x10No matching subscribersPUBACK, PUBREC
170x11No subscription existedUNSUBACK
240x18Continue authenticationAUTH
250x19Re-authenticateAUTH
1280x80Unspecified errorCONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT
1290x81Malformed PacketCONNACK, DISCONNECT
1300x82Protocol ErrorCONNACK, DISCONNECT
1310x83Implementation specific errorCONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT
1320x84Unsupported Protocol VersionCONNACK
1330x85Client Identifier not validCONNACK
1340x86Bad User Name or PasswordCONNACK
1350x87Not authorizedCONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT
1360x88Server unavailableCONNACK
1370x89Server busyCONNACK, DISCONNECT
1380x8ABannedCONNACK
1390x8BServer shutting downDISCONNECT
1400x8CBad authentication methodCONNACK, DISCONNECT
1410x8DKeep Alive timeoutDISCONNECT
1420x8ESession taken overDISCONNECT
1430x8FTopic Filter invalidSUBACK, UNSUBACK, DISCONNECT
1440x90Topic Name invalidCONNACK, PUBACK, PUBREC, DISCONNECT
1450x91Packet Identifier in usePUBACK, PUBREC, SUBACK, UNSUBACK
1460x92Packet Identifier not foundPUBREL, PUBCOMP
1470x93Receive Maximum exceededDISCONNECT
1480x94Topic Alias invalidDISCONNECT
1490x95Packet too largeCONNACK, DISCONNECT
1500x96Message rate too highDISCONNECT
1510x97Quota exceededCONNACK, PUBACK, PUBREC, SUBACK, DISCONNECT
1520x98Administrative actionDISCONNECT
1530x99Payload format invalidPUBACK, PUBREC, DISCONNECT
1540x9ARetain not supportedCONNACK, DISCONNECT
1550x9BQoS not supportedCONNACK, DISCONNECT
1560x9CUse another serverCONNACK, DISCONNECT
1570x9DServer movedCONNACK, DISCONNECT
1580x9EShared Subscription not supportedSUBACK, DISCONNECT
1590x9FConnection rate exceededCONNACK, DISCONNECT
1600xA0Maximum connect timeDISCONNECT
1610xA1Subscription Identifiers not supportedSUBACK, DISCONNECT
1620xA2Wildcard Subscription not supportedSUBACK, DISCONNECT

理由コードは、操作結果を示す1バイトの符号なし値です。理由コードが0x80未満の場合は操作が成功したことを示します。通常、操作で返される理由コードの値は0です。理由コードが0x80以上の場合は操作が失敗したことを示します。

CONNACK、PUBACK、PUBREC、PUBREL、PUBCOMP、DISCONNECT、AUTHコントロールパケットの理由コードは可変ヘッダーに格納されます。SUBACKおよびUNSUBACKパケットはペイロード内に理由コードのリストを含みます。