TWELTIE APPSのデータを本アプリですべて同時に受信することができます。
データを受信したときのシリアル出力書式は以下のページをご覧ください。
セクションの複数ページをまとめています。 印刷またはPDF形式で保存...
TWELTIE APPSのデータを本アプリですべて同時に受信することができます。
データを受信したときのシリアル出力書式は以下のページをご覧ください。
:78811501C98201015A000391000C2E00810301FFFFFFFFFB
^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^b^c^de1e2e3e4ef^g
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信元の論理デバイスID | 78 | 送信元の論理デバイスIDは0x78 | |
2 | 1 | コマンドID | 81 | IO状態の通知 | |
3 | 1 | パケット識別子 | 15 | | アプリケーションIDより生成される |
4 | 1 | プロトコルバージョン | 01 | | 01 で固定 |
5 | 1 | LQI | C9 | 201 | 0が最小で255が最大 |
6 | 4 | 送信元のシリアルID | 8201015A | 送信元のシリアルIDは201015A | |
7 | 1 | 宛先の論理デバイスID | 00 | 親機宛 | |
8 | 2 | タイムスタンプ | 0391 | 約14.3秒 | 1秒で64カウント |
9 | 1 | 中継フラグ | 00 | 中継してない | ※1 参照 |
a | 2 | 電源電圧[mV] | 0C2E | 3118mV | |
b | 1 | 未使用 | 00 | | |
c | 1 | DI の状態ビット | 81 | DI1がON(Low) | DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8)。1がOn(Lowレベル)。 MBSが1だったら定期送信。 |
d | 1 | DI の変更状態ビット | 03 | DI1とDI2が変更対象 | DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8)。1が変更対象。 |
e1 | 1 | AI1の変換値 | 01 | 16mV | ※2、※3 参照 |
e2 | 1 | AI2の変換値 | FF | 未使用 | ※2、※3 参照 |
e3 | 1 | AI3の変換値 | FF | 未使用 | ※2、※3 参照 |
e4 | 1 | AI4の変換値 | FF | 未使用 | ※2、※3 参照 |
ef | 1 | AI1~AI4の補正値 | FF | 未使用 | LSBから順に2ビットずつ補正値、LSB側が AI1、MSB側が AI4 ※2、※3 参照 |
g | 1 | チェックサム | FB | |
※1 中継フラグは中継の回数を意味します。中継をしていない時は0になります。 ※2 AD値の復元には以下のように計算します。
AI1[mV] = (e1 * 4 + ef1) * 4 AI2[mV] = (e2 * 4 + ef2) * 4 AI3[mV] = (e3 * 4 + ef3) * 4 AI4[mV] = (e4 * 4 + ef4) * 4
※3 AI は未使用(VCC接続) の場合、対応する e1 ~ e4 値は 0xFF です。
:780100112233AABBCCDD13
^1^2^^^^^^^^^^^^^^^3^4
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信元の論理デバイスID | 78 | 送信元の論理デバイスIDは0x78 | |
2 | 1 | コマンドID | 01 | 任意データの送受信 | |
3 | N | データ | 00112233AABBCCDD | | |
4 | 1 | チェックサム | 13 |
:78811202848201015A003FC9000001000100010086
^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^^^b^^^c^d^e
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信元の論理デバイスID | 78 | 送信元の論理デバイスIDは0x78 | |
2 | 1 | コマンドID | 81 | IO状態の通知 | |
3 | 1 | パケット識別子 | 12 | アプリケーションIDより生成される | |
4 | 1 | プロトコルバージョン | 02 | 02 で固定 | |
5 | 1 | LQI | 84 | 132 | (0が最小で255が最大) |
6 | 4 | 送信元のシリアルID | 8201015A | 送信元のシリアルIDは201015A | |
7 | 1 | 宛先の論理デバイスID | 00 | 親機宛 | |
8 | 2 | タイムスタンプ | 3FC9 | 約255.1秒 | 1秒で64カウント |
9 | 1 | 中継フラグ | 00 | 中継してない | ※1 参照 |
a | 2 | DI の状態ビット | 0001 | DI1がON(Low) | LSBからDI1、DI2… |
b | 2 | DI の変更状態ビット | 0001 | DI1が変更対象 | LSBからDI1、DI2… |
c | 2 | DIの割込状態ビット | 0001 | DI1が割り込み入力された(変化した)。 | |
d | 1 | 未使用 | 00 | ||
e | 1 | チェックサム | 86 |
※1 中継フラグは中継の回数を意味します。中継をしていない時は0になります。
本アプリでは書式モードの電文のみ受信可能です。
透過モードやチャットモードのパケットを受信した場合の出力は未定義ですので、ご注意ください。
:780100112233AABBCCDD13
^1^2^^^^^^^^^^^^^^^3^4
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信元の論理デバイスID | 78 | 送信元の論理デバイスIDは0x78 | |
2 | 1 | 応答ID | 01 | 任意の0x00~0x7Fの値 | |
3 | N | データ | 00112233AABBCCDD | ||
4 | 1 | チェックサム | 01 |
:78A0028201015AFFFFFFFFA8000700112233AABBCCC6
^1^2^3^^^^^^^4^^^^^^^5^6^^^7^^^^^^^^^^^^^8^9
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信元の論理デバイスID | 78 | 送信元の論理デバイスIDは0x78 | |
2 | 1 | コマンド種別 | A0 | 拡張形式 | 0xA0固定 |
3 | 1 | 応答ID | 02 | 任意の0x00~0x7Fの値 | |
4 | 4 | 送信元のシリアルID | 8201015A | 送信元のシリアルIDは201015A | |
5 | 4 | 送信先のシリアルID | FFFFFFFF | FFFFFFFFのときは論理デバイスIDを指定して送信している。 | |
6 | 1 | LQI | A8 | 168 | 0が最小で255が最大 |
7 | 2 | データのバイト数 | 0007 | 7バイト | |
8 | N | データ | 00112233AABBCC | | |
9 | 1 | チェックサム | C6 | |
以下は、主なセンサー接続時のデータの出力例です。
:80000000B700628201015A0010DF08FD09A300000000E9
^^^^^^^1^2^^^3^^^^^^^4^5^6^7^^^8^^^9^^^^^^^a^b
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | 中継していない場合は80000000 |
2 | 1 | LQI | B7 | 168 | 0が最小で255が最大 |
3 | 2 | 続き番号 | 0062 | 98 | |
4 | 4 | 送信元のシリアルID | 8201015A | 送信元のシリアルIDは8201015A | |
5 | 1 | 送信元の論理デバイスID | 00 | 送信元の論理デバイスIDは00 | |
6 | 1 | センサー種別 | 10 | アナログセンサー | |
7 | 1 | 電源電圧 [mV] | DF | 3330mV | 電源電圧の計算方法を参照 |
8 | 2 | ADC1の電圧 | 08FD | 2301mV | |
9 | 2 | ADC2の電圧 | 09A3 | 2467mV | |
a | 4 | 未使用 | 00000000 | ||
b | 1 | チェックサム | E9 |
:8000000063001781013C850035DF057702F2000000FF96FFF0BB
^^^^^^^1^2^^^3^^^^^^^4^5^6^7^^^8^^^9^a^^^b^^^c^^^d^e
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | 中継していない場合は80000000 |
2 | 1 | LQI | 63 | 99 | 0が最小で255が最大 |
3 | 2 | 続き番号 | 0017 | 23 | |
4 | 4 | 送信元のシリアルID | 81013C85 | 送信元のシリアルIDは1013C85 | |
5 | 1 | 送信元の論理デバイスID | 00 | 送信元の論理デバイスIDは00 | |
6 | 1 | センサー種別 | 35 | 加速度センサー(ADXL34x) | |
7 | 1 | 電源電圧 [mV] | DF | 3330mV | 電源電圧の計算方法を参照 |
8 | 2 | ADC1の電圧 | 0577 | 1399mV | |
9 | 2 | ADC2の電圧 | 02F2 | 754mV | |
a | 1 | センサーモード番号 | 00 | 通常モード | |
b | 2 | X軸の加速度 | 0000 | 0mg | 単位はmg*10 |
c | 2 | Y軸の加速度 | FF96 | -1060mg | 単位はmg*10 |
d | 2 | Z軸の加速度 | FFF0 | -160mg | 単位はmg*10 |
e | 1 | チェックサム | BB |
:800000009C00118201015A00FEDF000709A300010064
^^^^^^^1^2^^^3^^^^^^^4^5^6^7^^^8^^^9^a^b^c^d
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | 中継していない場合は80000000 |
2 | 1 | LQI | 9C | 156 | 0が最小で255が最大 |
3 | 2 | 続き番号 | 0062 | 98 | |
4 | 4 | 送信元のシリアルID | 8201015A | 送信元のシリアルIDは201015A | |
5 | 1 | 送信元の論理デバイスID | 00 | 送信元の論理デバイスIDは00 | |
6 | 1 | センサー種別 | 10 | スイッチ | |
7 | 1 | 電源電圧 [mV] | DF | 3330mV | 電源電圧の計算方法を参照 |
8 | 2 | ADC1の電圧 | 0007 | 7mV | |
9 | 2 | ADC2の電圧 | 09A3 | 2467mV | |
a | 1 | センサーモード番号 | 00 | 立ち下がり検出モード | 0:立ち下り検出モード 1:立ち上り検出モード |
b | 1 | DI1の状態 | 01 | ON(Low) | 1がON(Low) |
c | 1 | 未使用 | 00 | ||
d | 1 | チェックサム | 64 |
読み値が170(0xAA)以下の場合
電源電圧[mV] = 1950+読み値*5
読み値が170(0xAA)より大きいの場合
電源電圧[mV] = 2800+(読み値-170)*10
下記のデータ羅列は、: に始まり改行コードまでの16進数データをテキストで表現したものです。
:80000000CF7F7382019E3B0180050F003400038135001205040406000000113008020B8611300102042E000000018015044006FFF00010FC1815044106FFF00018FC1815044206FFF00010FC0015044306FFF80000FC1015044406FFF00010FC1815044506FFE00018FBF815044606FFE80000FC0015044706FFE80010FBF815044806FFE80010FC0815044906FFE80010FC080C0E[CR][LF]
上記が逐次解釈する書式ですので、厳密に解釈するのが煩雑です。
そのため、以下に使用するセンサーパルごとのデータのある場所とその抽出例のコードを示します。
その際、: を 0 文字目とします。
以下の説明では、データの位置を示す際、Pythonのリストの指定の表記ような以下の書式でご案内します。
[データの開始位置:データの開始位置+文字数]
例えば、15文字目から4文字を指定する場合は、以下のように表記します。
[15:15+4]
開閉センサーパルからのデータを受信すると以下のような出力メッセージがシリアル出力されます。
:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E[CR][LF]
磁気センサーのデータは63文字目から2文字分です。
磁気センサーは下表の値を出力します。
磁気センサーデータ | 意味 |
---|---|
磁気センサーのデータ | 意味 |
00 | 磁石が遠ざかった。 |
01 | 磁石のN極が近づいた。 |
02 | 磁石のS極が近づいた。 |
80 | 磁石が近くにない。(タイマーによる定期送信) |
81 | 磁石のN極が近くにある。(タイマーによる定期送信) |
82 | 磁石がS極が近くにある。(タイマーによる定期送信) |
例えば、磁石が近くにない状態から、磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。
80 -- 80 -- 80 -- 01(※) -- 81 -- 81 --
※ 多くの場合は磁石のN極を検出したときに01になりますが、設置環境によっては、出力値が一定期間安定せず、02や稀に00が出力される場合があります。
また、磁石が近くにあるかだけ知りたい場合は、64文字目だけ確認し、0だったら磁石が近くにない、1または2の時は磁石が近くにあると判定します。
以下は磁気センサーの状態を抜き出すためのPythonの対話モードでの実行例です。
以下の例では、63文字目と64文字目を抜き出して数値に変換し、上表に従って磁気センサーが検出している状態に変換し、標準出力しております。
>>> t = ':80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E'
>>> v = int(t[63:63+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: False, N
出力メッセージは、磁気センサーのデータ以外に以下の情報が含まれております。
データ位置 データ例 意味
[1:1+8] 80000000 中継機のシリアルID
[9:9+2] A8 LQI
[11:11+4] 001C 続き番号
[15:15+8] 82012B1E 送信元のシリアルID
[23:23+2] 01 送信元の論理デバイスID
[25:25+2] 80 センサー種別(80で固定)
[27:27+2] 81 PAL基板バージョンとPAL基板ID(開閉センサーパルは81)
親機・中継機アプリはTWELITE PALからだけではなく、様々なアプリのデータを受信することができるので、出力されたデータがどのアプリのデータか区別する必要があります。
開閉センサーパルの出力メッセージは、改行コード抜きで69文字(改行コードありでは71文字)で、ほかのセンサーパルのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。
より厳密に区別するには、文字数と以下の項目を確認してください。
環境センサーパルからのデータを受信すると以下のような出力メッセージがシリアル出力されます。
:8000000084811F810EFF6D04808205113008020AEB11300102035A0501000209E3010200020E3A02030004000001BE6C00[CR][LF]
温度などのセンサーデータは63文字目から94文字目までに含まれております。
各データの位置やデータ形式は以下の通りです。
データ位置 意味
[63:63+4] 温度(符号付整数、単位は°Cの100倍(23.56°C→2356))
[75:75+4] 湿度(符号無整数、単位は%の100倍(25.99%→2599))
[87:87+8] 照度(符号無整数、単位はLux)
以下は、環境センサーパルのデータを取得するためのPythonの対話モードでの実行例です。
出力メッセージから、温度、湿度、照度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、温度は符号付の数値に変換します。
そのあと、センサーのデータを出力しますが、温度と湿度データは100倍されたデータですので、出力時に100で割った値を出力しています。
>>> t = ':8000000084811F810EFF6D04808205113008020AEB11300102035A0501000209E3010200020E3A02030004000001BE6C00'
>>> temp = int(t[63:63+4], 16) # 63文字目から4文字取り出し、整数値に変換
>>> temp = (-65536 + temp) if temp >= 32768 else temp # 符号付き16ビット整数の対応
>>> hum = int(t[75:75+4], 16)
>>> illum = int(t[87:87+8], 16)
>>> print('temperature: %f' % ( temp/100.0 ))
temperature: 25.310000
>>> print('humidity: %f' % ( hum/100.0 ))
humidity: 36.420000
>>> print('illuminance: %d' % illum)
illuminance: 446
出力メッセージは、温湿度、照度センサーのデータ以外に以下の情報が含まれております。
データ位置 データ例 意味
[1:1+8] 80000000 中継機のシリアルID
[9:9+2] 84 LQI
[11:11+4] 8114 続き番号
[15:15+8] 810EFF6D 送信元のシリアルID
[23:23+2] 04 送信元の論理デバイスID
[25:25+2] 80 センサー種別(80で固定)
[27:27+2] 82 PAL基板バージョンとPAL基板ID(開閉センサーパルは81)
親機・中継機アプリはTWELITE PALからだけではなく、様々なアプリのデータを受信することができるので、出力メッセージがどのアプリの出力か区別する必要があります。
環境センサーパルの出力メッセージは、改行コード抜きで99文字(改行コードありでは101文字)で、ほかのセンサーパルなどのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。
より厳密に区別するには、文字数と以下の項目を確認してください。
動作センサーパルからのデータを受信すると以下のような出力メッセージがシリアル出力されます。
:80000000BA002382011CEF01808312113008020D0211300102055C1504400600100010045015044106000800100430150442060000001004381504430600080018043015044406000000180458150445060000002004381504460600080018042815044706FFE80010042015044806FFF00010043815044906FFE80018043015044A06FFF80018044015044B06FFF80018041815044C0600000010042015044D0600000028045015044E0600000008043815044F0600000018043828A5[CR][LF]
加速度データは63文字目から時系列順でX、Y、Zに並んだ加速度が16個分格納されます。
加速度は、符号付整数で単位はmg(1重力加速度(g)の1/1000)です。
*データが12文字、ヘッダが8文字で、20文字ごとにデータが並びます。
データ位置 データ例 意味
[63:63+12] 001000100450 データ1 0010(X軸)/0010(Y軸)/0450(Z軸)
[83:83+12] 000800100430 データ2 0008(X軸)/0010(Y軸)/0430(Z軸)
[103:103+12] 000000100438 ...
[123:123+12] 000800180430
[143:143+12] 000000180458
[163:163+12] 000000200438
[183:183+12] 000800180428
[203:203+12] FFE800100420
[223:223+12] FFF000100438
[243:243+12] FFE800180430
[263:263+12] FFF800180440
[283:283+12] FFF800180418
[303:303+12] 000000100420
[323:323+12] 000000280450
[343:343+12] 000000080438
[363:363+12] 000000180438 データ16
以下は、1サンプル目の加速度を取得するためのPythonの対話モードでの実行例です。
出力メッセージから、1サンプル目の加速度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、符号付の数値に変換します。
変換後、加速度データを出力します。
>>> t = ':80000000BA002382011CEF01808312113008020D0211300102055C1504400600100010045015044106000800100430150442060000001004381504430600080018043015044406000000180458150445060000002004381504460600080018042815044706FFE80010042015044806FFF00010043815044906FFE80018043015044A06FFF80018044015044B06FFF80018041815044C0600000010042015044D0600000028045015044E0600000008043815044F0600000018043828A5'
>>> x = int(t[63:63+4], 16) # 63文字目から4文字取り出し、整数値に変換(X軸)
>>> x = (-65536 + x) if x >= 32768 else x # 符号付き16ビット整数の対応
>>> y = int(t[67:67+4], 16) # 67文字目から4文字取り出し、整数値に変換(Y軸)
>>> y = (-65536 + y) if y >= 32768 else y # 符号付き16ビット整数の対応
>>> z = int(t[71:71+4], 16) # 63文字目から4文字取り出し、整数値に変換(Z軸)
>>> z = (-65536 + z) if z >= 32768 else z # 符号付き16ビット整数の対応
>>> print('x:%d, y:%d, z:%d' % ( x, y, z ))
x:16, y:16, z:1104
出力メッセージは、加速度センサーのデータ以外に以下の情報が含まれております。
データ位置 データ例 意味
[1:1+8] 80000000 中継機のシリアルID
[9:9+2] BA LQI
[11:11+4] 0023 続き番号
[15:15+8] 82011CEF 送信元のシリアルID
[23:23+2] 01 送信元の論理デバイスID
[25:25+2] 80 センサー種別(80で固定)
[27:27+2] 83 PAL基板バージョンとPAL基板ID(開閉センサーパルは81)
親機・中継機アプリはTWELITE PALからだけではなく、様々なアプリのデータを受信することができるので、出力メッセージがどのアプリのデータか区別する必要があります。
動作センサーパルの出力メッセージは、改行コード抜きで379文字(改行コードありでは381文字)で、ほかのセンサーパルなどのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように出力メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。
より厳密に区別するには、文字数と以下の項目を確認してください。
以下は、パルごとのデータの出力例です。
:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E
^^^^^^^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
0 10 20 30
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | |
2 | 1 | LQI | A8 | 168 | |
3 | 2 | 続き番号 | 001C | 28 | |
4 | 4 | 送信元のシリアルID | 82012B1E | 送信元のシリアルIDは2012B1E | |
5 | 1 | 送信元の論理デバイスID | 01 | 送信元の論理デバイスIDは01 | |
6 | 1 | センサー種別 | 80 | ||
7 | 1 | PAL基板バージョンとPAL基板ID | 81 | 開閉センサーパル Ver.1 | |
8 | 1 | センサーデータの数 | 03 | 3つ | |
9 | 1 | 各種情報ビット値 | 11 | 拡張バイトあり | |
a | 1 | データソース | 30 | ADC | |
b | 1 | 拡張バイト | 08 | 電源電圧 | |
c | 1 | データ長 | 02 | 2バイト | |
d | 2 | データ | 0D0C | 3340mV | |
e | 1 | 各種情報ビット値 | 11 | 拡張バイトあり | |
f | 1 | データソース | 30 | ADC | |
g | 1 | 拡張バイト | 01 | ADC1 | |
h | 1 | データ長 | 02 | 2バイト | |
i | 2 | データ | 03E4 | 996mV | |
j | 1 | 各種情報ビット値 | 00 | 拡張バイトなし 符号なしChar型 | |
k | 1 | データソース | 00 | 磁気 | |
l | 1 | 拡張バイト | 00 | 0 | |
m | 1 | データ長 | 01 | 1バイト | |
n | 1 | データ | 01 | 磁石(N極)が近づいた | 00: 磁石が離れた。 |
o | 1 | チェックサム1 | EC | ||
p | 1 | チェックサム2 | 6E |
:8000000084811F810EFF6D04808205113008020AEB11300102035A0501000209E3010200020E3A02030004000001BE6C00
^^^^^^^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^r^^^s^t^u^v^w^^^^^^^x^y^z
0 10 20 30 40
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | |
2 | 1 | LQI | 84 | 132 | |
3 | 2 | 続き番号 | 811F | 33055 | |
4 | 4 | 送信元のシリアルID | 810EFF6D | 送信元のシリアルIDは810EFF6D | |
5 | 1 | 送信元の論理デバイスID | 04 | 送信元の論理デバイスIDは04 | |
6 | 1 | センサー種別 | 80 | ||
7 | 1 | PAL基板バージョンとPAL基板ID | 82 | 環境センサーパル Ver.1 | |
8 | 1 | センサーデータの数 | 05 | 5つ | |
9 | 1 | 各種情報ビット値 | 11 | 拡張バイトあり | |
a | 1 | データソース | 30 | ADC | |
b | 1 | 拡張バイト | 08 | 電源電圧 | |
c | 1 | データ長 | 02 | 2バイト | |
d | 2 | データ | 0AEB | 2795mV | |
e | 1 | 各種情報ビット値 | 11 | 拡張バイトあり | |
f | 1 | データソース | 30 | ADC | |
g | 1 | 拡張バイト | 01 | ADC1 | |
h | 1 | データ長 | 02 | 2バイト | |
i | 2 | データ | 035A | 858mV | |
j | 1 | 各種情報ビット値 | 05 | 拡張バイトなし 符号ありShort | |
k | 1 | データソース | 01 | 温度 | |
l | 1 | 拡張バイト | 00 | 0 | |
m | 1 | データ長 | 02 | 2バイト | |
n | 2 | データ | 09E3 | 25.31°C | |
o | 1 | 各種情報ビット値 | 01 | 拡張バイトなし 符号なしShort | |
p | 1 | データソース | 02 | 湿度 | |
q | 1 | 拡張バイト | 00 | 0 | |
r | 1 | データ長 | 02 | 2バイト | |
s | 2 | データ | 0E3A | 36.42% | |
t | 1 | 各種情報ビット値 | 02 | 拡張バイトなし 符号ありLong | |
u | 1 | データソース | 03 | 照度 | |
v | 1 | 拡張バイト | 00 | 0 | |
w | 1 | データ長 | 04 | 4バイト | |
x | 4 | データ | 000001BE | 446 lux | |
y | 1 | チェックサム1 | 6C | ||
z | 1 | チェックサム2 | 00 |
:80000000BA002382011CEF01808312113008020D0211300102055C1504400600100010045015044106000800100430150442060000001004381504430600080018043015044406000000180458150445060000002004381504460600080018042815044706FFE80010042015044806FFF00010043815044906FFE80018043015044A06FFF80018044015044B06FFF80018041815044C0600000010042015044D0600000028045015044E0600000008043815044F0600000018043828A5
^^^^^^^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^r^^^^^^^^^^^s ... ^t^u^v^w^^^^^^^^^^^x^y^z
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | |
2 | 1 | LQI | BA | 186 | |
3 | 2 | 続き番号 | 0023 | 35 | |
4 | 4 | 送信元のシリアルID | 82011CEF | 送信元のシリアルIDは82011CEF | |
5 | 1 | 送信元の論理デバイスID | 01 | 送信元の論理デバイスIDは01 | |
6 | 1 | センサー種別 | 80 | ||
7 | 1 | PAL基板バージョンとPAL基板ID | 83 | 動作センサーパル Ver.1 | |
8 | 1 | センサーデータの数 | 12 | 18 | |
9 | 1 | 各種情報ビット値 | 11 | 拡張バイトあり | |
a | 1 | データソース | 30 | ADC | |
b | 1 | 拡張バイト | 08 | 電源電圧 | |
c | 1 | データ長 | 02 | 2バイト | |
d | 2 | データ | 0D02 | 3330mV | |
e | 1 | 各種情報ビット値 | 11 | 拡張バイトあり | |
f | 1 | データソース | 30 | ADC | |
g | 1 | 拡張バイト | 01 | ADC1 | |
h | 1 | データ長 | 02 | 2バイト | |
i | 2 | データ | 055C | 1372mV | |
j | 1 | 各種情報ビット値 | 15 | 拡張バイトあり 符号ありShort | |
k | 1 | データソース | 04 | 加速度 | |
l | 1 | 拡張バイト | 40 | サンプリング周波数 : 100Hz 0サンプル目 | |
m | 1 | データ長 | 06 | 6バイト | |
n | 2 | データ | 001000100450 | X : 16mg Y : 16mg Z : 1104mg | |
o | 1 | 各種情報ビット値 | 15 | 拡張バイトあり 符号ありShort | |
p | 1 | データソース | 04 | 加速度 | |
q | 1 | 拡張バイト | 41 | サンプリング周波数 : 100Hz 1サンプル目 | |
r | 1 | データ長 | 06 | 2バイト | |
s | 2 | データ | 000800100430 | X : 8mg Y : 16mg Z : 1072mg | |
… | |||||
t | 1 | 各種情報ビット値 | 15 | 拡張バイトあり 符号ありShort | |
u | 1 | データソース | 04 | 加速度 | |
v | 1 | 拡張バイト | 4F | サンプリング周波数 : 100Hz 15サンプル目 | |
w | 1 | データ長 | 06 | 6バイト | |
x | 4 | データ | 000000180438 | X : 0mg Y : 24mg Z : 1080mg | |
y | 1 | チェックサム1 | 28 | ||
z | 1 | チェックサム2 | A5 |
:80000000C9BBC082014C3501808403113008020D0C1130010203F9120504041000000097C6
^^^^^^^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
0 10 20 30
番号 | バイト数 | 意味 | データ例 | データ例の内容 | 備考 |
---|---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継無し | |
2 | 1 | LQI | CQ | 186 | |
3 | 2 | 続き番号 | BBC0 | 48064 | |
4 | 4 | 送信元のシリアルID | 82014C35 | 送信元のシリアルIDは82014C35 | |
5 | 1 | 送信元の論理デバイスID | 01 | 送信元の論理デバイスIDは01 | |
6 | 1 | センサー種別 | 80 | ||
7 | 1 | PAL基板バージョンとPAL基板ID | 84 | 通知パル Ver.1 | |
8 | 1 | センサーデータの数 | 03 | 3 | |
9 | 1 | 各種情報ビット値 | 11 | 拡張バイトあり 符号なしShort型 | |
a | 1 | データソース | 30 | ADC | |
b | 1 | 拡張バイト | 08 | 電源電圧 | |
c | 1 | データ長 | 02 | 2バイト | |
d | 2 | データ | 0D0C | 3340mV | |
e | 1 | 各種情報ビット値 | 11 | 拡張バイトあり 符号なしShort型 | |
f | 1 | データソース | 30 | ADC | |
g | 1 | 拡張バイト | 01 | ADC1 | |
h | 1 | データ長 | 02 | 2バイト | |
i | 2 | データ | 03F9 | 1017mV | |
j | 1 | 各種情報ビット値 | 12 | 拡張バイトあり符号なしLong | |
k | 1 | データソース | 05 | イベント | |
l | 1 | 拡張バイト | 04 | 加速度によるイベント | |
m | 1 | データ長 | 04 | 4バイト | |
n | 1 | データ1 | 10 | イベント0x10(16)が発生 | 加速度の場合 |
o | 3 | データ2 | 000000 | 0 | 将来の拡張用。現在は未使用 |
p | 1 | チェックサム1 | 28 | ||
q | 1 | チェックサム2 | A5 |
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文字)で、ほかのセンサーパルのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。
より厳密に区別するには、文字数と以下の項目を確認してください。
: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バイト、拡張ビット有 |
e | センサーデータ3 | 2 | 052E | 1432mV |
f | センサーデータ4 (ヘッダ) | 4 | 00000001 | 1バイト拡張ビットなし ホールIC 詳しくはこちらを参照してください。 |
g | センサーデータ4 | 1 | 80 | 変化なし、オープン |
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はイベントがあるかどうか |
6 | 起床要因センサー | 1 | 04 | 磁気センサー:0x00 タイマー:0x35 |
7 | 起床要因 | 1 | 02 | 送信要因 イベントが発生した:0x00 |
1205040410000000
^1^2^3^4^5^6^7^8
意味 | バイト数 | データ例 | 備考 | |
---|---|---|---|---|
1 | 各種情報ビット値 | 1 | 12 | 拡張バイトあり、符号なしLong |
2 | データソース | 1 | 05 | イベント |
3 | 拡張バイト | 1 | 04 | イベントの発生要因 磁気センサー:0x00 MSBが1の場合はデータ2にデータが存在する。 |
4 | データ長 | 1 | 04 | |
5 | データ1 | 1 | 10 | イベント発生要因が磁気センサーの場合 0x00(0):近くに磁石がない イベント発生要因が加速度の場合 0x01(1)~0x06(6):さいころ |
6 | データ2 | 3 | 000000 | 未使用 |
TWELITE ARIAには温湿度センサーと磁気センサーが搭載されており、両方のセンサーのデータも出力メッセージに含まれます。
このページでは出力メッセージからそれらのセンサーデータの読み方について解説します。
以下のご案内はTWELITE ARIAモード時のご案内です。
開閉センサーパルモードの場合はこちらをご確認ください。
下記のデータ羅列は、: に始まり改行コードまでの16進数データをテキストで表現したものです。
:80000000CF00028201BAA201800607003400038135001205350401000000113008020D201130010204ED00000001800501000209D0010200020F347934[CR][LF]
上記は逐次解釈する書式ですので、厳密に解釈するのは煩雑です。
そのため、各センサーの値の場所とその抽出例をご説明します。
その際、: を 0 文字目とします。
以下の説明では、データの位置を示す際、Pythonのリストの指定の表記ような以下の書式でご案内します。
[データの開始位置:データの開始位置+文字数]
例えば、15文字目から4文字を指定する場合は、以下のように表記します。
[15:15+4]
温度などのセンサーデータは103文字目から118文字目までに含まれております。
各データの位置やデータ形式は以下の通りです。
データ位置 意味
[103:103+4] 温度(符号付整数、単位は°Cの100倍(23.56°C→2356))
[115:115+4] 湿度(符号無整数、単位は%の100倍(25.99%→2599))
磁気センサーは93文字目から2文字分です。
磁気センサーは下表の値を出力します。
磁気センサーデータ | 意味 |
---|---|
磁気センサーのデータ | 意味 |
00 | 磁石が遠ざかった。 |
01 | 磁石のN極が近づいた。 |
02 | 磁石のS極が近づいた。 |
80 | 磁石が近くにない。(タイマーによる定期送信) |
81 | 磁石のN極が近くにある。(タイマーによる定期送信) |
82 | 磁石がS極が近くにある。(タイマーによる定期送信) |
例えば、磁石が近くにない状態から、磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。
80 -- 80 -- 80 -- 01(※) -- 81 -- 81 --
※ 多くの場合は磁石のN極を検出したときに01になりますが、設置環境によっては、出力値が一定期間安定せず、02や稀に00が出力される場合があります。
また、磁石が近くにあるかだけ知りたい場合は、94文字目だけ確認し、0だったら磁石が近くにない、1または2の時は磁石が近くにあると判定します。
以下は、温湿度と磁気センサーのデータを取得するPythonの対話モードでの実行例です。
出力メッセージから、温度、湿度、照度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、温度は符号付の数値に変換します。
そのあと、センサーのデータを出力しますが、温度と湿度データは100倍されたデータですので、出力時に100で割った値を出力しています。
また、磁気センサーのデータをシリアル出力から抜き出し、上表に従って磁気センサーが検出している状態に変換し、加速度データと磁気センサーの情報を標準出力しております。
>>> t = ':80000000CF00028201BAA201800607003400038135001205350401000000113008020D201130010204ED00000001800501000209D0010200020F347934'
>>> temp = int(t[103:103+4], 16) # 63文字目から4文字取り出し、整数値に変換
>>> temp = (-65536 + temp) if temp >= 32768 else temp # 符号付き16ビット整数の対応
>>> hum = int(t[115:115+4], 16)
>>> print('temperature: %f, humidity: %f' % ( temp/100.0, hum/100.0 ))
temperature: 25.120000, humidity: 38.920000
>>> v = int(t[93:93+2], 16) # 93文字目から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] CF LQI
[11:11+4] 0002 続き番号
[15:15+8] 8201BAA2 送信元のシリアルID
[23:23+2] 01 送信元の論理デバイスID
[25:25+2] 80 センサー種別(80で固定)
[27:27+2] 06 PAL基板バージョンとPAL基板ID(TWELITE ARIAは06)
親機・中継機アプリはTWELITE PALからだけではなく、様々なアプリのデータを受信することができるので、出力メッセージがどのアプリの出力か区別する必要があります。
TWELITE ARIAの出力メッセージは、改行コード抜きで123文字(改行コードありでは125文字)で、ほかのセンサーパルなどのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。
より厳密に区別するには、文字数と以下の項目を確認してください。
:80000000CF00028201BAA201800607003400038135001205350401000000113008020D201130010204ED00000001800501000209D0010200020F347934
^^^^^^^1^2^^^3^^^^^^^4^5^6^7^8^^^^^^^9^^^^^a^^^^^^^b^^^^^^^c^^^^^^^d^^^e^^^^^^^f^^^g^^^^^^^h^i^^^^^^^j^^^k^^^^^^^l^^^m^n^o
意味 | バイト数 | データ例 | 備考 | |
1 | 中継機シリアルID | 4 | 80000000 | 中継されていない場合は80000000 |
2 | LQI | 1 | CF | 大きいほど電波品質が良い |
3 | 続き番号 | 2 | 0002 | |
4 | 送信元シリアルID | 4 | 8201BAA2 | |
5 | 送信元LID | 1 | 01 | |
6 | センサー種別 | 1 | 80 | TWELITE ARIAは80固定 |
7 | PAL ID | 1 | 06 | TWELITE ARIAモードは06 |
8 | センサーデータ数 | 1 | 07 | |
9 | センサーデータ0(ヘッダ) | 4 | 00340003 | 拡張バイトなし、符号なし1バイト、パケットプロパティが3バイト |
a | センサーデータ0 | 3 | 813500 | タイマーイベントで送信した |
b | センサーデータ1(ヘッダ) | 4 | 12053504 | 拡張バイトあり、符号なしLong、タイマーイベント情報 |
c | センサーデータ1 | 4 | 01000000 | タイマーが起床させた |
d | センサーデータ2(ヘッダ) | 4 | 11300802 | 符号なし2バイト、電源電圧 |
e | センサーデータ2 | 2 | 0D20 | 3360mV |
f | センサーデータ3(ヘッダ) | 4 | 11300102 | 符号なし2バイト、ADC1 |
g | センサーデータ3 | 2 | 04ED | 1261mV |
h | センサーデータ4(ヘッダ) | 4 | 00000001 | 拡張バイトなし、符号なし1バイト、磁気センサー |
i | センサーデータ4 | 1 | 80 | 変化なし、オープン |
j | センサーデータ5(ヘッダ) | 4 | 05010002 | 拡張バイトなし、符号あり2バイト、温度 |
k | センサーデータ5 | 2 | 09D0 | 25.12°C |
l | センサーデータ6(ヘッダ) | 4 | 01020002 | 拡張バイトなし、符号なし2バイト、湿度 |
m | センサーデータ6 | 2 | 0F34 | 38.92% |
n | チェックサム1 | 1 | 79 | 1~mまでのLRC |
o | チェックサム2 | 1 | 34 | 1~nまでのCRC8 |
:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E
^^^^^^^1^2^^^3^^^^^^^4^5^6^7^8^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^9^a^b
番号 | バイト数 | 意味 | データ例 | 備考 |
---|---|---|---|---|
1 | 4 | 中継機のシリアルID | 80000000 | 中継していない場合は80000000 |
2 | 1 | LQI | A8 | 0が最小で255が最大 |
3 | 2 | 続き番号 | 001C | |
4 | 4 | 送信元のシリアルID | 82012B1E | |
5 | 1 | 送信元の論理デバイスID | 01 | |
6 | 1 | センサー種別 | 80 | 80で固定 |
7 | 1 | PAL基板バージョンとPAL基板ID | 81 | |
8 | 1 | センサーデータの数 | 03 | |
9 | N | センサーデータ | 113008020D0C1130010203E40000000101 | センサーデータ参照 |
a | 1 | チェックサム1 | EC | 1~9までのCRC8 |
b | 1 | チェックサム2 | 6E | 1~aまでのLRC |
センサーデータは以下のような構成で表記されます。
113008020D0C
^1^2^3^4^^^5
番号 | バイト数 | 意味 | データ例 | 備考 |
---|---|---|---|---|
1 | 1 | 情報ビット | 11 | データの大きさや拡張バイトの有無を保持する |
2 | 1 | データソース | 30 | センサーの種類 |
3 | 1 | 拡張バイト | 08 | データの補足情報が付与される |
4 | 1 | データ長 | 02 | データのバイト数 |
5 | N | データ | 0D0C | センサーの実データ |
データの型や拡張バイトの有無、読み込みエラーの有無を示すデータです。
読み方は以下の通りです。
ビット位置 | 意味 |
---|---|
7 | 読み込みエラーの有無。1だったら読み込みエラー |
6 | - |
5 | - |
4 | 拡張バイトの有無。1だったら拡張バイトあり。 |
3 | - |
2 | データの符号の有無。1だったら符号あり、もしくはデータ型が可変長 |
1, 0 | データ型。 00 : char(1バイト) 01 : short(2バイト) 10 : long (4バイト) 11 : 可変長 |
データの種類を示します。
ID | 内容 |
---|---|
0x00 | 磁気 |
0x01 | 温度 |
0x02 | 湿度 |
0x03 | 照度 |
0x04 | 加速度 |
0x05 | イベント |
0x30 | 電圧 |
0x34 | パケットプロパティ |
何サンプル目のデータか、ADCの何番目のデータかなどデータの補助的な値が格納されます。
データソース | 内容 |
---|---|
磁気 | なし |
温度 | なし |
湿度 | なし |
照度 | なし |
加速度 | 7-5ビット:サンプリング周波数。0=25Hz, 1=50Hz, 2=100Hz, 3=190Hz, 4以上=未定義 4-0ビット:サンプリング番号。0が最も古く、31が最も新しい。 |
イベント | イベントの発生要因を示す。 磁気センサー:0x00, 温度:0x01, 湿度:0x02, 照度:0x03, 加速度:0x04 MSBが1の場合はデータ2にデータが存在する。 |
電圧 | 1 : ADC1 |
パケットプロパティ | なし |
データのバイト数を示します。
センサーの実データが格納されています。
データソース | バイト数 | 内容 | 数値例 (16進数) | 数値例の内容 |
---|---|---|---|---|
磁気 | 1(符号無1バイト) | 0x00=近くに磁石がない | 01 | 磁石のN極が近くにある |
温度 | 2(符号有2バイト) | 温度の100倍 (°C) | 09E3 | 25.31°C |
湿度 | 2(符号無2バイト) | 湿度の100倍 (%) | 0E3A | 36.42% |
照度 | 4(符号無4バイト) | 照度 (lux) | 000001BE | 446 lux |
加速度 | 6(符号有2バイト*3) | X 軸、Y 軸、Z軸の順でそれぞれの2バイトの重力加速度 (mg) | 001000100450 | X : 16mg Y : 16mg Z : 1104mg |
イベント | 4(符号無1バイト+3バイト) | 1バイト : イベント内容 ・拡張バイトが磁気の場合 0x00(0):近くに磁石がない ・拡張バイトが加速度の場合 0x01(1)~0x06(6):さいころ 3バイト : 未使用(将来の拡張用) | 01000000 | 拡張バイトが磁気の場合 : 磁石のN極が近くにある |
電圧 | 2(符号無2バイト) | 電圧 (mV) | 03E4 | 996mV |
パケットプロパティ | 3(符号無1バイト*3) | 1バイト : パケットID 1バイト : 起床要因データソース 磁気センサー:0x00 タイマー:0x35 送信要因 イベントが発生した:0x00 | 810402 | パケットIDが1でイベントあり、起床要因データソースは加速度で、閾値を超えたので起床した。 |
:FEAA008201015A00000000B7000F424154310F0CEE000B03FF03FF03FF92
^1^2^3^^^^^^^4^^^^^^^5^6^^^7^^^^^^^^^^^^^^^^^^^^^^^^^^^^^8^9
番号 | バイト数 | 意味 | データ例 | 内容 | 備考 |
---|---|---|---|---|---|
1 | 1 | 送信元の論理デバイスID | FE | 送信元の論理デバイスIDは0xFE | |
2 | 1 | コマンド種別 | AA | アクトのパケット | 0xAA固定 |
3 | 1 | 応答ID | 00 | 任意の0x00~0x7Fの値 | |
4 | 4 | 送信元のシリアルID | 8201015A | 送信元のシリアルIDは201015A | |
5 | 4 | 送信先のシリアルID | 00000000 | 00000000のときは論理デバイスIDを指定して送信している。 | |
6 | 1 | LQI | B7 | 183 | 0が最小で255が最大 |
7 | 2 | データのバイト数 | 000F | 15バイト | |
8 | N | データ | 424154310F0CEE000B03FF03FF03FF | | |
9 | 1 | チェックサム | 92 | |