# 親機・中継機アプリ ユーザーズガイド

App\_Wings user's guide

親機・中継機アプリ (App\_Wings) は超簡単！標準アプリやパルアプリなどの TWELITE APPS やAct のパケットを受信と中継をするアプリです。

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

{% hint style="success" %}
[資料の取り扱いについて](https://twelite.gitbook.io/general/about_documents)をご参照ください。  お気付きの点がありましたら、当サポート窓口にご連絡いただければ幸いです。

本資料の表示例（ボタン名や画面キャプチャ）は、資料作成時のバージョンのものとなっています。一部、入手されたバージョンと差異がある場合があります。
{% endhint %}

{% hint style="warning" %}
本プログラムは、[モノワイヤレスソフトウェア使用許諾書](https://sdk.twelite.info/overview/mwsla)に基づき提供されます。
{% endhint %}

[`→モノワイヤレス株式会社ウェブサイト`](https://mono-wireless.com/)


# 概要

Overview

### 機能

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


# 使用方法

How to use

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


# 親機モード

Parent mode

{% content-ref url="/pages/-MIIJ3y7S2kStcc7AmUI" %}
[受信メッセージ](/how-to-use/parent-mode/receive-message)
{% endcontent-ref %}

{% content-ref url="/pages/-MIIJoohEinMBs-UHZj-" %}
[送信コマンド](/how-to-use/parent-mode/transemit-command)
{% endcontent-ref %}


# 受信メッセージ

Receive Message

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

{% hint style="warning" %}
異なるアプリのデータを同時に受信可能ですが、通信チャンネルとアプリケーションIDを合わせていただく必要があります。
{% endhint %}

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

{% content-ref url="/pages/-M4WWsuk13UxA22Vb5Xu" %}
[超簡単！標準アプリ](/how-to-use/parent-mode/receive-message/app_twelite)
{% endcontent-ref %}

{% content-ref url="/pages/-M4IU9nANlyEXrXfhYMb" %}
[リモコンアプリ](/how-to-use/parent-mode/receive-message/app_io)
{% endcontent-ref %}

{% content-ref url="/pages/-M4IUC-xgacHsKXyXaqB" %}
[シリアル通信アプリ](/how-to-use/parent-mode/receive-message/app_uart)
{% endcontent-ref %}

{% content-ref url="/pages/-M4IUBguB8H7LvEZ3X0L" %}
[無線タグアプリ](/how-to-use/parent-mode/receive-message/app_tag)
{% endcontent-ref %}

{% content-ref url="/pages/-M4IUBLUZOtiC1MTN\_uh" %}
[パルアプリ](/how-to-use/parent-mode/receive-message/app_pal)
{% endcontent-ref %}

{% content-ref url="/pages/-MLzHVYBdjY-gjnukc3f" %}
[キューアプリ](/how-to-use/parent-mode/receive-message/app_cue)
{% endcontent-ref %}

{% content-ref url="/pages/aVLQIUiqLU2iSZmJGFyc" %}
[アリアアプリ](/how-to-use/parent-mode/receive-message/app_aria)
{% endcontent-ref %}

{% content-ref url="/pages/-M4IV2QoSKtsJvkY8QLj" %}
[アクト](/how-to-use/parent-mode/receive-message/act)
{% endcontent-ref %}


# 超簡単！標準アプリ

App\_Twelite

### 相手端末からの状態通知：ステータス0x81 <a href="#karanosuttasu-0-x81" id="karanosuttasu-0-x81"></a>

#### データフォーマット <a href="#dtafmatto" id="dtafmatto"></a>

```
: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)        | <p>DI1(0x1) DI2(0x2) DI3(0x4) DI4(0x8)。1がOn(Lowレベル)。</p><p>MBSが1だったら定期送信。</p> |
| 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       | 未使用                | <p>LSBから順に２ビットずつ補正値、LSB側が AI1、MSB側が AI4</p><p>※2、※3 参照</p>                    |
| g  | 1    | チェックサム       | FB       |                    | ​                                                                             |

※1 中継フラグは中継の回数を意味します。中継をしていない時は０になります。 ※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 <a href="#dtanokomando-0-x01" id="dtanokomando-0-x01"></a>

#### データフォーマット <a href="#dtafmatto-1" id="dtafmatto-1"></a>

```
:780100112233AABBCCDD13
 ^1^2^^^^^^^^^^^^^^^3^4
```

| 番号 | バイト数 | 意味           | データ例             | 内容                | 備考 |
| -- | ---- | ------------ | ---------------- | ----------------- | -- |
| 1  | 1    | 送信元の論理デバイスID | 78               | 送信元の論理デバイスIDは0x78 | ​  |
| 2  | 1    | コマンドID       | 01               | 任意データの送受信         |    |
| 3  | N    | データ          | 00112233AABBCCDD | ​                 |    |
| 4  | 1    | チェックサム       | 13               |                   |    |


# リモコンアプリ

App\_IO

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

#### データフォーマット

```
: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)          | <p>LSBからDI1、DI2…<br>1がOn(Lowレベル)。</p> |
| b  | 2    | DI の変更状態ビット  | 0001     | DI1が変更対象             | <p>LSBからDI1、DI2…<br>1が変更対象。</p>       |
| c  | 2    | DIの割込状態ビット   | 0001     | DI1が割り込み入力された(変化した)。 |                                       |
| d  | 1    | 未使用          | 00       |                      |                                       |
| e  | 1    | チェックサム       | 86       |                      |                                       |

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


# シリアル通信アプリ

App\_Uart

{% hint style="warning" %}
本アプリでは書式モードの電文のみ受信可能です。

透過モードやチャットモードのパケットを受信した場合の出力は未定義ですので、ご注意ください。
{% endhint %}

### 簡易書式

#### データフォーマット

```
:780100112233AABBCCDD13
 ​^1^2^^^^^^^^^^^^^^^3^4
```

| 番号 | バイト数 | 意味           | データ例             | 内容                | 備考             |
| -- | ---- | ------------ | ---------------- | ----------------- | -------------- |
| 1  | 1    | 送信元の論理デバイスID | 78               | 送信元の論理デバイスIDは0x78 |                |
| 2  | 1    | 応答ID         | 01               |                   | 任意の0x00～0x7Fの値 |
| 3  | N    | データ          | 00112233AABBCCDD |                   |                |
| 4  | 1    | チェックサム       | 01               |                   |                |

### 拡張書式 <a href="#jian-yi-shu-shi" id="jian-yi-shu-shi"></a>

#### データフォーマット <a href="#dtafmatto" id="dtafmatto"></a>

```
: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             |                    | ​                                |


# 無線タグアプリ

App\_Tag

{% hint style="info" %}
詳しい出力書式に関しては [こちら](https://mono-wireless.com/jp/products/TWE-APPS/App_Tag/index.html) をご覧ください。
{% endhint %}

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

### アナログセンサ―

```
: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    | 電源電圧 \[ｍV]   | DF       | 3330mV              | 電源電圧の計算方法を参照       |
| 8  | 2    | ADC1の電圧      | 08FD     | 2301mV              |                    |
| 9  | 2    | ADC2の電圧      | 09A3     | 2467mV              |                    |
| a  | 4    | 未使用          | 00000000 |                     |                    |
| b  | 1    | チェックサム       | E9       |                     |                    |

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

```
: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    | 電源電圧 \[ｍV]   | 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    | 電源電圧 \[ｍV]   | DF       | 3330mV             | 電源電圧の計算方法を参照                         |
| 8  | 2    | ADC1の電圧      | 0007     | 7mV                |                                      |
| 9  | 2    | ADC2の電圧      | 09A3     | 2467mV             |                                      |
| a  | 1    | センサーモード番号    | 00       | 立ち下がり検出モード         | <p>0：立ち下り検出モード</p><p>1：立ち上り検出モード</p> |
| 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


# パルアプリ

App\_PAL

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

下記のデータ羅列は、: に始まり改行コードまでの１６進数データをテキストで表現したものです。

```
:80000000CF7F7382019E3B0180050F003400038135001205040406000000113008020B8611300102042E000000018015044006FFF00010FC1815044106FFF00018FC1815044206FFF00010FC0015044306FFF80000FC1015044406FFF00010FC1815044506FFE00018FBF815044606FFE80000FC0015044706FFE80010FBF815044806FFE80010FC0815044906FFE80010FC080C0E[CR][LF]
```

{% hint style="info" %}
データの詳細情報は[こちら](/how-to-use/parent-mode/receive-message/app_pal/app_pal-detail)をご参照ください。
{% endhint %}

上記が逐次解釈する書式ですので、厳密に解釈するのが煩雑です。

そのため、以下に使用するセンサーパルごとのデータのある場所とその抽出例のコードを示します。\
その際、: を 0 文字目とします。

### データの位置の表記法

以下の説明では、データの位置を示す際、Pythonのリストの指定の表記ような以下の書式でご案内します。

```
[データの開始位置:データの開始位置+文字数]
```

例えば、15文字目から4文字を指定する場合は、以下のように表記します。

```
[15:15+4]
```

### 開閉センサーパル

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

```
:80000000A8001C82012B1E01808103113008020D0C1130010203E40000000101EC6E[CR][LF]
```

磁気センサーのデータは63文字目から2文字分です。\
磁気センサーは下表の値を出力します。

<table><thead><tr><th width="150">磁気センサーデータ</th><th>意味</th></tr></thead><tbody><tr><td>磁気センサーのデータ</td><td>意味</td></tr><tr><td>00</td><td>磁石が遠ざかった。</td></tr><tr><td>01</td><td>磁石のN極が近づいた。</td></tr><tr><td>02</td><td>磁石のS極が近づいた。</td></tr><tr><td>80</td><td>磁石が近くにない。(タイマーによる定期送信)</td></tr><tr><td>81</td><td>磁石のN極が近くにある。(タイマーによる定期送信)</td></tr><tr><td>82</td><td>磁石がS極が近くにある。(タイマーによる定期送信)</td></tr></tbody></table>

例えば、磁石が近くにない状態から、磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。

```
80 -- 80 -- 80 -- 01(※) -- 81 -- 81 --
```

※ 多くの場合は磁石のN極を検出したときに01になりますが、設置環境によっては、出力値が一定期間安定せず、02や稀に00が出力される場合があります。

また、磁石が近くにあるかだけ知りたい場合は、64文字目だけ確認し、0だったら磁石が近くにない、1または2の時は磁石が近くにあると判定します。

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

以下は磁気センサーの状態を抜き出すためのPythonの対話モードでの実行例です。\
以下の例では、63文字目と64文字目を抜き出して数値に変換し、上表に従って磁気センサーが検出している状態に変換し、標準出力しております。

```python
>>> 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] 温度(符号付整数、単位は℃の100倍(23.56℃→2356))
[75:75+4] 湿度(符号無整数、単位は%の100倍(25.99%→2599))
[87:87+8] 照度(符号無整数、単位はLux)
```

以下は、環境センサーパルのデータを取得するためのPythonの対話モードでの実行例です。\
出力メッセージから、温度、湿度、照度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、温度は符号付の数値に変換します。\
そのあと、センサーのデータを出力しますが、温度と湿度データは100倍されたデータですので、出力時に100で割った値を出力しています。

```python
>>> 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 データ１ 0010(X軸)/0010(Y軸)/0450(Z軸)
[83:83+12]   000800100430 データ２ 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サンプル目の加速度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、符号付の数値に変換します。\
変換後、加速度データを出力します。

```python
>>> 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      
```

<table data-header-hidden><thead><tr><th width="150">番号</th><th width="150">バイト数</th><th width="150">意味</th><th width="150">データ例</th><th width="150">内容</th><th>備考</th></tr></thead><tbody><tr><td>番号</td><td>バイト数</td><td>意味</td><td>データ例</td><td>内容</td><td>備考</td></tr><tr><td>1</td><td>4</td><td>中継機のシリアルID</td><td>80000000</td><td>中継無し</td><td></td></tr><tr><td>2</td><td>1</td><td>LQI</td><td>A8</td><td>168</td><td></td></tr><tr><td>3</td><td>2</td><td>続き番号</td><td>001C</td><td>28</td><td></td></tr><tr><td>4</td><td>4</td><td>送信元のシリアルID</td><td>82012B1E</td><td>送信元のシリアルIDは2012B1E</td><td></td></tr><tr><td>5</td><td>1</td><td>送信元の論理デバイスID</td><td>01</td><td>送信元の論理デバイスIDは01</td><td></td></tr><tr><td>6</td><td>1</td><td>センサー種別</td><td>80</td><td></td><td></td></tr><tr><td>7</td><td>1</td><td>PAL基板バージョンとPAL基板ID</td><td>81</td><td>開閉センサーパル Ver.1</td><td></td></tr><tr><td>8</td><td>1</td><td>センサーデータの数</td><td>03</td><td>3つ</td><td></td></tr><tr><td>9</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり<br>符号なしShort型</td><td></td></tr><tr><td>a</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>b</td><td>1</td><td>拡張バイト</td><td>08</td><td>電源電圧</td><td></td></tr><tr><td>c</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>d</td><td>2</td><td>データ</td><td>0D0C</td><td>3340ｍV</td><td></td></tr><tr><td>e</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり<br>符号なしShort型</td><td></td></tr><tr><td>f</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>g</td><td>1</td><td>拡張バイト</td><td>01</td><td>ADC1</td><td></td></tr><tr><td>h</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>i</td><td>2</td><td>データ</td><td>03E4</td><td>996mV</td><td></td></tr><tr><td>j</td><td>1</td><td>各種情報ビット値</td><td>00</td><td><p>拡張バイトなし</p><p>符号なしChar型</p></td><td></td></tr><tr><td>k</td><td>1</td><td>データソース</td><td>00</td><td>磁気</td><td></td></tr><tr><td>l</td><td>1</td><td>拡張バイト</td><td>00</td><td>0</td><td></td></tr><tr><td>m</td><td>1</td><td>データ長</td><td>01</td><td>1バイト</td><td></td></tr><tr><td>n</td><td>1</td><td>データ</td><td>01</td><td>磁石(N極)が近づいた</td><td>00: 磁石が離れた。<br>01: N極が近づいた<br>02: S局が近づいた<br>80: 変化なし(磁石なし)<br>81: 変化なし(N極が近くにある)<br>82: 変化なし(S極が近くにある)</td></tr><tr><td>o</td><td>1</td><td>チェックサム1</td><td>EC</td><td></td><td></td></tr><tr><td>p</td><td>1</td><td>チェックサム2</td><td>6E</td><td></td><td></td></tr></tbody></table>

### 環境センサーパル <a href="#sensparu" id="sensparu"></a>

```
​: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                
```

<table data-header-hidden><thead><tr><th width="150">番号</th><th width="150">バイト数</th><th width="150">意味</th><th width="150">データ例</th><th>内容</th><th>備考</th></tr></thead><tbody><tr><td>番号</td><td>バイト数</td><td>意味</td><td>データ例</td><td>内容</td><td>備考</td></tr><tr><td>1</td><td>4</td><td>中継機のシリアルID</td><td>80000000</td><td>中継無し</td><td></td></tr><tr><td>2</td><td>1</td><td>LQI</td><td>84</td><td>132</td><td></td></tr><tr><td>3</td><td>2</td><td>続き番号</td><td>811F</td><td>33055</td><td></td></tr><tr><td>4</td><td>4</td><td>送信元のシリアルID</td><td>810EFF6D</td><td>送信元のシリアルIDは810EFF6D</td><td></td></tr><tr><td>5</td><td>1</td><td>送信元の論理デバイスID</td><td>04</td><td>送信元の論理デバイスIDは04</td><td></td></tr><tr><td>6</td><td>1</td><td>センサー種別</td><td>80</td><td></td><td></td></tr><tr><td>7</td><td>1</td><td>PAL基板バージョンとPAL基板ID</td><td>82</td><td>環境センサーパル Ver.1</td><td></td></tr><tr><td>8</td><td>1</td><td>センサーデータの数</td><td>05</td><td>5つ</td><td></td></tr><tr><td>9</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり<br>符号なしShort型</td><td></td></tr><tr><td>a</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>b</td><td>1</td><td>拡張バイト</td><td>08</td><td>電源電圧</td><td></td></tr><tr><td>c</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>d</td><td>2</td><td>データ</td><td>0AEB</td><td>2795mV</td><td></td></tr><tr><td>e</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり<br>符号なしShort型</td><td></td></tr><tr><td>f</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>g</td><td>1</td><td>拡張バイト</td><td>01</td><td>ADC1</td><td></td></tr><tr><td>h</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>i</td><td>2</td><td>データ</td><td>035A</td><td>858mV</td><td></td></tr><tr><td>j</td><td>1</td><td>各種情報ビット値</td><td>05</td><td><p>拡張バイトなし</p><p>符号ありShort</p></td><td></td></tr><tr><td>k</td><td>1</td><td>データソース</td><td>01</td><td>温度</td><td></td></tr><tr><td>l</td><td>1</td><td>拡張バイト</td><td>00</td><td>0</td><td></td></tr><tr><td>m</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>n</td><td>2</td><td>データ</td><td>09E3</td><td>25.31℃</td><td></td></tr><tr><td>o</td><td>1</td><td>各種情報ビット値</td><td>01</td><td><p>拡張バイトなし</p><p>符号なしShort</p></td><td></td></tr><tr><td>p</td><td>1</td><td>データソース</td><td>02</td><td>湿度</td><td></td></tr><tr><td>q</td><td>1</td><td>拡張バイト</td><td>00</td><td>0</td><td></td></tr><tr><td>r</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>s</td><td>2</td><td>データ</td><td>0E3A</td><td>36.42%</td><td></td></tr><tr><td>t</td><td>1</td><td>各種情報ビット値</td><td>02</td><td><p>拡張バイトなし</p><p>符号ありLong</p></td><td></td></tr><tr><td>u</td><td>1</td><td>データソース</td><td>03</td><td>照度</td><td></td></tr><tr><td>v</td><td>1</td><td>拡張バイト</td><td>00</td><td>0</td><td></td></tr><tr><td>w</td><td>1</td><td>データ長</td><td>04</td><td>4バイト</td><td></td></tr><tr><td>x</td><td>4</td><td>データ</td><td>000001BE</td><td>446 lux</td><td></td></tr><tr><td>y</td><td>1</td><td>チェックサム1</td><td>6C</td><td></td><td></td></tr><tr><td>z</td><td>1</td><td>チェックサム2</td><td>00</td><td></td><td></td></tr></tbody></table>

### 動作センサーパル <a href="#sensparu" id="sensparu"></a>

#### 出力例 <a href="#chu-li-li" id="chu-li-li"></a>

```
: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               
```

<table data-header-hidden><thead><tr><th width="150">番号</th><th width="150">バイト数</th><th width="150">意味</th><th width="155">データ例</th><th width="150">内容</th><th>備考</th></tr></thead><tbody><tr><td>番号</td><td>バイト数</td><td>意味</td><td>データ例</td><td>内容</td><td>備考</td></tr><tr><td>1</td><td>4</td><td>中継機のシリアルID</td><td>80000000</td><td>中継無し</td><td></td></tr><tr><td>2</td><td>1</td><td>LQI</td><td>BA</td><td>186</td><td></td></tr><tr><td>3</td><td>2</td><td>続き番号</td><td>0023</td><td>35</td><td></td></tr><tr><td>4</td><td>4</td><td>送信元のシリアルID</td><td>82011CEF</td><td>送信元のシリアルIDは82011CEF</td><td></td></tr><tr><td>5</td><td>1</td><td>送信元の論理デバイスID</td><td>01</td><td>送信元の論理デバイスIDは01</td><td></td></tr><tr><td>6</td><td>1</td><td>センサー種別</td><td>80</td><td></td><td></td></tr><tr><td>7</td><td>1</td><td>PAL基板バージョンとPAL基板ID</td><td>83</td><td>動作センサーパル Ver.1</td><td></td></tr><tr><td>8</td><td>1</td><td>センサーデータの数</td><td>12</td><td>18</td><td></td></tr><tr><td>9</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり<br>符号なしShort型</td><td></td></tr><tr><td>a</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>b</td><td>1</td><td>拡張バイト</td><td>08</td><td>電源電圧</td><td></td></tr><tr><td>c</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>d</td><td>2</td><td>データ</td><td>0D02</td><td>3330mV</td><td></td></tr><tr><td>e</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり<br>符号なしShort型</td><td></td></tr><tr><td>f</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>g</td><td>1</td><td>拡張バイト</td><td>01</td><td>ADC1</td><td></td></tr><tr><td>h</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>i</td><td>2</td><td>データ</td><td>055C</td><td>1372mV</td><td></td></tr><tr><td>j</td><td>1</td><td>各種情報ビット値</td><td>15</td><td><p>拡張バイトあり</p><p>符号ありShort</p></td><td></td></tr><tr><td>k</td><td>1</td><td>データソース</td><td>04</td><td>加速度</td><td></td></tr><tr><td>l</td><td>1</td><td>拡張バイト</td><td>40</td><td><p>サンプリング周波数 : 100Hz</p><p>0サンプル目</p></td><td></td></tr><tr><td>m</td><td>1</td><td>データ長</td><td>06</td><td>6バイト</td><td></td></tr><tr><td>n</td><td>2</td><td>データ</td><td>001000100450</td><td><p>X : 16mg</p><p>Y : 16mg</p><p>Z : 1104mg</p></td><td></td></tr><tr><td>o</td><td>1</td><td>各種情報ビット値</td><td>15</td><td><p>拡張バイトあり</p><p>符号ありShort</p></td><td></td></tr><tr><td>p</td><td>1</td><td>データソース</td><td>04</td><td>加速度</td><td></td></tr><tr><td>q</td><td>1</td><td>拡張バイト</td><td>41</td><td><p>サンプリング周波数 : 100Hz</p><p>1サンプル目</p></td><td></td></tr><tr><td>r</td><td>1</td><td>データ長</td><td>06</td><td>2バイト</td><td></td></tr><tr><td>s</td><td>2</td><td>データ</td><td>000800100430</td><td><p>X : 8mg</p><p>Y : 16mg</p><p>Z : 1072mg</p></td><td></td></tr><tr><td></td><td></td><td></td><td>...</td><td></td><td></td></tr><tr><td>t</td><td>1</td><td>各種情報ビット値</td><td>15</td><td><p>拡張バイトあり</p><p>符号ありShort</p></td><td></td></tr><tr><td>u</td><td>1</td><td>データソース</td><td>04</td><td>加速度</td><td></td></tr><tr><td>v</td><td>1</td><td>拡張バイト</td><td>4F</td><td><p>サンプリング周波数 : 100Hz</p><p>15サンプル目</p></td><td></td></tr><tr><td>w</td><td>1</td><td>データ長</td><td>06</td><td>6バイト</td><td></td></tr><tr><td>x</td><td>4</td><td>データ</td><td>000000180438</td><td><p>X : 0mg</p><p>Y : 24mg</p><p>Z : 1080mg</p></td><td></td></tr><tr><td>y</td><td>1</td><td>チェックサム1</td><td>28</td><td></td><td></td></tr><tr><td>z</td><td>1</td><td>チェックサム2</td><td>A5</td><td></td><td></td></tr></tbody></table>

### 通知パル

```
: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            
```

<table data-header-hidden><thead><tr><th width="150">番号</th><th width="150">バイト数</th><th width="150">意味</th><th width="150">データ例</th><th>データ例の内容</th><th>備考</th></tr></thead><tbody><tr><td>番号</td><td>バイト数</td><td>意味</td><td>データ例</td><td>データ例の内容</td><td>備考</td></tr><tr><td>1</td><td>4</td><td>中継機のシリアルID</td><td>80000000</td><td>中継無し</td><td></td></tr><tr><td>2</td><td>1</td><td>LQI</td><td>CQ</td><td>186</td><td></td></tr><tr><td>3</td><td>2</td><td>続き番号</td><td>BBC0</td><td>48064</td><td></td></tr><tr><td>4</td><td>4</td><td>送信元のシリアルID</td><td>82014C35</td><td>送信元のシリアルIDは82014C35</td><td></td></tr><tr><td>5</td><td>1</td><td>送信元の論理デバイスID</td><td>01</td><td>送信元の論理デバイスIDは01</td><td></td></tr><tr><td>6</td><td>1</td><td>センサー種別</td><td>80</td><td></td><td></td></tr><tr><td>7</td><td>1</td><td>PAL基板バージョンとPAL基板ID</td><td>84</td><td>通知パル Ver.1</td><td></td></tr><tr><td>8</td><td>1</td><td>センサーデータの数</td><td>03</td><td>3</td><td></td></tr><tr><td>9</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり 符号なしShort型</td><td></td></tr><tr><td>a</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>b</td><td>1</td><td>拡張バイト</td><td>08</td><td>電源電圧</td><td></td></tr><tr><td>c</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>d</td><td>2</td><td>データ</td><td>0D0C</td><td>3340mV</td><td></td></tr><tr><td>e</td><td>1</td><td>各種情報ビット値</td><td>11</td><td>拡張バイトあり 符号なしShort型</td><td></td></tr><tr><td>f</td><td>1</td><td>データソース</td><td>30</td><td>ADC</td><td></td></tr><tr><td>g</td><td>1</td><td>拡張バイト</td><td>01</td><td>ADC1</td><td></td></tr><tr><td>h</td><td>1</td><td>データ長</td><td>02</td><td>2バイト</td><td></td></tr><tr><td>i</td><td>2</td><td>データ</td><td>03F9</td><td>1017mV</td><td></td></tr><tr><td>j</td><td>1</td><td>各種情報ビット値</td><td>12</td><td>拡張バイトあり符号なしLong</td><td></td></tr><tr><td>k</td><td>1</td><td>データソース</td><td>05</td><td>イベント</td><td></td></tr><tr><td>l</td><td>1</td><td>拡張バイト</td><td>04</td><td>加速度によるイベント</td><td></td></tr><tr><td>m</td><td>1</td><td>データ長</td><td>04</td><td>4バイト</td><td></td></tr><tr><td>n</td><td>1</td><td>データ1</td><td>10</td><td>イベント0x10(16)が発生</td><td>加速度の場合<br>0x01(1)～0x06(6)：さいころ<br>0x08(8)：シェイク<br>0x10(16)：タップ</td></tr><tr><td>o</td><td>3</td><td>データ2</td><td>000000</td><td>0</td><td>将来の拡張用。現在は未使用</td></tr><tr><td>p</td><td>1</td><td>チェックサム1</td><td>28</td><td></td><td></td></tr><tr><td>q</td><td>1</td><td>チェックサム2</td><td>A5</td><td></td><td></td></tr></tbody></table>


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

Details App\_PAL output format

## 出力書式

```
: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 | [センサーデータ](/how-to-use/parent-mode/receive-message/app_pal#sensdta)参照 |
| a  | 1    | チェックサム1            | EC                                 | 1～9までのCRC8                                                           |
| b  | 1    | チェックサム2            | 6E                                 | 1～aまでのLRC                                                            |

### センサーデータ

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

```
113008020D0C
^1^2^3^4^^^5
```

| 番号 | バイト数 | 意味                                                               | データ例 | 備考                    |
| -- | ---- | ---------------------------------------------------------------- | ---- | --------------------- |
| 1  | 1    | [情報ビット](/how-to-use/parent-mode/receive-message/app_pal#bitto)   | 11   | データの大きさや拡張バイトの有無を保持する |
| 2  | 1    | [データソース](/how-to-use/parent-mode/receive-message/app_pal#dtassu) | 30   | センサーの種類               |
| 3  | 1    | [拡張バイト](/how-to-use/parent-mode/receive-message/app_pal#baito)   | 08   | データの補足情報が付与される        |
| 4  | 1    | [データ長](/how-to-use/parent-mode/receive-message/app_pal#dta)      | 02   | データのバイト数              |
| 5  | N    | [データ](/how-to-use/parent-mode/receive-message/app_pal#dta-1)     | 0D0C | センサーの実データ             |

#### 情報ビット

データの型や拡張バイトの有無、読み込みエラーの有無を示すデータです。\
読み方は以下の通りです。

| ビット位置 | 意味                                                                                              |
| ----- | ----------------------------------------------------------------------------------------------- |
| 7     | 読み込みエラーの有無。1だったら読み込みエラー                                                                         |
| 6     | -                                                                                               |
| 5     | -                                                                                               |
| 4     | 拡張バイトの有無。1だったら拡張バイトあり。                                                                          |
| 3     | -                                                                                               |
| 2     | データの符号の有無。1だったら符号あり、もしくはデータ型が可変長                                                                |
| 1, 0  | <p>データ型。</p><p>00 : char(1バイト)</p><p>01 : short(2バイト)</p><p>10 : long (4バイト)</p><p>11 : 可変長</p> |

#### データソース

データの種類を示します。

| ID   | 内容        |
| ---- | --------- |
| 0x00 | 磁気        |
| 0x01 | 温度        |
| 0x02 | 湿度        |
| 0x03 | 照度        |
| 0x04 | 加速度       |
| 0x05 | イベント      |
| 0x30 | 電圧        |
| 0x34 | パケットプロパティ |

#### 拡張バイト

何サンプル目のデータか、ADCの何番目のデータかなどデータの補助的な値が格納されます。

| データソース    | 内容                                                                                                        |
| --------- | --------------------------------------------------------------------------------------------------------- |
| 磁気        | なし                                                                                                        |
| 温度        | なし                                                                                                        |
| 湿度        | なし                                                                                                        |
| 照度        | なし                                                                                                        |
| 加速度       | <p>7-5ビット：サンプリング周波数。0=25Hz, 1=50Hz, 2=100Hz, 3=190Hz, 4以上=未定義</p><p>4-0ビット：サンプリング番号。0が最も古く、31が最も新しい。</p>  |
| イベント      | <p>イベントの発生要因を示す。</p><p>磁気センサー:0x00, 温度:0x01, 湿度:0x02, 照度:0x03, 加速度:0x04</p><p>MSBが1の場合はデータ2にデータが存在する。</p> |
| 電圧        | <p>1 : ADC1<br>2 : ADC2<br>3 : ADC3<br>4 : ADC4<br>8 : 電源電圧</p>                                           |
| パケットプロパティ | なし                                                                                                        |

#### データ長

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

#### データ

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

| データソース    | バイト数            | 内容                                                                                                                                                                                                                                                                                                                                                                               | 数値例 (16進数)   | 数値例の内容                                                                                                              |
| --------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------- |
| 磁気        | 1(符号無1バイト)      | <p>0x00=近くに磁石がない<br>0x01=N極が近い<br>0x02=S極が近い<br>0x80= 定期送信ビット(このビットが1の時は定期送信、0の時は磁気センサーの状態が変化したことを示す)</p>                                                                                                                                                                                                                                                                        | 01           | 磁石のN極が近くにある                                                                                                         |
| 温度        | 2(符号有2バイト)      | 温度の100倍 (℃)                                                                                                                                                                                                                                                                                                                                                                      | 09E3         | 25.31℃                                                                                                              |
| 湿度        | 2(符号無2バイト)      | 湿度の100倍 (%)                                                                                                                                                                                                                                                                                                                                                                      | 0E3A         | 36.42%                                                                                                              |
| 照度        | 4(符号無4バイト)      | 照度 (lux)                                                                                                                                                                                                                                                                                                                                                                         | 000001BE     | 446 lux                                                                                                             |
| 加速度       | 6(符号有2バイト\*3)   | X 軸、Y 軸、Z軸の順でそれぞれの2バイトの重力加速度 (mg)                                                                                                                                                                                                                                                                                                                                                | 001000100450 | <p>X : 16mg</p><p>Y : 16mg</p><p>Z : 1104mg</p>                                                                     |
| イベント      | 4(符号無1バイト+3バイト) | <p><strong>1バイト : イベント内容</strong></p><p>・拡張バイトが磁気の場合</p><p>0x00(0):近くに磁石がない<br>0x01(1):磁石のN極が近くにある<br>0x02(2):磁石のS極が近くにある</p><p>・拡張バイトが加速度の場合</p><p>0x01(1)～0x06(6)：さいころ<br>0x08(8)：シェイク<br>0x10(16)：ムーブ<br></p><p><strong>3バイト : 未使用(将来の拡張用)</strong></p>                                                                                                                       | 01000000     | <p><strong>拡張バイトが磁気の場合</strong> : 磁石のN極が近くにある<br><strong>拡張バイトが加速度の場合</strong> : さいころの1(加速度センサーが上を向いている)</p><p></p> |
| 電圧        | 2(符号無2バイト)      | 電圧 (mV)                                                                                                                                                                                                                                                                                                                                                                          | 03E4         | 996mV                                                                                                               |
| パケットプロパティ | 3(符号無1バイト\*3)   | <p><strong>1バイト : パケットID</strong><br>0～127、MSBが1の時はイベントあり。<br>0もしくは128はADC1と電源電圧、イベント以外はデータがないことを示す。<br></p><p><strong>1バイト : 起床要因データソース</strong></p><p>磁気センサー:0x00<br>温度:0x01<br>湿度:0x02<br>照度:0x03<br>加速度:0x04<br>DIO:0x31</p><p>タイマー:0x35<br><br><strong>1バイト : 起床要因</strong></p><p>送信要因 イベントが発生した:0x00<br>値が変化した:0x01<br>値が閾値を超えた:0x02<br>閾値を下回った:0x03<br>閾値の範囲に入った:0x04</p> | 810402       | パケットIDが1でイベントあり、起床要因データソースは加速度で、閾値を超えたので起床した。                                                                       |


# キューアプリ

App\_CUE

TWELITE CUEには加速度センサーと磁気センサーが搭載されており、両方のセンサーのデータも出力メッセージに含まれます。

このページでは出力メッセージからそれらのセンサーデータの読み方について解説します。

{% hint style="info" %}
書式は[パルアプリ](/how-to-use/parent-mode/receive-message/app_pal)と同様です。詳しい説明は[こちら](/how-to-use/parent-mode/receive-message/app_pal/app_pal-detail)をご覧ください。
{% endhint %}

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

{% hint style="info" %}
以下のご案内はTWELITE CUEモード時のご案内です。

動作センサーパルモードの場合は、[こちら](/how-to-use/parent-mode/receive-message/app_pal#sensparu-2)をご確認ください。

また、開閉センサーパルモードの場合は[こちら](/how-to-use/parent-mode/receive-message/app_pal#sensparu)をご確認ください。
{% endhint %}

下記のデータ羅列は、: に始まり改行コードまでの１６進数データをテキストで表現したものです。

```
:80000000CF7F7382019E3B0180050F003400038135001205040406000000113008020B8611300102042E000000018015044006FFF00010FC1815044106FFF00018FC1815044206FFF00010FC0015044306FFF80000FC1015044406FFF00010FC1815044506FFE00018FBF815044606FFE80000FC0015044706FFE80010FBF815044806FFE80010FC0815044906FFE80010FC080C0E[CR][LF]
```

上記は逐次解釈する書式ですので、厳密に解釈するのは煩雑です。

{% hint style="info" %}
データの詳細情報は[こちら](/how-to-use/parent-mode/receive-message/app_pal/app_pal-detail)をご参照ください。
{% endhint %}

そのため、各センサーの値の場所とその抽出例をご説明します。\
その際、: を 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 データ１ FFF0(X軸)/0010(Y軸)/FC18(Z軸)
[123:123+12] FFF00018FC18 データ２ 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文字分です。\
磁気センサーは下表の値を出力します。

<table><thead><tr><th width="150">磁気センサーデータ</th><th>意味</th></tr></thead><tbody><tr><td>磁気センサーのデータ</td><td>意味</td></tr><tr><td>00</td><td>磁石が遠ざかった。</td></tr><tr><td>01</td><td>磁石のN極が近づいた。</td></tr><tr><td>02</td><td>磁石のS極が近づいた。</td></tr><tr><td>80</td><td>磁石が近くにない。(タイマーによる定期送信)</td></tr><tr><td>81</td><td>磁石のN極が近くにある。(タイマーによる定期送信)</td></tr><tr><td>82</td><td>磁石がS極が近くにある。(タイマーによる定期送信)</td></tr></tbody></table>

例えば、磁石が近くにない状態から、磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。

```
80 -- 80 -- 80 -- 01(※) -- 81 -- 81 --
```

※ 多くの場合は磁石のN極を検出したときに01になりますが、設置環境によっては、出力値が一定期間安定せず、02や稀に00が出力される場合があります。

また、磁石が近くにあるかだけ知りたい場合は、94文字目だけ確認し、0だったら磁石が近くにない、1または2の時は磁石が近くにあると判定します。

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

1サンプル目の加速度と磁気センサーのデータを取得するPythonの対話モードでの実行例です。\
シリアルメッセージから、1サンプル目の加速度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、符号付の数値に変換します。\
磁気センサーのデータをシリアル出力から抜き出し、上表に従って磁気センサーが検出している状態に変換し、加速度データと磁気センサーの情報を標準出力しております。

```python
>>> 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
```

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

### パケットプロパティ

```
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   | <p>0～127、MSBはイベントがあるかどうか<br>0もしくは0x80はADC1と電源電圧、イベント以外はデータがないことを示す</p>                       |
| 6 | 起床要因センサー | 1    | 04   | <p>磁気センサー:0x00<br>温度:0x01<br>湿度:0x02<br>照度:0x03<br>加速度:0x04<br>DIO:0x31</p><p>タイマー:0x35</p>  |
| 7 | 起床要因     | 1    | 02   | <p>送信要因 イベントが発生した:0x00<br>値が変化した:0x01<br>値が閾値を超えた:0x02<br>閾値を下回った:0x03<br>閾値の範囲に入った:0x04</p> |

### イベント

```
1205040410000000
^1^2^3^4^5^6^7^8
```

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


# アリアアプリ

App\_ARIA

TWELITE ARIAには温湿度センサーと磁気センサーが搭載されており、両方のセンサーのデータも出力メッセージに含まれます。

このページでは出力メッセージからそれらのセンサーデータの読み方について解説します。

{% hint style="info" %}
書式は[パルアプリ](/how-to-use/parent-mode/receive-message/app_pal)と同様です。詳しい説明は[こちら](/how-to-use/parent-mode/receive-message/app_pal/app_pal-detail)をご覧ください。
{% endhint %}

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

{% hint style="info" %}
以下のご案内はTWELITE ARIAモード時のご案内です。

開閉センサーパルモードの場合は[こちら](/how-to-use/parent-mode/receive-message/app_pal#sensparu)をご確認ください。
{% endhint %}

下記のデータ羅列は、: に始まり改行コードまでの１６進数データをテキストで表現したものです。

```
:80000000CF00028201BAA201800607003400038135001205350401000000113008020D201130010204ED00000001800501000209D0010200020F347934[CR][LF]
```

上記は逐次解釈する書式ですので、厳密に解釈するのは煩雑です。&#x20;

{% hint style="info" %}
データの詳細情報は[こちら](/how-to-use/parent-mode/receive-message/app_pal/app_pal-detail)をご参照ください。
{% endhint %}

そのため、各センサーの値の場所とその抽出例をご説明します。\
その際、: を 0 文字目とします。

### データの位置の表記法

以下の説明では、データの位置を示す際、Pythonのリストの指定の表記ような以下の書式でご案内します。

```
[データの開始位置:データの開始位置+文字数]
```

例えば、15文字目から4文字を指定する場合は、以下のように表記します。

```
[15:15+4]
```

### 温湿度センサー

温度などのセンサーデータは103文字目から118文字目までに含まれております。\
各データの位置やデータ形式は以下の通りです。

```
データ位置   意味
[103:103+4] 温度(符号付整数、単位は℃の100倍(23.56℃→2356))
[115:115+4] 湿度(符号無整数、単位は%の100倍(25.99%→2599))
```

### 磁気センサー

磁気センサーは93文字目から2文字分です。\
磁気センサーは下表の値を出力します。

<table><thead><tr><th width="150">磁気センサーデータ</th><th>意味</th></tr></thead><tbody><tr><td>磁気センサーのデータ</td><td>意味</td></tr><tr><td>00</td><td>磁石が遠ざかった。</td></tr><tr><td>01</td><td>磁石のN極が近づいた。</td></tr><tr><td>02</td><td>磁石のS極が近づいた。</td></tr><tr><td>80</td><td>磁石が近くにない。(タイマーによる定期送信)</td></tr><tr><td>81</td><td>磁石のN極が近くにある。(タイマーによる定期送信)</td></tr><tr><td>82</td><td>磁石がS極が近くにある。(タイマーによる定期送信)</td></tr></tbody></table>

例えば、磁石が近くにない状態から、磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。磁石(N極)が一定期間センサーの近くにある場合、以下のように磁気センサーの値が変化します。

```
80 -- 80 -- 80 -- 01(※) -- 81 -- 81 --
```

※ 多くの場合は磁石のN極を検出したときに01になりますが、設置環境によっては、出力値が一定期間安定せず、02や稀に00が出力される場合があります。

また、磁石が近くにあるかだけ知りたい場合は、94文字目だけ確認し、0だったら磁石が近くにない、1または2の時は磁石が近くにあると判定します。

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

以下は、温湿度と磁気センサーのデータを取得するPythonの対話モードでの実行例です。\
出力メッセージから、温度、湿度、照度の文字列を取り出し、数値に変換します。その際、そのままだと符号無の数値ですので、温度は符号付の数値に変換します。\
そのあと、センサーのデータを出力しますが、温度と湿度データは100倍されたデータですので、出力時に100で割った値を出力しています。\
また、磁気センサーのデータをシリアル出力から抜き出し、上表に従って磁気センサーが検出している状態に変換し、加速度データと磁気センサーの情報を標準出力しております。

```python
>>> 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
```

<table><thead><tr><th width="150"></th><th></th><th width="150"></th><th width="171"></th><th></th></tr></thead><tbody><tr><td></td><td>意味</td><td>バイト数</td><td>データ例</td><td>備考</td></tr><tr><td>1</td><td>中継機シリアルID ​</td><td>4</td><td>80000000</td><td>中継されていない場合は80000000</td></tr><tr><td>2</td><td>LQI</td><td>1</td><td>CF</td><td>大きいほど電波品質が良い</td></tr><tr><td>3</td><td>続き番号</td><td>2</td><td>0002</td><td></td></tr><tr><td>4</td><td>送信元シリアルID</td><td>4</td><td>8201BAA2</td><td></td></tr><tr><td>5</td><td>送信元LID</td><td>1</td><td>01</td><td></td></tr><tr><td>6</td><td>センサー種別</td><td>1</td><td>80</td><td>TWELITE ARIAは80固定</td></tr><tr><td>7</td><td>PAL ID</td><td>1</td><td>06</td><td>TWELITE ARIAモードは06</td></tr><tr><td>8</td><td>センサーデータ数</td><td>1</td><td>07</td><td></td></tr><tr><td>9</td><td>センサーデータ0(ヘッダ)</td><td>4</td><td>00340003</td><td>拡張バイトなし、符号なし1バイト、パケットプロパティが3バイト</td></tr><tr><td>a</td><td>センサーデータ0</td><td>3</td><td>813500</td><td>タイマーイベントで送信した</td></tr><tr><td>b</td><td>センサーデータ1(ヘッダ)</td><td>4</td><td>12053504</td><td>拡張バイトあり、符号なしLong、タイマーイベント情報</td></tr><tr><td>c</td><td>センサーデータ1</td><td>4</td><td>01000000</td><td>タイマーが起床させた</td></tr><tr><td>d</td><td>センサーデータ2(ヘッダ)</td><td>4</td><td>11300802</td><td>符号なし2バイト、電源電圧</td></tr><tr><td>e</td><td>センサーデータ2</td><td>2</td><td>0D20</td><td>3360mV</td></tr><tr><td>f</td><td>センサーデータ3(ヘッダ)</td><td>4</td><td>11300102</td><td>符号なし2バイト、ADC1</td></tr><tr><td>g</td><td>センサーデータ3</td><td>2</td><td>04ED</td><td>1261mV</td></tr><tr><td>h</td><td>センサーデータ4(ヘッダ)</td><td>4</td><td>00000001</td><td>拡張バイトなし、符号なし1バイト、磁気センサー</td></tr><tr><td>i</td><td>センサーデータ4</td><td>1</td><td>80</td><td>変化なし、オープン<br>(00: 磁石が離れた。<br>01: N極が近づいた<br>02: S局が近づいた<br>80: 変化なし(磁石なし)<br>81: 変化なし(N極が近くにある)<br>82: 変化なし(S極が近くにある))</td></tr><tr><td>j</td><td>センサーデータ5(ヘッダ)</td><td>4</td><td>05010002</td><td>拡張バイトなし、符号あり2バイト、温度</td></tr><tr><td>k</td><td>センサーデータ5</td><td>2</td><td>09D0</td><td>25.12℃</td></tr><tr><td>l</td><td>センサーデータ6(ヘッダ)</td><td>4</td><td>01020002</td><td>拡張バイトなし、符号なし2バイト、湿度</td></tr><tr><td>m</td><td>センサーデータ6</td><td>2</td><td>0F34</td><td>38.92%</td></tr><tr><td>n</td><td>チェックサム1</td><td>1</td><td>79</td><td>1～ｍまでのLRC</td></tr><tr><td>o</td><td>チェックサム2</td><td>1</td><td>34</td><td>1～nまでのCRC8</td></tr></tbody></table>


# アクト

Act

### データフォーマット

```
: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                             |                    | ​                                |


# 送信コマンド

Trancemit Command

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

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

{% content-ref url="/pages/-MIIKrkD3mq88lk-TMeu" %}
[0x90コマンド](/how-to-use/parent-mode/transemit-command/0x90-command)
{% endcontent-ref %}


# 0x90コマンド

TWELITE PALに対して送信するコマンドです。

```
:0190010004000169[CR][LF]
 ^1^2^3^^^^^^^4^5
```

| 番号 | バイト数    | 意味           | データ例       | 備考                                                                                                                                                                                                                                                   |
| -- | ------- | ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | 1       | 送信先の論理デバイスID | 01         | <p>送信先のTWELITE PALの論理デバイスIDを指定します。<br>0x01から0x64まで指定可能です。</p>                                                                                                                                                                                        |
| 2  | 1       | コマンド種別       | 90         |                                                                                                                                                                                                                                                      |
| 3  | 1       | コマンドパラメータ数   | 01         | コマンドパラメータの数を指定します。例えば、コマンドパラメータを1つだけ指定するなら1に、2つ指定するには2にします。                                                                                                                                                                                          |
| 4  | コマンド数x4 | コマンドパラメータ    | 00040001   | <p>イベントやLEDの色などを指定するためのパラメータを指定します。<br>詳細はコマンドパラメータを参照してください。</p>                                                                                                                                                                                    |
| 5  | 1       | チェックサム       | 69         | <p>1～4の各バイトの和を８ビット幅で計算し２の補数をとります。つまりデータ部の各バイトの総和＋チェックサムバイトを８ビット幅で計算すると０になります。<br>チェックサムバイトをアスキー文字列２文字で表現します。<br>例えば 00A01301FF123456 では 0x00 + 0xA0 + ... + 0x56 = 0x4F となり、この二の補数は0xB1 です。(つまり 0x4F + 0xB1 = 0)<br>チェックサムをXにすることでチェックサムを省略可能です。</p> |
| 6  | 2       | フッター         | \[CR]\[LF] | \[CR] (0x0D) \[LF] (0x0A) を指定します。ただし、チェックサムをXで省略する場合はフッターも省略可能です。                                                                                                                                                                                    |

### コマンドパラメータ

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

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

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

{% hint style="info" %}
イベント毎の振る舞いを変更するにはTWELITE PALの設定を変更してください。
{% endhint %}

| 番号 | バイト数 | 内容          | 備考                                                            |
| -- | ---- | ----------- | ------------------------------------------------------------- |
| 1  | 1    | コマンドパラメータID | 0x00                                                          |
| 2  | 1    | 送信先PAL ID   | <p>送信先のPAL IDを指定します。<br>0x04:通知パル<br>0xFF:すべてのTWELITE PAL</p> |
| 3  | 1    | 未使用領域       | 0x00固定                                                        |
| 4  | 1    | イベントID      | 0～16までのイベントIDを指定します。                                          |

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

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

| 番号 | バイト数 | 内容           | 備考                                                                   |
| -- | ---- | ------------ | -------------------------------------------------------------------- |
| 1  | 1    | コマンドパラメータID  | 0x01                                                                 |
| 2  | 1    | <p>色<br></p> | <p>0:赤<br>1:緑<br>2:青<br>3:黄色<br>4:紫<br>5:水色<br>6:白<br>7:暖かい白<br></p> |
| 3  | 1    | 点滅パターン       | <p>0:常時点灯<br>1～3:点滅パターン(数値が大きくなるほど点滅が早くなる。)</p>                      |
| 4  | 1    | 明るさ          | <p>0:消灯<br>0x01～0x0F:明るさ(数値が大きいほど明るくなる。)</p>                         |

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

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

{% hint style="warning" %}
本コマンドパラメータは、LEDの色、点滅パターン、明るさのパラメータが含まれないので、コマンドパラメータ0x01または0x03と組み合わせて使用します。
{% endhint %}

{% hint style="warning" %}
本コマンドパラメータを使用する場合は、送信間隔を必ず点灯時間より大きく設定してご使用ください。
{% endhint %}

| 番号 | バイト数 | 内容               | 備考           |
| -- | ---- | ---------------- | ------------ |
| 1  | 1    | コマンドパラメータID      | 0x02         |
| 2  | 1    | <p>未使用領域<br></p> | 0xFF固定       |
| 3  | 1    | 未使用領域            | 0x00固定       |
| 4  | 1    | 点灯時間             | 秒で指定(0は常時点灯) |

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

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

{% hint style="warning" %}
コマンドパラメータ0x00および0x01とは同時に使用できません。
{% endhint %}

| 番号 | バイト数 | 内容               | 備考                                                |
| -- | ---- | ---------------- | ------------------------------------------------- |
| 1  | 1    | コマンドパラメータID      | 0x03                                              |
| 2  | 1    | <p>未使用領域<br></p> | 0xFF固定                                            |
| 3  | 2    | LEDの点灯色          | <p>LSBからRGBWの順番で4ビットずつ指定する。</p><p>数値が大きいほど明るい</p> |

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

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

{% hint style="warning" %}
本コマンドパラメータは、LEDの色のパラメータが含まれないので、コマンドパラメータ0x03と組み合わせて使用します。
{% endhint %}

{% hint style="warning" %}
コマンドパラメータ0x00および0x01とは同時に使用できません。
{% endhint %}

| 番号 | バイト数 | 内容               | 備考                                                                                      |
| -- | ---- | ---------------- | --------------------------------------------------------------------------------------- |
| 1  | 1    | コマンドパラメータID      | 0x04                                                                                    |
| 2  | 1    | <p>未使用領域<br></p> | 0xFF固定                                                                                  |
| 3  | 1    | 点滅時間の割合          | <p>0x00～0xFFで指定する。</p><p>数値が大きいほど1周期当たりの点灯時間が長くなる。</p><p>1周期の半分だけ点灯させるには0x7Fを指定する。</p>  |
| 4  | 1    | 点滅周期             | <p>0x00～0xFFで指定する。</p><p>設定値が1大きくなるごとに点滅の周期が約0.04sずつ増える。</p><p>1周期1秒にするには0x17を指定する。</p> |

### コマンド例

#### 例1：イベントを送信する

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

```
:0190010004000169
 ^1^2^3^4^5^6^7^8
```

| 番号 | バイト数 | 意味           | データ例 | データ例の内容           | 備考          |
| -- | ---- | ------------ | ---- | ----------------- | ----------- |
| 1  | 1    | 送信先の論理デバイスID | 01   | 送信先の論理デバイスIDは0x01 |             |
| 2  | 1    | コマンド種別       | 90   | 0x90コマンド          | 90固定        |
| 3  | 1    | コマンド数        | 01   | コマンドは1個           |             |
| 4  | 1    | コマンドID       | 00   | コマンド00            |             |
| 5  | 1    | 送信先PAL ID    | 04   | 通知パルに対して送信する      |             |
| 6  | 1    | 未使用領域        | 00   |                   |             |
| 7  | 1    | イベントID       | 01   | イベント1             | 0x00～0x10まで |
| 8  | 1    | チェックサム       | 69   |                   |             |

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

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

```
:019001010601085E
 ^1^2^3^4^5^6^7^8
```

| 番号 | バイト数 | 意味           | データ例 | データ例の内容           | 備考          |
| -- | ---- | ------------ | ---- | ----------------- | ----------- |
| 1  | 1    | 送信先の論理デバイスID | 01   | 送信先の論理デバイスIDは0x01 |             |
| 2  | 1    | コマンド種別       | 90   | 0x90コマンド          | 90固定        |
| 3  | 1    | コマンド数        | 01   | コマンドは1個           |             |
| 4  | 1    | コマンドパラメータID  | 01   | コマンドパラメータID 0x01  |             |
| 5  | 1    | 色            | 06   | 白                 |             |
| 6  | 1    | 点滅パターン       | 01   | 点滅                |             |
| 7  | 1    | 明るさ          | 08   | 明るさ8              | 0x00～0x0Fまで |
| 8  | 1    | チェックサム       | 5E   |                   |             |

#### &#x20;例3：通知パルのLEDの点灯色と点灯時間を送信する。

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

{% hint style="warning" %}
本コマンドを試す場合、送信間隔を必ず点灯時間より大きく設定してご使用ください。
{% endhint %}

```
:0190020104000802FF00015E
 ^1^2^3^4^5^6^7^8^9^a^b^c
```

| 番号 | バイト数 | 意味           | データ例 | データ例の内容           | 備考          |
| -- | ---- | ------------ | ---- | ----------------- | ----------- |
| 1  | 1    | 送信先の論理デバイスID | 01   | 送信先の論理デバイスIDは0x01 |             |
| 2  | 1    | コマンド種別       | 90   | 0x90コマンド          | 90固定        |
| 3  | 1    | コマンド数        | 02   | コマンドは2個           |             |
| 4  | 1    | コマンドパラメータID  | 01   | コマンドパラメータID 0x01  |             |
| 5  | 1    | 色            | 04   | 紫                 |             |
| 6  | 1    | 点滅パターン       | 00   | 点灯                |             |
| 7  | 1    | 明るさ          | 08   | 明るさ8              | 0x00～0x0Fまで |
| 8  | 1    | コマンドパラメータID  | 02   | コマンドパラメータID 0x02  |             |
| 9  | 1    | 未使用領域        | FF   |                   |             |
| a  | 1    | 未使用領域        | 00   |                   |             |
| b  | 1    | 点灯時間         | 01   | 点灯後1秒で消える         |             |
| c  | 1    | チェックサム       | 5E   |                   |             |

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

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

```
:01900103FF0F0459
 ^1^2^3^4^5^^^6^7
```

| 番号 | バイト数 | 意味           | データ例 | データ例の内容            | 備考                                                         |
| -- | ---- | ------------ | ---- | ------------------ | ---------------------------------------------------------- |
| 1  | 1    | 送信先の論理デバイスID | 01   | 送信先の論理デバイスIDは0x01  |                                                            |
| 2  | 1    | コマンド種別       | 90   | 0x90コマンド           | 90固定                                                       |
| 3  | 1    | コマンド数        | 01   | コマンドは2個            |                                                            |
| 4  | 1    | コマンドパラメータID  | 03   | コマンドパラメータID 0x03   |                                                            |
| 5  | 1    | 未使用          | FF   |                    |                                                            |
| 6  | 2    | LEDの点灯色      | 0F04 | 青:15、赤4の明るさで点灯させる。 | <p>LSBからRGBWの順番で各色4bitずつ(0～15)で指定する。</p><p>数値が大きいほど明るい</p> |
| 7  | 1    | チェックサム       | 59   |                    |                                                            |

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

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

{% hint style="warning" %}
本コマンドを試す場合、送信間隔を必ず点灯時間より大きく設定してご使用ください。
{% endhint %}

```
:0190020104000802FF00015E
 ^1^2^3^4^5^6^7^8^9^a^b^c
```

| 番号 | バイト数 | 意味           | データ例 | データ例の内容           | 備考          |
| -- | ---- | ------------ | ---- | ----------------- | ----------- |
| 1  | 1    | 送信先の論理デバイスID | 01   | 送信先の論理デバイスIDは0x01 |             |
| 2  | 1    | コマンド種別       | 90   | 0x90コマンド          | 90固定        |
| 3  | 1    | コマンド数        | 02   | コマンドは2個           |             |
| 4  | 1    | コマンドパラメータID  | 01   | コマンドパラメータID 0x01  |             |
| 5  | 1    | 色            | 04   | 紫                 |             |
| 6  | 1    | 点滅パターン       | 00   | 点灯                |             |
| 7  | 1    | 明るさ          | 08   | 明るさ8              | 0x00～0x0Fまで |
| 8  | 1    | コマンドパラメータID  | 02   | コマンドパラメータID 0x02  |             |
| 9  | 1    | 未使用領域        | FF   |                   |             |
| a  | 1    | 未使用領域        | 00   |                   |             |
| b  | 1    | 点灯時間         | 01   | 点灯後1秒で消える         |             |
| c  | 1    | チェックサム       | 5E   |                   |             |


# 中継機モード

Router mode

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

{% hint style="warning" %}
中継を行う場合、親機が受信する順番が入れ替わることがございます。
{% endhint %}

{% hint style="warning" %}
短い間隔(例：100ms程度)で連続送信する子機がいる場合、パケットを中継できない場合があります。よく検証の上ご使用ください。
{% endhint %}

### 設定例

中継機として使用する場合、以下のようにインタラクティブモードで動作モード(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]
```

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

{% content-ref url="/pages/-M7HRErMjiaU5KfJoVVb" %}
[インタラクティブモード](/interactive-mode)
{% endcontent-ref %}

### 中継方式

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

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

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

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

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

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

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

詳しくは [こちら](https://sdk.twelite.info/tweliet-net-api-jie-shuo/nettowkunitsuite/netto) を参照ください。

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

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

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

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

> 例1：1回の中継を行う場合\
> 子機 ---> 中継機(動作モード：1) ---> 親機
>
> 例2：2回の中継を行う場合\
> 子機  --->  中継機(動作モード：2) --->  中継機(動作モード：**1**)  --->  親機
>
> 例3：3回の中継を行う場合\
> 子機 ---> 中継機(動作モード：6) ---> 中継機(動作モード：3) ---> 中継機(動作モード：1) ---> 親機

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

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

詳しくは [こちら](https://sdk.twelite.info/tweliet-net-api-jie-shuo/nettowkunitsuite/netto-1) をご覧ください。

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

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

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

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

![](https://626091621-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4I4DH9tI2g9BQbH1OI%2F-M7kx0AZwazQn7wwy5b6%2F-M7kxGyljFVgjb3OZCwx%2F%E4%B8%AD%E7%B6%99%E3%83%8D%E3%83%83%E3%83%88.png?alt=media\&token=420a2f95-26cf-4d43-ae2f-dbbfe9ccb23f)

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

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

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

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

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

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


# インタラクティブモード

Interactive Mode

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

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

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

{% hint style="warning" %}
テンキーではないほうの「＋」キーを入力してください。\
うまくいかない場合は、TWELITE プログラマや TWELITE STAGE のショートカット機能を使用してください。
{% endhint %}

```
[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
```

{% hint style="info" %}
バージョンにより表示が異なることがあります。
{% endhint %}

### 設定コマンド一覧

| コマンド | 設定項目          | 初期値        | 説明                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---- | ------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| a    | アプリケーションID    | 0x67720102 | <p>同じアプリケーションID同士のみ通信可能です。 異なった値を設定することにより、同一の周波数チャネルを複数のグループで使用することが可能です。<br>値は32ビットで任意に設定できます。<br>通信させたい端末は全て同じアプリケーションIDに設定する必要があります。</p><p>本設定を変更することで、TWELITE APPS のほかのアプリのデータを受信することできます。詳しくは <a href="/interactive-mode#twelite-apps-noapurikshonidtochanneruno">こちら</a> をご確認ください。</p>                                                                                                                 |
| c    | 周波数チャンネル      | 18         | <p>チャネル (11～26) を選択します。複数チャネルを指定した場合は チャネルアジリティにより電波干渉の回避に役立ちます。最大3チャネルまで指定可能です。例えばチャネル 13 とチャネル 22 を使用する場合は 13,22 と入力します。</p><p>本設定を変更することで、TWELITE APPS のほかのアプリのデータを受信することできます。詳しくは <a href="/interactive-mode#twelite-apps-noapurikshonidtochanneruno">こちら</a> をご確認ください。</p>                                                                                                                               |
| x    | 中継時の送信出力と再送回数 | 03         | <p>XYの２桁で指定します。 X : 再送回数で1-9 が指定の回数、0 が再送なし Y : 送信出力を指定します。</p><p> 3が最強で2,1,0と１段階小さくなるたびに -11.5db 出力が低下します。出力を制限し電波の有効伝達範囲を小さくしたい場合に使用します。ただし、伝達可能距離は環境（ノイズ・遮蔽物など)に影響を受けます。 ※ 理論上の伝達距離は 6db 出力が小さくなるたびに 1/2 になりますので、１段階小さくすることで見通し・環境ノイズ無しでの伝達距離は約1/4になります。</p><p>例えば 43 を指定すると再送４回、電波出力最強となります。</p>                                                                                                          |
| b    | UARTオプション     | 38400,8N1  | <p>ボーレートとパリティの設定をカンマで区切って指定することができます。</p><p>ボーレートは9600、19200、38400、57600、115200、230400が設定可能です。他の値も設定可能ですが、オシロスコープ等を用いて誤差を検証した上で使用してください。<br>パリティはN: 無し、O: Odd（奇数）、E: Even（偶数）を設定します。ストップビットは１で固定。ハードウェアフローは設定不可です。また、8N1, 7E2 といったビット数、パリティ、ストップビットの設定が可能ですが、動作検証は 8N1 のみとなります。動作検証以外の設定で利用される場合は、オシロスコープなどで波形を観察し要求を満足するか確認の上利用してください。<br>設定を反映させるにはオプションビットを設定する必要があります。設定しない場合は設定値は使用されず115200bps固定です。</p> |
| o    | オプションビット      | 0x00000000 | 各種詳細設定ができます。オプションビットの説明は以下をご参照下さい。                                                                                                                                                                                                                                                                                                                                                                            |
| k    | 暗号化鍵          | 0xA5A5A5A5 | 32bitの16進数を設定します。                                                                                                                                                                                                                                                                                                                                                                                             |
| m    | 動作モード         | 0          | <p>0は親機モードになります。</p><p>1は中継モードになります。<br>2～63は中継ネットを使用したアプリのパケットを多段中継するときに使用します。詳しくは <a href="/how-to-use/router-mode#nettowoshita-1">こちら</a> をご確認ください。</p>                                                                                                                                                                                                                                                    |
| A    | 接続先           | 0x00000000 | 中継機モード時に静的ルーティングをするときの接続する上位段のTWELITEのSIDを指定します。近くに存在しないSIDや下位段のSIDを指定したときは不定となるので指定する場合は必ず存在する上位段のSIDを入力してください。0x00000000の時は自動で上位段を検索し、発見したTWELITEを通信を試みます。                                                                                                                                                                                                                                                  |
| S    | 設定値の保存        |            | 設定を保存します。                                                                                                                                                                                                                                                                                                                                                                                                     |
| R    | 初期値に設定を戻す     |            | 続けてS キーによる設定の保存を行ってください。                                                                                                                                                                                                                                                                                                                                                                                      |
| !    | モジュールの再起動     |            | TWELITEを再起動します。                                                                                                                                                                                                                                                                                                                                                                                               |
| M    | ルートメニューへ移行    |            | <p>不具合などがあったときに使用するコマンドです。</p><p>技術サポートの指示がない限り、使用しないでください。</p>                                                                                                                                                                                                                                                                                                                                               |

### オプションビットの設定

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

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

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

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

| TWELITE APPS             | アプリケーション ID の初期設定値 | 周波数チャンネルの初期設定値 |
| ------------------------ | ------------------ | -------------- |
| 超簡単！標準アプリ (App\_Twelite) | 0x67720102         | 18             |
| リモコンアプリ (App\_IO)        | 0x67720107         | 16             |
| シリアル通信アプリ (App\_Uart)    | 0x67720103         | 18             |
| 無線タグアプリ (App\_Tag)       | 0x67726305         | 15             |
| パルアプリ (App\_PAL)         | 0x67726305         | 15             |
| キューアプリ (App\_CUE)        | 0x67720102         | 18             |

{% hint style="warning" %}
TWELITE 2525A の初期設定では、超簡単！標準アプリ互換モードになっておりますので、本アプリで初期設定の TWELITE 2525A のデータを受信すると、加速度情報が得にくくなります。そのため、TWELITE 2525A のオプションビットを 0x00000010 を無効にしていただくことを推奨します。
{% endhint %}

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

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

| TWELITE の役割        | アプリケーション ID の設定例 | 周波数チャンネルの設定例 |
| ------------------ | ---------------- | ------------ |
| 親機 (App\_Wings)    | 0x12345678       | 22           |
| 中継機 (App\_Wings)   | 0x12345678       | 22           |
| 子機1 (App\_Twelite) | 0x12345678       | 22           |
| 子機2 (App\_PAL)     | 0x12345678       | 22           |


