Sens'itを試す3

ee9king に投稿

IFTTTのvalue1,2,3、少しわかった気がする。IFTTTでは、この変数名は融通が効かず、この変数名でbodyに引渡しやらないとダメのようだ。SORACOM Harvestでデータを可視化する際、バイナリパーサに「@sensit」を設定している(そもそもそういうふうに誘導されてた)ので、valueという文字列がない。

したがって、定義済の「@sensit」ではなく、独自にバイナリパーサの設定が必要。しかし、データ構造がわからない。

そして、バイナリパーサを試せる砂場があった → https://binary-parser-playground.soracom.io

@sensitを使った時に得られていたデータは、Harvestを使ったデータの中に入っている。

{
"device":"1234567",
"time":"1685867150",
"data":"cb66ffba",
"seqNumber":"1218",
"lqi":"Good",
"operatorName":"SIGFOX_Japan_KCCS",
"countryCode":"392",
"mode":3,
"modeText":"Door",
"timeframe":1,
"timeframeText":"1 hour",
"type":2,
"typeText":"Alert",
"battery":3.8,
"tempCLowPrecision":23,
"tempFLowPrecision":73.4,
"numAlerts":186,
"binaryParserEnabled":true
}

"data"がsigfoxクラウドからのpayloadになる。"battery"をvalue1という名前に変えたかったのだが定義済みのパーサを編集することはできなさそう。

batteryの値は2つの値から構成される。Battery-MSB=1バイト目のbit7、Battery-LSB=2バイト目のb4-b7の4bit。MSB*16+LSBを{value}として、

Combine MSB & LSB, and use the following formula to get the value in V (between 2.7 & 4.25V) {value} * 0.05 * 2.7

decodeのExcelファイル、開発ページにある説明から、batteyの電圧はbitならびが連続していない二つの値から算出されている。この二つの値を使うところがどうしてもわからない。なので、それぞれ別々に算出して、両方の値を表示するようにしてみる。バイナリパーサ欄には下記を書く

value1:1:uint:4:3:*0.05+2.7 value2:0:uint:1:7:*16*0.05 value3:1:uint:4:7:*6.4-20

IFTTTのLINEメッセージには下記を設定

しばらくしてドアを開閉すると、出た。

わかりにくいんだが、一応目的は達した。

いったん。。

 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。