/
MQTTで接続する

MQTTで接続する

MQTTを利用してThingScaleのビルトインMQTTブローカにpublish/subscribeする方法を解説します。

On this page:

パブリッシュ/サブスクライブ


MQTT Endpoint

Protocol

Address:Port

 

  • Version: 3.1 and 3.1.1

  • Support:

    • QoS0(最低1回) and QoS1(少なくとも1回) and QoS2(正確に1回)

    • Wills:Yes

    • Retained Message:Yes

    • Clean sesson/Durable connections:Yes

  • 制限:

    • Publish APIはQoS2をサポートしません。

MQTT Parameters

  • クライアントIDは1~23文字の文字列です。以下の形式を推奨します。 <Device_ID>_<random suffix>

  • Username:ThingScale_ID(U******)

  • Password:DEVICE_TOKEN

MQTT Topic

Pub/Sub

Topic

Payload

Pub/Sub

Topic

Payload

Publish

DEVICE_TOKEN/json/DEVICE_ID/[TAG_NAME]

(NOTE)TAG_NAME はオプションです。

JSON or Numeric

Publish(binary_mode)

DEVICE_TOKEN/binary/DEVICE_ID/[TAG_NAME]

(NOTE)TAG_NAME はオプションです。

Binary(raw stream)

Subscribe

DEVICE_TOKEN/DEVICE_ID/subscribe

JSON

 

トピックについて

Publish時にトピックに含まれるデバイストークンが不正な場合はThingScaleはpublishされたデータの受け取りを拒否します。

トピックが正しく、デバイスID(DEVICE_ID)がデバイスレジストリに存在しない場合に、ThingScale は新規デバイスとしてレジストリに登録します。(オートプロビジョニング)

Subscribe時は<DEVICE_TOKEN>/#のトピックの購読だけが許可されます。ThingScaleからデバイスに対してコマンドを発行するには、デバイス側で<DEVICE_TOKEN>/<DEVICE_ID>/subscribeトピックをsubscribeする事でPublish Service(参照:Publish service一覧)から送信されたペイロードを受け取る事が可能です。

 

ペイロードについて

バイナリデータを取り扱う場合は、バイナリメッセージ用のトピックを指定してMQTTペイロードにはバイナリデータをそのまま格納してください。

バイナリメッセージはvalue1のペイロードとして、16進ダンプ文字列の形式に変換されStream APIから参照可能です。

バイナリメッセージのシリアライズはMessagePack(http://msgpack.org)形式で格納する事を推奨します。

 

NOTE

デバイスからpublishしたストリームが正しくハンドルされたか(デバイストークン認証の不一致etc)の確認メカニズムはMQTTにありません。

その他の詳しいMQTT関連の仕様については、MQTT V3.1 Protocol Specificationを参照してください。

チュートリアル


パブリッシュ

ThingScaleにデータをパブリッシュする
mosquitto_pub -h m.thingscale.io -t '<DEVICE_TOKEN>/json/<DEVICE_ID>' -m '{"temp":20, "humidity":50}' -d -u <ThingScale_ID> -P <DEVICE_TOKEN>



ThingScaleにMQTTS(MQTT over TLS)でデータをパブリッシュする
mosquitto_pub -h m.thingscale.io -p 8883 -t '<DEVICE_TOKEN>/json/<DEVICE_ID>' -m "25.6" --cafile /etc/pki/tls/certs/ca-bundle.crt -d -u <ThingScale_ID> -P <DEVICE_TOKEN>

上記ケースでは、root証明書はCentOSの標準root証明書バンドルを指定しています。



サブスクライブ

Publish Serviceからデバイスに送信されたコマンドを受け取る
mosquitto_sub -h m.thingscale.io -t '<DEVICE_TOKEN>/<DEVICE_ID>/subscribe' -u <ThingScale_ID> -P <DEVICE_TOKEN>





Related content

Using MQTT
More like this
Problem on connecting the device
Problem on connecting the device
More like this
HTTPで接続する
HTTPで接続する
More like this
API Reference (V2.0.0)
API Reference (V2.0.0)
More like this
Using HTTP
More like this
Problem on connecting the agent
Problem on connecting the agent
More like this

© 2014-2022 SENSINICS,LLC