Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

...

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

...

Note

トピックについて

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

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

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

Info

ペイロードについて

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

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

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

...

NOTE

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

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

チュートリアル

...

パブリッシュ

ThingScaleにデータをパブリッシュする

...

Code Block
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からデバイスに送信されたコマンドを受け取る

...