MQTTを利用してThingScaleのビルトインMQTTブローカにpublish/subscribeする方法を解説します。
...
Pub/Sub | Topic | Payload |
---|---|---|
Publish |
(NOTE)TAG_NAME はオプションです。 | JSON or Numeric |
Publish(binary_mode) |
(NOTE)TAG_NAME はオプションです。 | Binary(raw stream) |
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からデバイスに送信されたコマンドを受け取る
...