テック・エバとして全国を駆け回ってます、松下です。
先日開始したSigfoxデバイスの出荷ですが、その中でも6種のセンサーを搭載したSens’itが大変好評をいただいております!
一方でSens’itが出力するデータはバイナリパーサー機能を駆使する必要があるため、「データを手軽に展開できないか?」というご要望も多くいただいております
そこで今回、バイナリパーサー機能に新たなフォーマット 定義済みフォーマット が追加されました!
「定義済みフォーマット」
Sens’itをご利用いただいている方は、まずバイナリパーサー機能のフォーマットに @sensit
とのみ入れて保存してみてください
すると、次のデータから下記のようなJSONが出力されるようになります!
(下記は整形済み)
{
"device": "XXXXXX",
"time": "1504856794",
"station": "XXXX",
"lat": "36.0",
"lng": "140.0",
"rssi": "-126.00",
"data": "816c1e71",
"seqNumber": "1406",
"mode": 1,
"modeText": "Temperature + Humidity",
"timeframe": 0,
"timeframeText": "10 mins",
"type": 0,
"typeText": "Regular, no alert",
"battery": 4.1,
"tempCLowPrecision": 23,
"tempFLowPrecision": 73.4,
"tempC": 26.75,
"tempF": 80.15,
"reedSwitchState": 0,
"humidity": 56.5,
"binaryParserEnabled": true
}
従来は data というキーに入っている値 816c1e71 をバイナリパーサー機能で解く必要がありました
注目いただきたいのは humidity や tempC という値が出るようになっています。他のモードで送信すれば、モードに合わせたJSONが出力されます
このJSONはSORACOM Harvestはもちろん、SORACOM FunnelやSORACOM Beamでの送信時のデータペイロードになりますので、今まで以上にクラウド活用が容易となるわけです
解説
バイナリパーサー機能は、バイト/ビットをデータ仕様に従ってフォーマット文字列を組み立てることで利用ができます
今回使えるようになりました @ から始まるフォーマットは SORACOM で実装&提供するフォーマットであり、ご利用者がフォーマット文字列を組み立てる必要はありません
注) @sensit
は Sens’it v2 に対応しています。Sens’it v3 には対応していません。当社で販売しているSens’itは Sens’it v2 となります。
対応デバイスと定義済みフォーマット文字列
全2種です(2017年10月現在)
- Sens’it :
@sensit
- Sigfox Shield for Arduino :
@unashield
注) @sensit
は Sens’it v2 に対応しています。Sens’it v3 には対応していません。当社で販売しているSens’itは Sens’it v2 となります。
binaryParserEnabled について
よく見るとJSONデータの中に binaryParserEnabled: true というキー/値が入っています
今回のアップデートで一緒に入った機能で、出力されたJSONがバイナリパーサーによる解析済みなのか否かを判定することができます
- バイナリパーサー機能によって解析済み:
"binaryParserEnabled": true
- バイナリパーサー機能を利用していない:
"binaryParserEnabled": false
もしくは このキー/値自体が存在しない
定義済みフォーマットの充実に向けて
現在は解析がかなり難しいデバイスに絞って定義済みフォーマットを実装&提供しています
また、SigfoxのみならずLoRaWANデバイスでも利用できる機能であるため、今後より多くのデバイスのフォーマットに対応させたいと思っておりますので、是非とも皆さんのお声をいただけると助かります!
ソラコム 松下