今回の記事の概要

前回の記事でSigfoxはデバイス、Sigfox回線、Sigfoxクラウドの3つに分けられると書きました。デバイスメーカーとSigfoxクラウド提供事業者が同じ場合、デバイスから送信されたデータをすぐにSigfoxクラウドでグラフィカルに確認する事ができます。今回はSens’itデバイスをSigfoxクラウドであるsensit.ioではなく、SORACOMに変更するので、デバイスから送られるバイナリデータを解析する必要があります。本記事ではSens’it Ver3のバイナリデータの解析までを行います。

SORACOMでSigfoxグループを作成してAzureにデータを送る手順

SORACOMでもHarvestという機能を使うとデータの収集・表示が出来るらしいのですが、

今回はSORACOMからさらにAzureにデータを送信し、データの処理や表示はAzure側で行います。

ここではSORACOMからAzureにデータを送信する手順を記載します。

  1. AzureでEvent Hubを作成します。

  2. 手順は省略しますが、Sens’itから受け取ったデータはEvent HubからBlobへファイル出力しています。

  3. Sigfoxグループを作成します。
    1. SORACOMのユーザーコンソールにログインし、左上のメニューから「Sigfoxグループ」を選択します。
    2. Sigfoxグループの一覧画面が表示されるので、「追加」を押下します。
    3. グループ名を設定します。
    4. ここに手順が記載されていますが、Sens’it Ver2の際はバイナリパーサーをONにしてフォーマットに「@sensit」と設定すると、Sens’itのデータをJSONデータに変換してくれましたが、Ver3はまだ未対応です。(2018年11月7日時点)なので今回はOFFにして先に進みます。
    5. 今回はAzureでデータを受け取るので、Funnel機能を利用してAzureのEvent Hubへデータを転送します。SORACOMでデータを収集・表示する場合はHarvestの設定を行います。
    6. ※注意 上記では送信データ形式をバイナリにしていますが、私の場合はAzure側でJSONに変換しています。場合によってはJSONにした方が幸せかもしれません。

    Sigfoxグループの設定は以上です。

  4. SigfoxデバイスにSigfoxグループを割り当てます。
    1. Sigfoxデバイス管理画面で、追加したSens’it Ver3の端末を選択し、操作→所属グループの変更を押下します。
    2. <

    3. 新しいグループに先ほど作成したグループを設定します。

    グループの割り当ては以上になります。設定に問題がなければ、Sens’itデバイスからAzureにデータが送信されます。

バイナリデータの解析
  • データの確認Azure側で受け取ったデータを確認すると以下のようなJSONデータになっています。

  •  {“operatorId”:”OP0062671599″,”timestamp”:1541496549226,”destination”:{“resourceUrl”:”https://XXXXXXXXXXXX.servicebus.windows.net/XXXXX/messages”,”service”:”eventhubs”,”provider”:”azure”},”credentialsId”:”XXXXXXXXXX”,”payloads”:{“seqNumber”:”78″,”lat”:”43.0″,”station”:”5158″,”snr”:”8.29″,”time”:”1541496546″,”device”:”XXXXXXA”,”rssi”:”-137.00″,”lng”:”141.0″,”data”:”de1a0001″},”sourceProtocol”:”sigfox”,”deviceId”:”XXXXXX”,”EventProcessedUtcTime”:”2018-11-06T09:29:10.9904081Z”,”PartitionId”:0,”EventEnqueuedUtcTime”:”2018-11-06T09:29:10.8350000Z”}

    “data”の”de1a0001″の部分がSens’itデバイスから送信されてきたデータの中身になります。

  • データの分析
    • 分析に必要なドキュメントはここにあります。この内容を基にデータの中身を分析します。
    • ドキュメントの4ページ・5ページに「3Data payload」というタイトルがあります。この部分にデータの何ビット目にどのような定義がされているのかが記載されています。




    • 上記のデータ定義を基に先ほどの取得したデータ”de1a0001″の内容を確認します。データは”de,1a,00,01”の4byteで構成されています。これを2進数に直すと”11011110″ “00011010” “00000000” “00000001”となります。左から0byte,1byte,2byte,3byteとなります。

      0byte目の定義を見てみると、最初の5bitがバッテリーレベル、後の3bitが予約済みとなっています。他も同じようにみていくと次のようになります。

    • 1byteの最初の5bitがsens’itで設定しているセンサーの種類となります。ここでは2進数の00011(10進数の3)なのでDoor Modeが設定されている事が分かります。
    • 続いて1byte目の最後の2bitを見ると2進数の10(10進数の2)となっています。マニュアルの6ページ目、3.7Door Statusを見ると、2はDoor is closedと記載されているので、ドアが閉じた際に送信されたデータという事が分かります。

    センサーの設定を他のものに変えた場合も、上記の要領で内容の確認を行う事が出来ます。次回はSORACOMのバイナリパーサーでデータをJSONに変換する手順をまとめたいと思います。