pythonでMQTTを扱うならpaho-mqttのライブラリを使うのが定番です。
paho_mqttを扱う際のMQTTpublishのreturn値にどのようなものがあるのか気になったため(実は,調べてもなかなか出てこなかった...),ライブラリのコードから探ってみた。
目次
Publish時のreturn値
エラーコードは以下のようになります。
おおよそエラーコードの文言でどのような状態か理解できますね。
# Error values
MQTT_ERR_AGAIN = -1
MQTT_ERR_SUCCESS = 0
MQTT_ERR_NOMEM = 1
MQTT_ERR_PROTOCOL = 2
MQTT_ERR_INVAL = 3
MQTT_ERR_NO_CONN = 4
MQTT_ERR_CONN_REFUSED = 5
MQTT_ERR_NOT_FOUND = 6
MQTT_ERR_CONN_LOST = 7
MQTT_ERR_TLS = 8
MQTT_ERR_PAYLOAD_SIZE = 9
MQTT_ERR_NOT_SUPPORTED = 10
MQTT_ERR_AUTH = 11
MQTT_ERR_ACL_DENIED = 12
MQTT_ERR_UNKNOWN = 13
MQTT_ERR_ERRNO = 14
MQTT_ERR_QUEUE_SIZE = 15
publish エラー値を見る
作成したインスタンスでpublishを行う
rcにリターンコードを格納してみる。
client = mqtt.Client() #インスタンスの作成
rc = client.publish(topic, message) #MQTTPublish処理
print(rc)
----------------
出力 (0,1)
エラーコードはタプルで帰ってくるようだ。
第1パラメータがエラーコードで,第2パラメータがmessageIDとなるようです。
今回は,エラーコード:0 (MQTT_ERR_SUCCESS),messageID: 1 となる。
ということなので,エラーコードで処理を判定する場合は第1パラメータをみることになるだろう。
rc = client.publish(topic, message) #MQTTPublish処理
if rc[0] != 0:
#ERROR!!
else:
#SUCCESS!!
コメント