結論から先に書くと、下記ドキュメントから確認できます。
Sens’it Discovery - Payload Structure
実例があったほうが良いと思うので、自分が確認したかった内容も含め、説明したいと思います。
<具体的に確認したい内容>
起動モードは「振動(vibration)」で、1日1回、何回振動したか、データを取得したいと思います。
前提として、Sens'it V3のコールバック設定が済んでいるものとします。
Sens’it Discovery 取扱説明書 Ver3.0
https://www.kccs.co.jp/sigfox/news/kccs/20200331/pdf/pdf-index-01.pdf
P.10 コールバック設定
コールバックを設定していれば、sigfox backendからデータの参照が可能です。まずはデータの確認方法を説明します。
<データの確認方法>
1.下記URLにアクセスし、ログインします。
2.アカウント情報を入力し、Sign Inをクリック
3.Sigfox Backendのホーム画面で、Deviceタブをクリック
4.デバイス一覧が表示される。確認したいデバイスの、IDリンクをクリック
5.デバイスの詳細が表示される。左メニューからMESSAGESをクリック
6.[Data/Decoding]欄のデータを確認する。
[Data/Decoding]欄に表示されたデータが、デバイスから取得した情報になります。
今回は9/18に受信した「de200002d6003f0f8003113c」を実データとして説明します。
<データの中身の確認>
受信したデータは16進数であらわされています。
2進数に変換し、結果から確認することができます。
ドキュメントによると、はじめの4Byteがデータペイロード(デバイスからの受信データ)で残り8Byteが設定用のデータになります。
実例では下記データで説明したいと思います。
※一部わからないところもありましたので、悪しからず。。
・データペイロード(4Byte):de-20-00-02
・設定ペイロード(8Byte):d6-00-3f-0f-80-03-11-3c
まずは、データペイロードから、説明します。
・0Byte目の解析:0xde=0b1011,1110
7-3bit(0b10111=0d23) :バッテリーレベル
2-0bit(0b110=0d7):固定(Spare(0b110))
バッテリーレベルは下記計算式でボルトに変換できるようです。
Battery Voltage(V)=(Battery Level×0.05)+2.7
3.85V=(23×0.05)+2.7
・1Byte目の解析:0x20=0b0010,0000
7-3bit(0b00100=0d4) :動作モード
2bit(0b0=0d0):Button Alert Flag
1-0bit(0b0=0d0):動作モードごとのデータ
動作モードは4の場合は、振動モードになります。
Button Alert Flagは、ボタンを2回押下した場合に1になるようです。
動作モードごとのデータは、動作モードによって、そのデータの意味が異なります。
振動モードでは、0の場合は「No Vibration Detected.(振動は検出されませんでした)」になります。
おそらく、Priodicの場合は、必ず0になるようです。
・2Byte目の解析:0x00=0b0000,0000
7-0bit(0b00000000=0d0) :動作モードごとのデータ
動作モードごとのデータが設定されます。
振動モードの場合、[Event Count MSB]が設定されます。
振動の回数を定義しているようですが、意味はわかりませんでした。
おそらく、次の[Event Count LSB]の振動回数を超過した場合、カウントされると思われます。
・3Byte目の解析:0x02=0b0000,0010
7-0bit( 0b00000010=0d2) :動作モードごとのデータ
動作モードごとのデータが設定されます。
振動モードの場合、「Event Count LSB」が設定されます。
実例の場合、振動回数は2回で検出されています。
次に設定ペイロードを説明します。
設定ペイロード(8Byte):d6-00-3f-0f-80-03-11-3c
・0Byte目の解析:0xd6=0b1101,0110
7-6bit(0b11=0d3):メッセージ間隔
5bit(0b0=0d0) : Magnet Mode Flag
4bit(0b1=0d1) : Vibration Mode Flag
3bit(0b0=0d0) :Door Mode Flag
2bit(0b1=0d1) : light Mode Flag
1bit(0b1=0d1) : Temp Mode Flag
0bit(0b0=0d0) : Standby Mode Flag
メッセージ間隔は、メッセージを送信する間隔を設定します。
0d0は10分間隔
0d1は1時間間隔
0d2は6時間間隔
0d3は24時間間隔
実例の場合は、0d3なので、24時間間隔で送信されます。
Mode Flagは、各動作モードのメッセージ送信モードを定義します。
0d1は、定期的にメッセージを送信
0d0は、イベント検出時にメッセージを送信
・1Byte目の解析:0x00=0b0000,0000
7-6bit(0b00=0d0) :固定(Spare(0b00))
5-0bit(0b000000=0d0):温度の閾値(下限値)の設定
温度の閾値(下限値)は、設定した温度を下回った場合、イベントが発生します。
※閾値は-9~54度。
・2Byte目の解析:0x3f=0b0011,1111
7-6bit(0b00=0d0) :固定(Spare(0b00))
5-0bit(0b111111=0d63):温度の閾値(上限値)の設定
温度の閾値(上限値)は、設定した温度を超過した場合、イベントが発生します。
※閾値は-9~54度。
・3Byte目の解析:0x0f=0b0000,1111
7-4bit(0b0000=0d0) :湿度の閾値(下限値)の設定
3-0bit(0b1111=0d15):湿度の閾値(上限値)の設定
湿度の閾値は、設定した湿度を超えた場合にイベントが発生します。
※閾値は30%~90%。
・4Byte目の解析:0x80=0b1000,0000
7bit(0b1=0d1) :Limitaion Flag
6-0bit(0b000000=0d0):明るさの閾値
Limitaion Flagは、デューティ比の設定で使用します。
※デューティ比は、いまいち意味が分からなかった。。
明るさの閾値は、これまた超えた場合にイベントが発生します。
※1luxから636luxで設定できるとのこと。
・5Byte目の解析:0x03=0b0000,0011
7-0bit(0b00000011=0d3) :振動の感度の設定(加速度)
振動の感度の設定は(加速度)は5段階で設定できる。
0x10 Very little sensitivity
0x08 Not very sensitive
0x04 Standard
0x03 Sensitive
0x01 Very sensitive
・6Byte目の解析:0x11=0b0001,0001
7-6bit(0b00=0d0) :Spare(00)固定
5-4bit(0b01=0d1):次の振動検知の間隔
3-0bit(0b0001=0d1) :振動の感度の設定(周波数)
次の振動検知までの間隔は、下記値から設定します。
0d0 検出モードの終了
0d1 10秒
0d2 30秒
0d3 60秒
振動の感度の設定(周波数)は、若干あやふやですが、振動の周波数でも検知できるようです。
・7Byte目の解析:0x3c=0b0011,1100
7bit(0b0=0d0) :Reset bit
6-4bit(0b011=0d3):ドアモードの閾値(Open時)
3-0bit(0b1100=0d12) :ドアモードの閾値(Close時)
Reset bitはデバイスの現在のリセットし、再設定を行いします。
1が設定されていた場合、設定ペイロードの設定を反映するようです。
ドアモードの閾値は開閉アングルの感度を設定するようです。
あとがき
先日、Sensit.ioのWebサイトが閉鎖になりました。
Sens'it V3のデバイスデータも、そこから確認していたので、代わりの方法を探す道中で、今回データの確認に至りました。
今後も使用していきたいのですが、もともと実証実験用のデバイスらしいので、もう下火なんでしょうね。Sens'it。