セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-04-25 現在

親機・中継機アプリ マニュアル

データ集約と通信範囲拡張に。
超簡単!標準アプリやパルアプリなどの TWELITE APPS やact のパケットを受信と中継をするアプリです。

1 - 親機・中継機アプリ マニュアル

最新版
超簡単!標準アプリやパルアプリなどの TWELITE APPS やact のパケットを受信と中継をするアプリです。

2020年6月以降に出荷される MONOSTICK BLUE や MONOSTICK RED に本アプリがあらかじめインストールされます。

1.1 - 概要

App_Wingsでできること
TWELITE APPSとactの全てのデータパケットを処理することができ、共通の親機または中継機として使用できます。

機能

  • 超簡単!標準アプリやパル専用アプリなどの TWELITE APPS や act のデータを1つの MONOSTICK で収集可能
  • 16チャンネルで複数システムを個別に運用可能
  • アプリケーションIDの設定することで、同一チャネルに複数システムを混在可能
  • 中継機能で通信範囲拡大

1.2 - 使用方法

App_Wingsを使用するには

本アプリには 親機モードと中継機モードの 2つのモードがあります。次のページからそれぞれのモードについて説明を行います。

1.2.1 - 親機モード

親機として使う

1.2.1.1 - 受信メッセージ

データを受信する

TWELTIE APPSのデータを本アプリですべて同時に受信することができます。

データを受信したときのシリアル出力書式は以下のページをご覧ください。

1.2.1.1.1 - 超簡単!標準アプリ

超簡単!標準アプリからデータを受信する

相手端末からの状態通知:ステータス0x81

データフォーマット

:78811501C98201015A000391000C2E00810301FFFFFFFFFB
 ^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^b^c^de1e2e3e4ef^g
番号バイト数意味データ例内容備考
11送信元の論理デバイスID78送信元の論理デバイスIDは0x78
21コマンドID81IO状態の通知
31パケット識別子15アプリケーションIDより生成される
41プロトコルバージョン0101 で固定
51LQIC92010が最小で255が最大
64送信元のシリアルID8201015A送信元のシリアルIDは201015A
71宛先の論理デバイスID00親機宛
82タイムスタンプ0391約14.3秒1秒で64カウント
91中継フラグ00中継してない※1 参照
a2電源電圧[mV]0C2E3118mV
b1未使用00
c1DI の状態ビット81DI1がON(Low)

DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8)。1がOn(Lowレベル)。

MBSが1だったら定期送信。

d1DI の変更状態ビット03DI1とDI2が変更対象DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8)。1が変更対象。
e11AI1の変換値0116mV※2、※3 参照
e21AI2の変換値FF未使用※2、※3 参照
e31AI3の変換値FF未使用※2、※3 参照
e41AI4の変換値FF未使用※2、※3 参照
ef1AI1~AI4の補正値FF未使用

LSBから順に2ビットずつ補正値、LSB側が AI1、MSB側が AI4

※2、※3 参照

g1チェックサム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 です。‌

任意データの送受信:コマンド0x01

データフォーマット

:780100112233AABBCCDD13
 ^1^2^^^^^^^^^^^^^^^3^4
番号バイト数意味データ例内容備考
11送信元の論理デバイスID78送信元の論理デバイスIDは0x78
21コマンドID01任意データの送受信
3Nデータ00112233AABBCCDD
41チェックサム13

1.2.1.1.2 - リモコンアプリ

リモコンアプリからデータを受信する

相手端末からの状態通知:ステータス0x81

データフォーマット

:78811202848201015A003FC9000001000100010086
 ^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^^^b^^^c^d^e
番号バイト数意味データ例内容備考
11送信元の論理デバイスID78送信元の論理デバイスIDは0x78
21コマンドID81IO状態の通知
31パケット識別子12アプリケーションIDより生成される
41プロトコルバージョン0202 で固定
51LQI84132(0が最小で255が最大)
64送信元のシリアルID8201015A送信元のシリアルIDは201015A
71宛先の論理デバイスID00親機宛
82タイムスタンプ3FC9約255.1秒1秒で64カウント
91中継フラグ00中継してない※1 参照
a2DI の状態ビット0001DI1がON(Low)

LSBからDI1、DI2…
1がOn(Lowレベル)。

b2DI の変更状態ビット0001DI1が変更対象

LSBからDI1、DI2…
1が変更対象。

c2DIの割込状態ビット0001DI1が割り込み入力された(変化した)。
d1未使用00
e1チェックサム86

※1 中継フラグは中継の回数を意味します。中継をしていない時は0になります。

1.2.1.1.3 - シリアル通信アプリ

シリアル通信アプリからデータを受信する

簡易書式

データフォーマット

:780100112233AABBCCDD13
 ​^1^2^^^^^^^^^^^^^^^3^4
番号バイト数意味データ例内容備考
11送信元の論理デバイスID78送信元の論理デバイスIDは0x78
21応答ID01任意の0x00~0x7Fの値
3Nデータ00112233AABBCCDD
41チェックサム01

拡張書式

データフォーマット

:78A0028201015AFFFFFFFFA8000700112233AABBCCC6
​ ^1^2^3^^^^^^^4^^^^^^^5^6^^^7^^^^^^^^^^^^^8^9
番号バイト数意味データ例内容備考
11送信元の論理デバイスID78送信元の論理デバイスIDは0x78
21コマンド種別A0拡張形式0xA0固定
31応答ID02任意の0x00~0x7Fの値
44送信元のシリアルID8201015A送信元のシリアルIDは201015A
54送信先のシリアルIDFFFFFFFFFFFFFFFFのときは論理デバイスIDを指定して送信している。
61LQIA81680が最小で255が最大
72データのバイト数00077バイト
8Nデータ00112233AABBCC
91チェックサムC6

1.2.1.1.4 - 無線タグアプリ

無線タグアプリからデータを受信する

以下は、主なセンサー接続時のデータの出力例です。

アナログセンサ―

:80000000B700628201015A0010DF08FD09A300000000E9
 ^^^^^^^1^2^^^3^^^^^^^4^5^6^7^^^8^^^9^^^^^^^a^b
番号バイト数意味データ例内容備考
14中継機のシリアルID80000000中継無し中継していない場合は80000000
21LQIB71680が最小で255が最大
32続き番号006298
44送信元のシリアルID8201015A送信元のシリアルIDは8201015A
51送信元の論理デバイスID00送信元の論理デバイスIDは00
61センサー種別10アナログセンサー
71電源電圧 [mV]DF3330mV電源電圧の計算方法を参照
82ADC1の電圧08FD2301mV
92ADC2の電圧09A32467mV
a4未使用00000000
b1チェックサムE9

加速度センサー (ADXL34x / TWELITE 2525A)

:8000000063001781013C850035DF057702F2000000FF96FFF0BB
 ^^^^^^^1^2^^^3^^^^^^^4^5^6^7^^^8^^^9^a^^^b^^^c^^^d^e
番号バイト数意味データ例内容備考
14中継機のシリアルID80000000中継無し中継していない場合は80000000
21LQI63990が最小で255が最大
32続き番号001723
44送信元のシリアルID81013C85送信元のシリアルIDは1013C85
51送信元の論理デバイスID00送信元の論理デバイスIDは00
61センサー種別35加速度センサー(ADXL34x)
71電源電圧 [mV]DF3330mV電源電圧の計算方法を参照
82ADC1の電圧05771399mV
92ADC2の電圧02F2754mV
a1センサーモード番号00通常モード
b2X軸の加速度00000mg単位はmg*10
c2Y軸の加速度FF96-1060mg単位はmg*10
d2Z軸の加速度FFF0-160mg単位はmg*10
e1チェックサムBB

スイッチ

:800000009C00118201015A00FEDF000709A300010064
 ^^^^^^^1^2^^^3^^^^^^^4^5^6^7^^^8^^^9^a^b^c^d
番号バイト数意味データ例内容備考
14中継機のシリアルID80000000中継無し中継していない場合は80000000
21LQI9C1560が最小で255が最大
32続き番号006298
44送信元のシリアルID8201015A送信元のシリアルIDは201015A
51送信元の論理デバイスID00送信元の論理デバイスIDは00
61センサー種別10スイッチ
71電源電圧 [mV]DF3330mV電源電圧の計算方法を参照
82ADC1の電圧00077mV
92ADC2の電圧09A32467mV
a1センサーモード番号00立ち下がり検出モード

0:立ち下り検出モード

1:立ち上り検出モード

b1DI1の状態01ON(Low)1がON(Low)
c1未使用00
d1チェックサム64

電源電圧の計算方法

  • 読み値が170(0xAA)以下の場合
    電源電圧[mV] = 1950+読み値*5

  • 読み値が170(0xAA)より大きいの場合

    電源電圧[mV] = 2800+(読み値-170)*10

1.2.1.1.5 - パル/キュー/アリアアプリ

パル/キュー/アリアアプリからデータを受信する

1.2.1.1.5.1 - パルアプリ

パルアプリからデータを受信する

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

下記のデータ羅列は、: に始まり改行コードまでの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文字)で、ほかのセンサーパルのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。

より厳密に区別するには、文字数と以下の項目を確認してください。

  • 1文字目が8であること
  • 15文字目が8であること
  • 25、26文字目が ‘80’ であること
  • 27、28文字目が ‘81’ であること

環境センサーパル

環境センサーパルからのデータを受信すると以下のような出力メッセージがシリアル出力されます。

: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文字)で、ほかのセンサーパルなどのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。

より厳密に区別するには、文字数と以下の項目を確認してください。

  • 1文字目が8であること
  • 15文字目が8であること
  • 25、26文字目が ‘80’ であること
  • 27、28文字目が ‘82’ であること

動作センサーパル

動作センサーパルからのデータを受信すると以下のような出力メッセージがシリアル出力されます。

: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文字)で、ほかのセンサーパルなどのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように出力メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。

より厳密に区別するには、文字数と以下の項目を確認してください。

  • 1文字目が8であること
  • 15文字目が8であること
  • 25、26文字目が ‘80’ であること
  • 27、28文字目が ‘83’ であること

出力例

以下は、パルごとのデータの出力例です。

開閉センサーパル

: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
番号バイト数意味データ例内容備考
14中継機のシリアルID80000000中継無し
21LQIA8168
32続き番号001C28
44送信元のシリアルID82012B1E送信元のシリアルIDは2012B1E
51送信元の論理デバイスID01送信元の論理デバイスIDは01
61センサー種別80
71PAL基板バージョンとPAL基板ID81開閉センサーパル Ver.1
81センサーデータの数033つ
91各種情報ビット値11

拡張バイトあり
符号なしShort型

a1データソース30ADC
b1拡張バイト08電源電圧
c1データ長022バイト
d2データ0D0C3340mV
e1各種情報ビット値11

拡張バイトあり
符号なしShort型

f1データソース30ADC
g1拡張バイト01ADC1
h1データ長022バイト
i2データ03E4996mV
j1各種情報ビット値00

拡張バイトなし

符号なしChar型

k1データソース00磁気
l1拡張バイト000
m1データ長011バイト
n1データ01磁石(N極)が近づいた

00: 磁石が離れた。
01: N極が近づいた
02: S局が近づいた
80: 変化なし(磁石なし)
81: 変化なし(N極が近くにある)
82: 変化なし(S極が近くにある)

o1チェックサム1EC
p1チェックサム26E

環境センサーパル

​: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
番号バイト数意味データ例内容備考
14中継機のシリアルID80000000中継無し
21LQI84132
32続き番号811F33055
44送信元のシリアルID810EFF6D送信元のシリアルIDは810EFF6D
51送信元の論理デバイスID04送信元の論理デバイスIDは04
61センサー種別80
71PAL基板バージョンとPAL基板ID82環境センサーパル Ver.1
81センサーデータの数055つ
91各種情報ビット値11

拡張バイトあり
符号なしShort型

a1データソース30ADC
b1拡張バイト08電源電圧
c1データ長022バイト
d2データ0AEB2795mV
e1各種情報ビット値11

拡張バイトあり
符号なしShort型

f1データソース30ADC
g1拡張バイト01ADC1
h1データ長022バイト
i2データ035A858mV
j1各種情報ビット値05

拡張バイトなし

符号ありShort

k1データソース01温度
l1拡張バイト000
m1データ長022バイト
n2データ09E325.31°C
o1各種情報ビット値01

拡張バイトなし

符号なしShort

p1データソース02湿度
q1拡張バイト000
r1データ長022バイト
s2データ0E3A36.42%
t1各種情報ビット値02

拡張バイトなし

符号ありLong

u1データソース03照度
v1拡張バイト000
w1データ長044バイト
x4データ000001BE446 lux
y1チェックサム16C
z1チェックサム200

動作センサーパル

出力例

: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
番号バイト数意味データ例内容備考
14中継機のシリアルID80000000中継無し
21LQIBA186
32続き番号002335
44送信元のシリアルID82011CEF送信元のシリアルIDは82011CEF
51送信元の論理デバイスID01送信元の論理デバイスIDは01
61センサー種別80
71PAL基板バージョンとPAL基板ID83動作センサーパル Ver.1
81センサーデータの数1218
91各種情報ビット値11

拡張バイトあり
符号なしShort型

a1データソース30ADC
b1拡張バイト08電源電圧
c1データ長022バイト
d2データ0D023330mV
e1各種情報ビット値11

拡張バイトあり
符号なしShort型

f1データソース30ADC
g1拡張バイト01ADC1
h1データ長022バイト
i2データ055C1372mV
j1各種情報ビット値15

拡張バイトあり

符号ありShort

k1データソース04加速度
l1拡張バイト40

サンプリング周波数 : 100Hz

0サンプル目

m1データ長066バイト
n2データ001000100450

X : 16mg

Y : 16mg

Z : 1104mg

o1各種情報ビット値15

拡張バイトあり

符号ありShort

p1データソース04加速度
q1拡張バイト41

サンプリング周波数 : 100Hz

1サンプル目

r1データ長062バイト
s2データ000800100430

X : 8mg

Y : 16mg

Z : 1072mg

t1各種情報ビット値15

拡張バイトあり

符号ありShort

u1データソース04加速度
v1拡張バイト4F

サンプリング周波数 : 100Hz

15サンプル目

w1データ長066バイト
x4データ000000180438

X : 0mg

Y : 24mg

Z : 1080mg

y1チェックサム128
z1チェックサム2A5

通知パル

: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
番号バイト数意味データ例データ例の内容備考
14中継機のシリアルID80000000中継無し
21LQICQ186
32続き番号BBC048064
44送信元のシリアルID82014C35送信元のシリアルIDは82014C35
51送信元の論理デバイスID01送信元の論理デバイスIDは01
61センサー種別80
71PAL基板バージョンとPAL基板ID84通知パル Ver.1
81センサーデータの数033
91各種情報ビット値11拡張バイトあり 符号なしShort型
a1データソース30ADC
b1拡張バイト08電源電圧
c1データ長022バイト
d2データ0D0C3340mV
e1各種情報ビット値11拡張バイトあり 符号なしShort型
f1データソース30ADC
g1拡張バイト01ADC1
h1データ長022バイト
i2データ03F91017mV
j1各種情報ビット値12拡張バイトあり符号なしLong
k1データソース05イベント
l1拡張バイト04加速度によるイベント
m1データ長044バイト
n1データ110イベント0x10(16)が発生

加速度の場合
0x01(1)~0x06(6):さいころ
0x08(8):シェイク
0x10(16):タップ

o3データ20000000将来の拡張用。現在は未使用
p1チェックサム128
q1チェックサム2A5

1.2.1.1.5.2 - キューアプリ

キューアプリからデータを受信する

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中継機シリアルID480000000
2LQI1B1
3続き番号2001B
4送信元シリアルID4810B6465
5送信元LID101
6センサー種別180
7PAL IDとPAL Ver105TWELITE CUE
8センサーデータ数10F15
9センサーデータ0700340003813500パケットプロパティ参照
aセンサーデータ181205040403000000イベント参照
bセンサーデータ2 (ヘッダ)411300802

2バイト、拡張ビット有
電圧(電源電圧)
詳しくはこちらを参照してください。

cセンサーデータ220D343350mV
dセンサーデータ3 (ヘッダ)411300102

2バイト、拡張ビット有
電圧(ADC1)
詳しくはこちらを参照してください。

eセンサーデータ32052E1432mV
fセンサーデータ4 (ヘッダ)400000001

1バイト拡張ビットなし

ホールIC

詳しくはこちらを参照してください。

gセンサーデータ4180

変化なし、オープン
(00: 磁石が離れた。
01: N極が近づいた
02: S局が近づいた
80: 変化なし(磁石なし)
81: 変化なし(N極が近くにある)
82: 変化なし(S極が近くにある))

hセンサーデータ5 (ヘッダ)415044006

符号あり2バイト、拡張ビット有

加速度(1サンプル目)

詳しくはこちらを参照してください。

iセンサーデータ5(X軸)2FC28X = 392mg
jセンサーデータ5(Y軸)2FFB0Y = -800mg
kセンサーデータ5(Z軸)20018Z = 240mg
lセンサーデータ6 (ヘッダ)415044106

符号あり2バイト、拡張ビット有

加速度(2サンプル目)

こちらを参照してください。

mセンサーデータ6(X軸)2FC28X = 176mg
nセンサーデータ6(Y軸)2FFB0Y = -1248mg
oセンサーデータ6(Z軸)20008Z = -96mg
中略
pチェックサム11A61~pの1つ前までのCRC8
qチェックサム212C1~pまでのLRC

パケットプロパティ

00340003810402
^1^2^3^4^5^6^7
意味バイト数データ例備考
1各種情報ビット値100拡張バイトなし、符号なしChar
2データソース134起床要因
3拡張バイト100
4データ長103
5パケットID181

0~127、MSBはイベントがあるかどうか
0もしくは0x80はADC1と電源電圧、イベント以外はデータがないことを示す

6起床要因センサー104

磁気センサー:0x00
温度:0x01
湿度:0x02
照度:0x03
加速度:0x04
DIO:0x31

タイマー:0x35

7起床要因102

送信要因 イベントが発生した:0x00
値が変化した:0x01
値が閾値を超えた:0x02
閾値を下回った:0x03
閾値の範囲に入った:0x04

イベント

1205040410000000
^1^2^3^4^5^6^7^8
意味バイト数データ例備考
1各種情報ビット値112拡張バイトあり、符号なしLong
2データソース105イベント
3拡張バイト104

イベントの発生要因

磁気センサー:0x00
温度:0x01
湿度:0x02
照度:0x03
加速度:0x04

MSBが1の場合はデータ2にデータが存在する。

4データ長104
5データ1110

イベント発生要因が磁気センサーの場合

0x00(0):近くに磁石がない
0x01(1):磁石のN極が近くにある
0x02(2):磁石のS極が近くにある

イベント発生要因が加速度の場合

0x01(1)~0x06(6):さいころ
0x08(8):シェイク
0x10(16):ムーブ

6データ23000000未使用

1.2.1.1.5.3 - アリアアプリ

アリアアプリからデータを受信する

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 ARIAのデータの判別方法

親機・中継機アプリはTWELITE PALからだけではなく、様々なアプリのデータを受信することができるので、出力メッセージがどのアプリの出力か区別する必要があります。

TWELITE ARIAの出力メッセージは、改行コード抜きで123文字(改行コードありでは125文字)で、ほかのセンサーパルなどのデータとは文字数が違うため、文字数で見分けると簡単です。
ただし、シリアル通信アプリなどのように受信メッセージの文字数が決まっていないものもありますので、文字数だけでは見分けられない場合があります。

より厳密に区別するには、文字数と以下の項目を確認してください。

  • 1文字目が8であること
  • 15文字目が8であること
  • 25、26文字目が ‘80’ であること
  • 27、28文字目が ‘06’ であること

TWELITE ARIAモード

出力例

: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 ​480000000中継されていない場合は80000000
2LQI1CF大きいほど電波品質が良い
3続き番号20002
4送信元シリアルID48201BAA2
5送信元LID101
6センサー種別180TWELITE ARIAは80固定
7PAL ID106TWELITE ARIAモードは06
8センサーデータ数107
9センサーデータ0(ヘッダ)400340003拡張バイトなし、符号なし1バイト、パケットプロパティが3バイト
aセンサーデータ03813500タイマーイベントで送信した
bセンサーデータ1(ヘッダ)412053504拡張バイトあり、符号なしLong、タイマーイベント情報
cセンサーデータ1401000000タイマーが起床させた
dセンサーデータ2(ヘッダ)411300802符号なし2バイト、電源電圧
eセンサーデータ220D203360mV
fセンサーデータ3(ヘッダ)411300102符号なし2バイト、ADC1
gセンサーデータ3204ED1261mV
hセンサーデータ4(ヘッダ)400000001拡張バイトなし、符号なし1バイト、磁気センサー
iセンサーデータ4180

変化なし、オープン
(00: 磁石が離れた。
01: N極が近づいた
02: S局が近づいた
80: 変化なし(磁石なし)
81: 変化なし(N極が近くにある)
82: 変化なし(S極が近くにある))

jセンサーデータ5(ヘッダ)405010002拡張バイトなし、符号あり2バイト、温度
kセンサーデータ5209D025.12°C
lセンサーデータ6(ヘッダ)401020002拡張バイトなし、符号なし2バイト、湿度
mセンサーデータ620F3438.92%
nチェックサム11791~mまでのLRC
oチェックサム21341~nまでのCRC8

1.2.1.1.5.4 - 出力書式の詳細

パル・キュー・アリアアプリ出力書式の詳細

出力書式

:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E
 ^^^^^^^1^2^^^3^^^^^^^4^5^6^7^8^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^​^9^a^b
番号バイト数意味データ例備考
14中継機のシリアルID80000000中継していない場合は80000000
21LQIA80が最小で255が最大
32続き番号001C
44送信元のシリアルID82012B1E
51送信元の論理デバイスID01
61センサー種別8080で固定
71PAL基板バージョンとPAL基板ID81
81センサーデータの数03
9Nセンサーデータ113008020D0C1130010203E40000000101センサーデータ参照
a1チェックサム1EC1~9までのCRC8
b1チェックサム26E1~aまでのLRC

センサーデータ

センサーデータは以下のような構成で表記されます。

113008020D0C
^1^2^3^4^^^5
番号バイト数意味データ例備考
11情報ビット11データの大きさや拡張バイトの有無を保持する
21データソース30センサーの種類
31拡張バイト08データの補足情報が付与される
41データ長02データのバイト数
5Nデータ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
2 : ADC2
3 : ADC3
4 : ADC4
8 : 電源電圧

パケットプロパティなし

データ長

データのバイト数を示します。

データ

センサーの実データが格納されています。

データソースバイト数内容数値例 (16進数)数値例の内容
磁気1(符号無1バイト)

0x00=近くに磁石がない
0x01=N極が近い
0x02=S極が近い
0x80= 定期送信ビット(このビットが1の時は定期送信、0の時は磁気センサーの状態が変化したことを示す)

01磁石のN極が近くにある
温度2(符号有2バイト)温度の100倍 (°C)09E325.31°C
湿度2(符号無2バイト)湿度の100倍 (%)0E3A36.42%
照度4(符号無4バイト)照度 (lux)000001BE446 lux
加速度6(符号有2バイト*3)X 軸、Y 軸、Z軸の順でそれぞれの2バイトの重力加速度 (mg)001000100450

X : 16mg

Y : 16mg

Z : 1104mg

イベント4(符号無1バイト+3バイト)

1バイト : イベント内容

・拡張バイトが磁気の場合

0x00(0):近くに磁石がない
0x01(1):磁石のN極が近くにある
0x02(2):磁石のS極が近くにある

・拡張バイトが加速度の場合

0x01(1)~0x06(6):さいころ
0x08(8):シェイク
0x10(16):ムーブ

3バイト : 未使用(将来の拡張用)

01000000

拡張バイトが磁気の場合 : 磁石のN極が近くにある
拡張バイトが加速度の場合 : さいころの1(加速度センサーが上を向いている)

電圧2(符号無2バイト)電圧 (mV)03E4996mV
パケットプロパティ3(符号無1バイト*3)

1バイト : パケットID
0~127、MSBが1の時はイベントあり。
0もしくは128はADC1と電源電圧、イベント以外はデータがないことを示す。

1バイト : 起床要因データソース

磁気センサー:0x00
温度:0x01
湿度:0x02
照度:0x03
加速度:0x04
DIO:0x31

タイマー:0x35

1バイト : 起床要因

送信要因 イベントが発生した:0x00
値が変化した:0x01
値が閾値を超えた:0x02
閾値を下回った:0x03
閾値の範囲に入った:0x04

810402パケットIDが1でイベントあり、起床要因データソースは加速度で、閾値を超えたので起床した。

1.2.1.1.6 - アクト

アクトからデータを受信する

データフォーマット

:FEAA008201015A00000000B7000F424154310F0CEE000B03FF03FF03FF92
​ ^1^2^3^^^^^^^4^^^^^^^5^6^^^7^^^^^^^^^^^^^^^^^^^^^^^^^^^^^8^9
番号バイト数意味データ例内容備考
11送信元の論理デバイスIDFE送信元の論理デバイスIDは0xFE
21コマンド種別AAアクトのパケット0xAA固定
31応答ID00任意の0x00~0x7Fの値
44送信元のシリアルID8201015A送信元のシリアルIDは201015A
54送信先のシリアルID0000000000000000のときは論理デバイスIDを指定して送信している。
61LQIB71830が最小で255が最大
72データのバイト数000F15バイト
8Nデータ424154310F0CEE000B03FF03FF03FF
91チェックサム92

1.2.1.2 - 送信コマンド

子機を操作する

コマンドを入力することで子機に対して電波を送信することができます。

送信できるコマンドは以下のページをご覧ください。

1.2.1.2.1 - 0x90コマンド

TWELITE PALを操作するコマンド
TWELITE PALに対して送信するコマンドです。
:0190010004000169[CR][LF]
 ^1^2^3^^^^^^^4^5
番号バイト数意味データ例備考
11送信先の論理デバイスID01

送信先のTWELITE PALの論理デバイスIDを指定します。
0x01から0x64まで指定可能です。

21コマンド種別90
31コマンドパラメータ数01コマンドパラメータの数を指定します。例えば、コマンドパラメータを1つだけ指定するなら1に、2つ指定するには2にします。
4コマンド数x4コマンドパラメータ00040001

イベントやLEDの色などを指定するためのパラメータを指定します。
詳細はコマンドパラメータを参照してください。

51チェックサム69

1~4の各バイトの和を8ビット幅で計算し2の補数をとります。つまりデータ部の各バイトの総和+チェックサムバイトを8ビット幅で計算すると0になります。
チェックサムバイトをアスキー文字列2文字で表現します。
例えば 00A01301FF123456 では 0x00 + 0xA0 + … + 0x56 = 0x4F となり、この二の補数は0xB1 です。(つまり 0x4F + 0xB1 = 0)
チェックサムをXにすることでチェックサムを省略可能です。

62フッター[CR][LF][CR] (0x0D) [LF] (0x0A) を指定します。ただし、チェックサムをXで省略する場合はフッターも省略可能です。

コマンドパラメータ

4バイトのコマンドパラメータを組み合わせてコマンドを指定します。

0x00:イベントIDを送信する

TWELITE PALは受信したイベントIDごとの振る舞いが設定されております。 本パラメータでは送信先のTWELITE PALにイベントIDを送信し、設定した動作を行います。

番号バイト数内容備考
11コマンドパラメータID0x00
21送信先PAL ID

送信先のPAL IDを指定します。
0x04:通知パル
0xFF:すべてのTWELITE PAL

31未使用領域0x00固定
41イベントID0~16までのイベントIDを指定します。

0x01 : LEDの色、点滅パターン、明るさを送信する

送信先の通知パルにLEDの色、点滅パターン、明るさを送信します。

番号バイト数内容備考
11コマンドパラメータID0x01
21


0:赤
1:緑
2:青
3:黄色
4:紫
5:水色
6:白
7:暖かい白

31点滅パターン

0:常時点灯
1~3:点滅パターン(数値が大きくなるほど点滅が早くなる。)

41明るさ

0:消灯
0x01~0x0F:明るさ(数値が大きいほど明るくなる。)

0x02 : 点灯時間を送信する

通知パルのLEDの点灯時間を送信します。

番号バイト数内容備考
11コマンドパラメータID0x02
21

未使用領域

0xFF固定
31未使用領域0x00固定
41点灯時間秒で指定(0は常時点灯)

0x03:LEDの色をRGBWで指定する

通知パルのLEDの点灯色をRGBWで送信します。

番号バイト数内容備考
11コマンドパラメータID0x03
21

未使用領域

0xFF固定
32LEDの点灯色

LSBからRGBWの順番で4ビットずつ指定する。

数値が大きいほど明るい

0x04:点滅パラメータを指定する。

通知パルのLEDの点滅周期と点滅Dutyを送信します。

番号バイト数内容備考
11コマンドパラメータID0x04
21

未使用領域

0xFF固定
31点滅時間の割合

0x00~0xFFで指定する。

数値が大きいほど1周期当たりの点灯時間が長くなる。

1周期の半分だけ点灯させるには0x7Fを指定する。

41点滅周期

0x00~0xFFで指定する。

設定値が1大きくなるごとに点滅の周期が約0.04sずつ増える。

1周期1秒にするには0x17を指定する。

コマンド例

例1:イベントを送信する

論理デバイスIDが1のNOTICE PALに対してイベント1を送信するコマンド例です。

:0190010004000169
 ^1^2^3^4^5^6^7^8
番号バイト数意味データ例データ例の内容備考
11送信先の論理デバイスID01送信先の論理デバイスIDは0x01
21コマンド種別900x90コマンド90固定
31コマンド数01コマンドは1個
41コマンドID00コマンド00
51送信先PAL ID04通知パルに対して送信する
61未使用領域00
71イベントID01イベント10x00~0x10まで
81チェックサム69

例2:通知パルのLEDの点灯色を送信する

論理デバイスIDが1のNOTICE PALに対して明るさ8で白色にゆっくり点滅させるためのコマンドです。

:019001010601085E
 ^1^2^3^4^5^6^7^8
番号バイト数意味データ例データ例の内容備考
11送信先の論理デバイスID01送信先の論理デバイスIDは0x01
21コマンド種別900x90コマンド90固定
31コマンド数01コマンドは1個
41コマンドパラメータID01コマンドパラメータID 0x01
5106
61点滅パターン01点滅
71明るさ08明るさ80x00~0x0Fまで
81チェックサム5E

例3:通知パルのLEDの点灯色と点灯時間を送信する。

論理デバイスIDが1のNOTICE PALに対して紫に点灯させ、点灯後1秒で消灯させるコマンドです。

:0190020104000802FF00015E
 ^1^2^3^4^5^6^7^8^9^a^b^c
番号バイト数意味データ例データ例の内容備考
11送信先の論理デバイスID01送信先の論理デバイスIDは0x01
21コマンド種別900x90コマンド90固定
31コマンド数02コマンドは2個
41コマンドパラメータID01コマンドパラメータID 0x01
5104
61点滅パターン00点灯
71明るさ08明るさ80x00~0x0Fまで
81コマンドパラメータID02コマンドパラメータID 0x02
91未使用領域FF
a1未使用領域00
b1点灯時間01点灯後1秒で消える
c1チェックサム5E

例4:通知パルに詳細な点灯色送信する。

論理デバイスIDが1のNOTICE PALに対して紫に点灯させるコマンドです。

:01900103FF0F0459
 ^1^2^3^4^5^^^6^7
番号バイト数意味データ例データ例の内容備考
11送信先の論理デバイスID01送信先の論理デバイスIDは0x01
21コマンド種別900x90コマンド90固定
31コマンド数01コマンドは2個
41コマンドパラメータID03コマンドパラメータID 0x03
51未使用FF
62LEDの点灯色0F04青:15、赤4の明るさで点灯させる。

LSBからRGBWの順番で各色4bitずつ(0~15)で指定する。

数値が大きいほど明るい

71チェックサム59

例5:通知パルのLEDの点灯色と点灯時間を送信する。

論理デバイスIDが1のNOTICE PALに対して紫に点灯させ、点灯後1秒で消灯させるコマンドです。

:0190020104000802FF00015E
 ^1^2^3^4^5^6^7^8^9^a^b^c
番号バイト数意味データ例データ例の内容備考
11送信先の論理デバイスID01送信先の論理デバイスIDは0x01
21コマンド種別900x90コマンド90固定
31コマンド数02コマンドは2個
41コマンドパラメータID01コマンドパラメータID 0x01
5104
61点滅パターン00点灯
71明るさ08明るさ80x00~0x0Fまで
81コマンドパラメータID02コマンドパラメータID 0x02
91未使用領域FF
a1未使用領域00
b1点灯時間01点灯後1秒で消える
c1チェックサム5E

1.2.2 - 中継機モード

中継機として使う
親機モードで受信できるアプリの電波を中継することができます。通信距離を延ばしたり、アクセスポイントとして中継機を使用することができます。

設定例

中継機として使用する場合、以下のようにインタラクティブモードで動作モード(l)を1以上に設定してください。

 a: (AID=0x67720102) Application ID1 [HEX:32bit]
 C: (CHL=18        ) Channels Set
 x: (PWR=      0x03) RF Power/Retry [HEX:8bit]
 b: (UOP=38400,8N1 ) UART Baud [9600-230400]
 o: (OPT=0x00000000) Option Bits [HEX:32bit]
 k: (KEY=0xA5A5A5A5) Encryption Key [HEX:32bit]
 l:$(MOD=         1) Mode (Parent or Router)
 A: (ADR=0x00000000) Access point address [HEX:32bit]

詳しい説明は以下のページをご覧ください。

インタラクティブモード

中継方式

TWELITE NETでは無線パケットの中継配送について、大きく分けて下表で示す2つの方式を用意しており、アプリケーションごとに異なります。本アプリでは下表で示すアプリケーションのパケットを識別し、中継することができます。

中継方式対応アプリ
単純ネット超簡単!標準アプリ、リモコンアプリ、シリアル通信アプリ、アクト
中継ネット無線タグアプリ、パルアプリ、キューアプリ

単純ネットを使用した中継

単純ネットを使用するアプリの中継を行う場合、動作モードの値を1以上に設定することで3回まで中継することができます。

例えば、1. のように親機と子機の間に中継機が3台以内であれば親機にデータが届きますが、2. ように中継機が4台以上ある場合は親機にデータが届きません。

  1. 子機 —> 中継機 —> 中継機 —> 中継機 —> 親機
    → 親機が子機のデータを3回中継して受信できる。
  2. 子機 —> 中継機 —> 中継機 —> 中継機 —> 中継機 -x-> 親機
    → 中継4回目で中継することをやめる。

単純ネットによる中継は、基本的に同報通信を使用して通信を行い、受信したパケットをすべて中継を行います。そのため、中継ネットワークを形成、維持するための通信が必要ないという利点がありますが、中継機が増えるほど爆発的に通信量が多くなることがあるという欠点もあります。

詳しくは こちら を参照ください。

中継ネットを使用した中継

中継ネットを使用するアプリのデータを1段の中継を行う場合、動作モードの値を1に設定してしてください。

複数回の中継を行う場合は、親機から遠くなるにつれて動作モードの設定値を大きくしてください。(設定値が昇順になっていれば設定値が飛んでもかまいません。)

本方式の最大中継回数は63回までです。

例1:1回の中継を行う場合
子機 —> 中継機(動作モード:1) —> 親機

例2:2回の中継を行う場合
子機 —> 中継機(動作モード:2) —> 中継機(動作モード:1) —> 親機

例3:3回の中継を行う場合
子機 —> 中継機(動作モード:6) —> 中継機(動作モード:3) —> 中継機(動作モード:1) —> 親機

中継ネットは上り方向の配送を効率的に実施する目的を持って設計されたツリー型ネットワークで、中継機は上位レイヤ(より動作モードの設定値が小さい親機もしくは中継機)を探索し、発見した上位レイヤ1台に対して中継を行います。

そのため、中継機の台数が増えても単純ネットほどは通信量が多くなりにくいですが、接続先を探索、維持するための通信が発生します。

詳しくは こちら をご覧ください。

静的ルーティング(中継先を直接指定)をする場合

中継ネットでの中継を行うときに、下図のような配置を考えた場合、中継機2の接続先は親機もしくは中継機1のどちらかを自動的に選択します。

基本的には、中継する回数が少ない方が親機への配送率が高くなる場合が多いですが、中継機2の接続先として親機が選択されてしまった場合、親機と中継機2の間に障害物があるため、通信品質が悪くなり、親機への配送率が中継機1を経由するときより低くなる可能性が高くなります。

そのため、本アプリには中継機の接続先を TWELITE のシリアル番号で指定する機能 (静的ルーティング機能) があります。

中継ネット

静的ルーティングを行う場合は、中継機2→中継機1への経路を静的にする、または全ての経路を静的に設定します。

すべての経路の設定にはその分だけ設定が多くなり、また、中継機の故障や電波状況の変化といった状況を想定した冗長化に対応できない点がありますが、上位通信先を確定するまでの時間をなくし、速やかに中継動作に移行できる利点があります。

静的ルーティングをするには下表のように中継機1には親機のSID、中継機2には中継機1のSIDになるように接続先を設定してください。

例: 2段中継の場合 (親機 ← 中継機1 ← 中継機2 ← 子機)

TWELITEのSID例接続先(A: Access Point Address)の設定例動作モード(l:Mode)の設定例
親機810F155E-0
中継機1810E18E8810F155E (親機のSID)※1
中継機2810F17FF810E18E8 (中継機1のSID)2

※上図の壁による影響のみに対処したい場合は設定不要です。

1.3 - インタラクティブモード

App_Wingsのインタラクティブモード

インタラクティブモードでアプリの詳細設定を行うことができます。

インタラクティブモードに入るには、パソコン上のターミナルソフトから + + + と + を3回入力します。+ と + の間には 0.2 秒から 1.0 秒の間隔をあけてください。
また、TWELITE プログラマや TWELITE STAGE には簡単にインタラクティブモードに入れるショートカット機能もありますので、そちらもご利用ください。

インタラクティブモードに入ると以下の画面が表示されます。

[CONFIG MENU/App_Wings:PARENT:0/v1-00-1/SID=82011098]
a: (AID=0x67720102) Application ID1 [HEX:32bit]
c: (CHL=18        ) Channels Set
x: (PWR=      0x03) RF Power/Retry [HEX:8bit]
b: (UOP=38400,8N1 ) UART Baud [9600-230400]
o: (OPT=0x00000000) Option Bits [HEX:32bit]
k: (KEY=0xA5A5A5A5) Encryption Key [HEX:32bit]
m: (MOD=         0) Mode (Parent or Router)
A: (ADR=0x00000000) Access point address [HEX:32bit]

 [ESC]:Back [!]:Reset System [M]:Extr Menu

設定コマンド一覧

コマンド設定項目初期値説明
aアプリケーションID0x67720102

同じアプリケーションID同士のみ通信可能です。 異なった値を設定することにより、同一の周波数チャネルを複数のグループで使用することが可能です。
値は32ビットで任意に設定できます。
通信させたい端末は全て同じアプリケーションIDに設定する必要があります。

本設定を変更することで、TWELITE APPS のほかのアプリのデータを受信することできます。詳しくは [こちら](#TWELITE APPS のアプリケーションIDと周波数チャンネルの初期設定値) をご確認ください。

c周波数チャンネル18

チャネル (11~26) を選択します。複数チャネルを指定した場合は チャネルアジリティにより電波干渉の回避に役立ちます。最大3チャネルまで指定可能です。例えばチャネル 13 とチャネル 22 を使用する場合は 13,22 と入力します。

本設定を変更することで、TWELITE APPS のほかのアプリのデータを受信することできます。詳しくは [こちら](#TWELITE APPS のアプリケーションIDと周波数チャンネルの初期設定値) をご確認ください。

x中継時の送信出力と再送回数03

XYの2桁で指定します。 X : 再送回数で1-9 が指定の回数、0 が再送なし Y : 送信出力を指定します。

3が最強で2,1,0と1段階小さくなるたびに -11.5db 出力が低下します。出力を制限し電波の有効伝達範囲を小さくしたい場合に使用します。ただし、伝達可能距離は環境(ノイズ・遮蔽物など)に影響を受けます。 ※ 理論上の伝達距離は 6db 出力が小さくなるたびに 1/2 になりますので、1段階小さくすることで見通し・環境ノイズ無しでの伝達距離は約1/4になります。

例えば 43 を指定すると再送4回、電波出力最強となります。

bUARTオプション38400,8N1

ボーレートとパリティの設定をカンマで区切って指定することができます。

ボーレートは9600、19200、38400、57600、115200、230400が設定可能です。他の値も設定可能ですが、オシロスコープ等を用いて誤差を検証した上で使用してください。
パリティはN: 無し、O: Odd(奇数)、E: Even(偶数)を設定します。ストップビットは1で固定。ハードウェアフローは設定不可です。また、8N1, 7E2 といったビット数、パリティ、ストップビットの設定が可能ですが、動作検証は 8N1 のみとなります。動作検証以外の設定で利用される場合は、オシロスコープなどで波形を観察し要求を満足するか確認の上利用してください。
設定を反映させるにはオプションビットを設定する必要があります。設定しない場合は設定値は使用されず115200bps固定です。

oオプションビット0x00000000各種詳細設定ができます。オプションビットの説明は以下をご参照ください。
k暗号化鍵0xA5A5A5A532bitの16進数を設定します。
m動作モード0

0は親機モードになります。

1は中継モードになります。
2~63は中継ネットを使用したアプリのパケットを多段中継するときに使用します。詳しくは こちら をご確認ください。

A接続先0x00000000中継機モード時に静的ルーティングをするときの接続する上位段のTWELITEのSIDを指定します。近くに存在しないSIDや下位段のSIDを指定したときは不定となるので指定する場合は必ず存在する上位段のSIDを入力してください。0x00000000の時は自動で上位段を検索し、発見したTWELITEを通信を試みます。
S設定値の保存設定を保存します。
R初期値に設定を戻す続けてS キーによる設定の保存を行ってください。
!モジュールの再起動TWELITEを再起動します。
Mルートメニューへ移行

不具合などがあったときに使用するコマンドです。

技術サポートの指示がない限り、使用しないでください。

オプションビットの設定

オプションビット設定値を各ビットごとに解説します。

設定値(16進)機能説明
0x00000200UARTオプションの適用シリアルのボーレートやパリティの設定を反映させます。
0x00000400定期送信パケットのUART出力の停止超簡単!標準アプリとリモコンアプリの1秒毎の定期送信と連続モード時のUART出力を停止します。
0x00001000暗号化通信の設定暗号化通信を有効にします。(相手側の暗号化設定もしてください。)
0x00002000暗号化通信時の平文受信暗号化通信が有効な時に暗号化していないパケットも受信します。

TWELITE APPS のアプリケーションIDと周波数チャンネルの初期設定値

本アプリが初期設定の時は超簡単!標準アプリと通信できるようになっておりますが、アプリケーション ID と周波数チャンネルを通信相手の TWELITE に合わせることでほかの TWELITE APPS とも通信することができます。下表は TWELITE APPS のアプリケーション ID と周波数チャンネルの初期設定値なので、これを参考に本アプリを設定してください。

TWELITE APPSアプリケーション ID の初期設定値周波数チャンネルの初期設定値
超簡単!標準アプリ (App_Twelite)0x6772010218
リモコンアプリ (App_IO)0x6772010716
シリアル通信アプリ (App_Uart)0x6772010318
無線タグアプリ (App_Tag)0x6772630515
パルアプリ (App_PAL)0x6772630515
キューアプリ (App_CUE)0x6772010218

異なる複数の TWELITE APPS のデータを同時に受信する場合

本アプリは異なる TWELITE APPS の電波が混在していても、アプリケーション ID と周波数チャンネルをそろえていただければ受信することできます。例えば、超簡単!標準アプリの子機とパルアプリの子機がそれぞれある場合に、アプリケーションIDと周波数チャンネルをすべての TWELITE でそろえれば、本アプリがインストールされた TWELITE で子機の電波を受信・中継が可能になります。
その際は、下表の例のように設定を行います。

TWELITE の役割アプリケーション ID の設定例周波数チャンネルの設定例
親機 (App_Wings)0x1234567822
中継機 (App_Wings)0x1234567822
子機1 (App_Twelite)0x1234567822
子機2 (App_PAL)0x1234567822