WINGS
検索
⌃K

キューアプリ

App_CUE
TWELITE CUEには加速度センサーと磁気センサーが搭載されており、両方のセンサーのデータも出力メッセージに含まれます。
このページでは出力メッセージからそれらのセンサーデータの読み方について解説します。
書式はパルアプリと同様です。詳しい説明はこちらをご覧ください。

センサーデータの簡易的な読み方

以下のご案内はTWELITE CUEモード時のご案内です。
動作センサーパルモードの場合は、こちらをご確認ください。
また、開閉センサーパルモードの場合はこちらをご確認ください。
下記のデータ羅列は、: に始まり改行コードまでの16進数データをテキストで表現したものです。
:80000000CF7F7382019E3B0180050F003400038135001205040406000000113008020B8611300102042E000000018015044006FFF00010FC1815044106FFF00018FC1815044206FFF00010FC0015044306FFF80000FC1015044406FFF00010FC1815044506FFE00018FBF815044606FFE80000FC0015044706FFE80010FBF815044806FFE80010FC0815044906FFE80010FC080C0E[CR][LF]
上記は逐次解釈する書式ですので、厳密に解釈するのは煩雑です。
データの詳細情報はこちらをご参照ください。
そのため、各センサーの値の場所とその抽出例をご説明します。 その際、: を 0 文字目とします。

データの位置の表記法

以下の説明では、データの位置を示す際、Pythonのリストの指定の表記ような以下の書式でご案内します。
[データの開始位置:データの開始位置+文字数]
例えば、15文字目から4文字を指定する場合は、以下のように表記します。
[15:15+4]

加速度

加速度データは103文字目から時系列順でX、Y、Zに並んだ加速度が10個分格納されます。 加速度は、符号付整数で単位はmg(1重力加速度(g)の1/1000)です。 *データが12文字、ヘッダが8文字で、20文字ごとにデータが並ぶ。
[93:93+2] 80 磁気センサー
[103:103+12] FFF00010FC18 データ1 FFF0(X軸)/0010(Y軸)/FC18(Z軸)
[123:123+12] FFF00018FC18 データ2 FFF0(X軸)/0018(Y軸)/FC18(Z軸)
[143:143+12] FFF00010FC00 ...
[163:163+12] FFF80000FC10
[183:183+12] FFF00010FC18
[203:203+12] FFE00018FBF8
[223:223+12] FFE00018FBF8
[243:243+12] FFE80010FBF8
[263:263+12] FFE80010FC08
[283:283+12] FFE80010FC08 データ10

磁気センサー

磁気センサーは93文字目から2文字分です。 磁気センサーは下表の値を出力します。
磁気センサーデータ
意味
磁気センサーのデータ
意味
00
磁石が遠ざかった。
01
磁石のN極が近づいた。
02
磁石のS極が近づいた。
80
磁石が近くにない。(タイマーによる定期送信)
81
磁石のN極が近くにある。(タイマーによる定期送信)
82
磁石がS極が近くにある。(タイマーによる定期送信)
例えば、磁石が近くにない状態から、磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。
80 -- 80 -- 80 -- 01(※) -- 81 -- 81 --
※ 多くの場合は磁石のN極を検出したときに01になりますが、設置環境によっては、出力値が一定期間安定せず、02や稀に00が出力される場合があります。
また、磁石が近くにあるかだけ知りたい場合は、94文字目だけ確認し、0だったら磁石が近くにない、1または2の時は磁石が近くにあると判定します。

センサーのデータの抽出例

1サンプル目の加速度と磁気センサーのデータを取得するPythonの対話モードでの実行例です。 シリアルメッセージから、1サンプル目の加速度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、符号付の数値に変換します。 磁気センサーのデータをシリアル出力から抜き出し、上表に従って磁気センサーが検出している状態に変換し、加速度データと磁気センサーの情報を標準出力しております。
>>> t =':80000000CF7F7382019E3B0180050F003400038135001205040406000000113008020B8611300102042E000000018015044006FFF00010FC1815044106FFF00018FC1815044206FFF00010FC0015044306FFF80000FC1015044406FFF00010FC1815044506FFE00018FBF815044606FFE80000FC0015044706FFE80010FBF815044806FFE80010FC0815044906FFE80010FC080C0E'
>>> x = int(t[103:103+4], 16) # 103文字目から4文字(データ1のX軸)取り出し整数値へ変換
>>> x = (-65536 + x) if x >= 32768 else x # 符号付き16ビット整数の対応
>>> y = int(t[107:107+4], 16) # 103文字目から4文字(データ1のX軸)取り出し整数値へ変換
>>> y = (-65536 + y) if y >= 32768 else y # 符号付き16ビット整数の対応
>>> z = int(t[111:111+4], 16) # 103文字目から4文字(データ1のX軸)取り出し整数値へ変換
>>> z = (-65536 + z) if z >= 32768 else z # 符号付き16ビット整数の対応
>>> print("x=%d, y=%d, z=%d" % (x, y, z))
x=-16, y=16, z=-1000
>>> v = int(t[93:93+2], 16) # 63文字目から2文字取り出し、整数値に変換
>>> periodic = True if (v & 0x80) else False # 定期送信パケットかどうか調べる(Trueだったら定期送信)
>>> status = 'S' if (v & 0x4F) == 2 else 'N' if (v & 0x4F) == 1 else 'Open' # 磁気センサーの状態を取得する。
>>> print('Magnet: %s, %s' % (periodic, status))
Magnet: True, Open

アドレスなどのセンサー以外のデータ

出力メッセージは、加速度、磁気センサーのデータ以外に以下の情報が含まれております。
データ位置 データ例 意味
[1:1+8] 80000000 中継機のシリアルID
[9:9+2] AE LQI
[11:11+4] 0098 続き番号
[15:15+8] 810B6492 送信元のシリアルID
[23:23+2] 01 送信元の論理デバイスID
[25:25+2] 80 センサー種別(80で固定)
[27:27+2] 05 PAL基板バージョンとPAL基板ID(TWELITE CUEは05)

開閉センサーパルのデータの判別方法

親機・中継機アプリはTWELITE PALからだけではなく、様々なアプリのデータを受信することができるので、出力されたデータがどのアプリのデータか区別する必要があります。 TWELITE CUEの出力メッセージは、改行コード抜きで299文字(改行コードありでは301文字)で、ほかのセンサーパルのデータとは文字数が違うため、文字数で見分けると簡単です。 ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。
より厳密に区別するには、文字数と以下の項目を確認してください。
  • 1文字目が8であること
  • 15文字目が8であること
  • 25、26文字目が '80' であること
  • 27、28文字目が '05' であること

TWELITE CUEモード

出力例

:80000000B1001B810B64650180050F003400038135001205040403000000113008020D3411300102052E000000018015044006FC28FFB0001815044106FC28FFB0000815044206FC30FFB0FFF815044306FC30FFC0FFF815044406FC28FFB0000015044506FC38FFA8001015044606FC30FFB0FFF015044706FC30FFB8FFD815044806FC20FFB0000015044906FC40FFA80018A62C
^^^^^^^1^2^^^3^^^^^^^4^5^6^7^8^^^^^^^^^^^^^9^^^^^^^^^^^^^^^a^^^^^^^b^^^c^^^^^^^d^^^e^^^^^^^f^g^^^^^^^h^^^i^^^j^^^k^^^^^^^l^^^m^^^n^^^o ^p^q
意味
バイト数
データ例
備考
1
中継機シリアルID
4
80000000
2
LQI
1
B1
3
続き番号
2
001B
4
送信元シリアルID
4
810B6465
5
送信元LID
1
01
6
センサー種別
1
80
7
PAL IDとPAL Ver
1
05
TWELITE CUE
8
センサーデータ数
1
0F
15
9
センサーデータ0
7
00340003813500
a
センサーデータ1
8
1205040403000000
イベント参照
b
センサーデータ2 (ヘッダ)
4
11300802
2バイト、拡張ビット有 電圧(電源電圧) 詳しくはこちらを参照してください。
c
センサーデータ2
2
0D34
3350mV
d
センサーデータ3 (ヘッダ)
4
11300102
2バイト、拡張ビット有 電圧(ADC1) 詳しくはこちらを参照してください。
e
センサーデータ3
2
052E
1432mV
f
センサーデータ4 (ヘッダ)
4
00000001
1バイト拡張ビットなし
ホールIC
詳しくはこちらを参照してください。
g
センサーデータ4
1
80
変化なし、オープン (00: 磁石が離れた。 01: N極が近づいた 02: S局が近づいた 80: 変化なし(磁石なし) 81: 変化なし(N極が近くにある) 82: 変化なし(S極が近くにある))
h
センサーデータ5 (ヘッダ)
4
15044006
符号あり2バイト、拡張ビット有
加速度(1サンプル目)
詳しくはこちらを参照してください。
i
センサーデータ5(X軸)
2
FC28
X = 392mg
j
センサーデータ5(Y軸)
2
FFB0
Y = -800mg
k
センサーデータ5(Z軸)
2
0018
Z = 240mg
l
センサーデータ6 (ヘッダ)
4
15044106
符号あり2バイト、拡張ビット有
加速度(2サンプル目)
詳しくはこちらを参照してください。
m
センサーデータ6(X軸)
2
FC28
X = 176mg
n
センサーデータ6(Y軸)
2
FFB0
Y = -1248mg
o
センサーデータ6(Z軸)
2
0008
Z = -96mg
中略
p
チェックサム1
1
A6
1~pの1つ前までのCRC8
q
チェックサム2
1
2C
1~pまでのLRC

パケットプロパティ

00340003810402
^1^2^3^4^5^6^7
意味
バイト数
データ例
備考
1
各種情報ビット値
1
00
拡張バイトなし、符号なしChar
2
データソース
1
34
起床要因
3
拡張バイト
1
00
4
データ長
1
03
5
パケットID
1
81
0~127、MSBはイベントがあるかどうか 0もしくは0x80はADC1と電源電圧、イベント以外はデータがないことを示す
6
起床要因センサー
1
04
磁気センサー:0x00 温度:0x01 湿度:0x02 照度:0x03 加速度:0x04 DIO:0x31
タイマー:0x35
7
起床要因
1
02
送信要因 イベントが発生した:0x00 値が変化した:0x01 値が閾値を超えた:0x02 閾値を下回った:0x03 閾値の範囲に入った:0x04

イベント

1205040410000000
^1^2^3^4^5^6^7^8
意味
バイト数
データ例
備考
1
各種情報ビット値
1
12
拡張バイトあり、符号なしLong
2
データソース
1
05
イベント
3
拡張バイト
1
04
イベントの発生要因
磁気センサー:0x00 温度:0x01 湿度:0x02 照度:0x03 加速度:0x04
MSBが1の場合はデータ2にデータが存在する。
4
データ長
1
04
5
データ1
1
10
イベント発生要因が磁気センサーの場合
0x00(0):近くに磁石がない 0x01(1):磁石のN極が近くにある 0x02(2):磁石のS極が近くにある
イベント発生要因が加速度の場合
0x01(1)~0x06(6):さいころ 0x08(8):シェイク 0x10(16):ムーブ
6
データ2
3
000000
未使用