IFTTTのvalue1,2,3、少しわかった気がする。IFTTTでは、この変数名は融通が効かず、この変数名でbodyに引渡しやらないとダメのようだ。SORACOM Harvestでデータを可視化する際、バイナリパーサに「@sensit」を設定している(そもそもそういうふうに誘導されてた)ので、valueという文字列がない。
したがって、定義済の「@sensit」ではなく、独自にバイナリパーサの設定が必要。しかし、データ構造がわからない。
- Githubにデータ構造を入れてる人がいた(decodeのExcel) → https://github.com/sigfox/sensitv2-decoder
- sigfoxのsensit開発ページにもあった https://build.sigfox.com/sensit-for-developers#how-to-get-data-via-the-…
- バイナリパーサのリファレンス https://users.soracom.io/ja-jp/docs/binary-parser/custom-format/
そして、バイナリパーサを試せる砂場があった → 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メッセージには下記を設定
しばらくしてドアを開閉すると、出た。
わかりにくいんだが、一応目的は達した。
いったん。。
コメントを追加