Soracom

Users

ドキュメント
Home ドキュメント バイナリパーサー リファレンス

定義済みフォーマット

バイナリパーサーで定義済みフォーマットを使用すると特定のデバイスや特定のフォーマットのデータを自動的にパースできます。定義済みフォーマットで対応するデバイスおよびフォーマットは、以下のとおりです。

定義済みフォーマットを指定する方法については、バイナリパーサーを設定する を参照してください。

Sens'it V2 / V3 (Discovery)

フォーマット名説明
@sensit

Sens'it V2 に対応しています。

フォーマットは、FAQ: バイナリパーサー "@sensit" で変換された値の意味を教えてください を参照してください。

@sensit.v3

Sens'it V3 に対応しています。Sens'it V3 は SORACOM ユーザーコンソールでのお取り扱いはありませんが、お客様自身で購入して登録できます。登録にあたっては別途費用が発生しますので 料金ページ を参照してください。

フォーマットは、FAQ: バイナリパーサー "@sensit.v3" で変換された値の意味を教えてください を参照してください。

Sigfox Shield for Arduino

フォーマット名説明
@unashield

Sigfox Shield for Arduinounabiz-arduino ライブラリ で送信されるデータ形式に対応しています。

フォーマットは、FAQ: バイナリパーサー "@unashield" でどのような変換がされているかを教えてください を参照してください。

SORACOM LTE-M Button for Enterprise および SORACOM LTE-M Button Plus

フォーマット名説明
@buttonSORACOM LTE-M Button for Enterprise および SORACOM LTE-M Button Plus から送信されたデータから、clickTypeclickTypeNamebatteryLevel を出力します。ボタンクリック時のデータを SORACOM Harvest Data で確認する を実施してデバイスをセットアップすると、@button が設定されます。
@button.ifttt

IFTTT の Webhook に合わせて以下の値が割当たります。

  • value1 : clickTypeName (SINGLE / DOUBLE / LONG)
  • value2 : clickTypeName の日本語表記 (シングル / ダブル / ロング)
  • value3 : batteryLevel を 100 倍した値

clickTypeName および batteryLevel については、ボタンクリック時のデータを SORACOM Harvest Data で確認する を参照してください。

Lagoon 3 で可視化する場合は @button を利用してください

@button.ifttt を選択すると、文字列が出力されます。Harvest Data に保存された文字列は、Lagoon 3 では可視化できません。

GPS マルチユニット SORACOM Edition

フォーマット名説明
@gpsmultiunit

GPS マルチユニット SORACOM Edition (以下、GPS マルチユニット) から送信されるデータ形式に対応しています。

フォーマットは、送信されるデータフォーマット を参照してください。

そのほかのデバイス (特定のフォーマット)

フォーマット名説明
@msgpackMessagePack で送信されるデータ形式に対応しています。詳しくは、SORACOM 公式ブログの IoT デバイスのバイナリーデータを JSON 変換する「バイナリーパーサー」が MessagePack に対応! を参照してください。
@json

バイナリデータとして送信された JSON 形式のデータ (JSON オブジェクト) に対応しています。

@json を指定すると、データは変換されませんが、次のサービスに対して JSON 形式のデータとして出力されます。

@json は JSON オブジェクトにのみ対応しています

JSON 形式のデータのうち、JSON オブジェクトにのみ対応しています。12null など、値だけのデータは処理できません。

対応している例 (JSON オブジェクト)対応していない例 (JSON オブジェクト以外)
{"key": 12}12
{"date": null}null
{"message": "Hello"}"Hello"
{"boolean": false}false
{"array": [1, 2, 3]}[1, 2, 3]
@cbor

RFC 8949 CBOR (ConciseBinary Object Representation) で送信されるデータ形式に対応しています。ただし、日時型や大型整数 (Big Integer) などを表す時に使用される CBOR Tags 拡張をサポートしていません。

たとえば、以下の Python スクリプトで data を CBOR でエンコードしてから、Unified Endpoint に送信すると、バイナリパーサーでデコードできます。

import cbor2
import binascii
import socket

data = {
    "key": 12,
    "date": None,
    "message": "Hello",
    "binary": b'\x41\x42\x43\x44\x45',
    "boolean": False,
    "array": [1, 2, 3]
}

# エンコード
encoded_data = cbor2.dumps(data)
hex = str(binascii.hexlify(encoded_data), 'utf-8')
print(f"エンコード後の16進データ: {hex}")

# UDP でソケットを作成して、データを送信します
host = "uni.soracom.io"
port = 23080

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(encoded_data, (host, port))

# ソケットを閉じます
sock.close()

バイナリパーサーでデコードしたあとのデータは以下のとおりです。

  • binary は、CBOR の Byte string 型です。パディングなしの Base64 形式でエンコードされます。
{
  "key": 12,
  "date": null,
  "message": "Hello",
  "binary": "QUJDREU",
  "boolean": false,
  "array": [1, 2, 3],
  "binaryParserEnabled": true
}

CBOR Tag を利用したデータは処理できません。エラーメッセージが出力されます。