monitor_spot_app_aria の解説です。セクションの複数ページをまとめています。 印刷またはPDF形式で保存...
アリアアプリのデータを取得
monitor_spot_app_aria の解説1 - アリアアプリのデータを取得
monitor_spot_app_aria の解説です。サンプルスケッチの保存場所
MWings ライブラリを導入していれば、Arduino IDE の ファイル -> スケッチ例 -> MWings -> TWELITE SPOT -> Receive -> monitor_spot_app_aria からスケッチを開くことができます。

保存場所の表示例
スケッチ
以下はソースコード本体です。
// Monitor example for TWELITE SPOT: Receive data from App_ARIA (ARIA Mode)
#include <Arduino.h>
#include "MWings.h"
const int RST_PIN = 5;
const int PRG_PIN = 4;
const int LED_PIN = 18;
const int8_t RX1_PIN = 16;
const int8_t TX1_PIN = 17;
const uint8_t TWE_CHANNEL = 18;
const uint32_t TWE_APP_ID = 0x67720102;
void printMagnetState(const uint8_t state, const bool changed);
void setup()
{
    // Initialize serial ports
    Serial.begin(115200);
    Serial.println("Monitor example for TWELITE SPOT: App_ARIA (ARIA Mode)");
    Serial2.begin(115200, SERIAL_8N1, RX1_PIN, TX1_PIN);
    // Initialize TWELITE
    Twelite.begin(Serial2,
                  LED_PIN, RST_PIN, PRG_PIN,
                  TWE_CHANNEL, TWE_APP_ID);
    // Attach an event handler to process packets from App_ARIA
    Twelite.on([](const ParsedAppAriaPacket& packet) {
        Serial.println("");
        Serial.print("Packet Number:     #");
        Serial.println(packet.u16SequenceNumber, DEC);
        Serial.print("Source Logical ID: 0x");
        Serial.println(packet.u8SourceLogicalId, HEX);
        Serial.print("LQI:               ");
        Serial.println(packet.u8Lqi, DEC);
        Serial.print("Supply Voltage:    ");
        Serial.print(packet.u16SupplyVoltage, DEC); Serial.println(" mV");
        Serial.print("Air Temperature:   ");
        Serial.print(packet.i16Temp100x / 100.0f, 2); Serial.println(" C");
        Serial.print("Relative Humidity: ");
        Serial.print(packet.u16Humid100x / 100.0f, 2); Serial.println(" %");
        Serial.print("Magnet State:      ");
        printMagnetState(packet.u8MagnetState, packet.bMagnetStateChanged);
    });
}
void loop()
{
    // Update TWELITE
    Twelite.update();
}
void printMagnetState(const uint8_t state, const bool changed)
{
    if (changed) {
        switch (state) {
        case 0x0: { Serial.print("Leaving or not found"); break; }
        case 0x1: { Serial.print("N-pole is getting closer"); break; }
        case 0x2: { Serial.print("S-pole is getting closer"); break; }
        default: break;
        }
    } else {
        switch (state) {
        case 0x0: { Serial.print("Not found"); break; }
        case 0x1: { Serial.print("N-pole is close"); break; }
        case 0x2: { Serial.print("S-pole is close"); break; }
        default: break;
        }
        Serial.print(" (Periodic packet)");
    }
    Serial.println("");
}
ライブラリのインクルード
4行目では、MWings ライブラリをインクルードしています。
#include "MWings.h"
ピン番号の定義
6-11行目では、ピン番号を定義しています。
const int RST_PIN = 5;
const int PRG_PIN = 4;
const int LED_PIN = 18;
const int8_t RX1_PIN = 16;
const int8_t TX1_PIN = 17;
| 名称 | 内容 | 
|---|---|
| RST_PIN | TWELITE の RST ピンが接続されているピンの番号 | 
| PRG_PIN | TWELITE の PRG ピンが接続されているピンの番号 | 
| LED_PIN | 基板上の ESP32 用 LED が接続されているピンの番号 | 
| RX1_PIN | TWELITE の RX1 ピンが接続されているピンの番号 | 
| TX1_PIN | TWELITE の TX1 ピンが接続されているピンの番号 | 
TWELITE 設定の定義
13-14行目では、TWELITE SPOT に搭載された TWELITE 親機に適用する設定を定義しています。
const uint8_t TWE_CHANNEL = 18;
const uint32_t TWE_APP_ID = 0x67720102;
| 名称 | 内容 | 
|---|---|
| TWE_CHANNEL | TWELITE の 周波数チャネル | 
| TWE_APP_ID | TWELITE の アプリケーション ID | 
シリアルポートの設定
21-23行目では、使用するシリアルポートを初期化するとともに、シリアルモニタへ起動メッセージを出力しています。
    Serial.begin(115200);
    Serial.println("Monitor example for TWELITE SPOT: App_ARIA (ARIA Mode)");
    Serial2.begin(115200, SERIAL_8N1, RX1_PIN, TX1_PIN);
Serial は、Arduino IDE の シリアルモニタとの通信に使います。シリアルモニタの設定に合わせて、ボーレートを 115200 bps としています。
一方、Serial2 は、TWELITE SPOT に搭載された TWELITE 親機との通信に使います。こちらも TWELITE 親機の初期設定に合わせて、ボーレートを 115200 bps としています。
TWELITE の設定
26-28行目では、Twelite.begin() を呼び出し、TWELITE SPOT に搭載された TWELITE 親機の設定と起動を行っています。
    Twelite.begin(Serial2,
                      LED_PIN, RST_PIN, PRG_PIN,
                      TWE_CHANNEL, TWE_APP_ID);
パケット受信時のイベントの登録
31-47行目では、Twelite.on() を呼び出し、送られたデータに対して行う処理を登録しています。
ここでは、受信したパケットの内容をシリアルモニタに出力しています。
    Twelite.on([](const ParsedAppAriaPacket& packet) {
        Serial.println("");
        Serial.print("Packet Number:     #");
        Serial.println(packet.u16SequenceNumber, DEC);
        Serial.print("Source Logical ID: 0x");
        Serial.println(packet.u8SourceLogicalId, HEX);
        Serial.print("LQI:               ");
        Serial.println(packet.u8Lqi, DEC);
        Serial.print("Supply Voltage:    ");
        Serial.print(packet.u16SupplyVoltage, DEC); Serial.println(" mV");
        Serial.print("Air Temperature:   ");
        Serial.print(packet.i16Temp100x / 100.0f, 2); Serial.println(" C");
        Serial.print("Relative Humidity: ");
        Serial.print(packet.u16Humid100x / 100.0f, 2); Serial.println(" %");
        Serial.print("Magnet State:      ");
        printMagnetState(packet.u8MagnetState, packet.bMagnetStateChanged);
    });
上記のイベントは、アリアアプリ(TWELITE ARIA モード)からのパケットを受信したときにだけ呼び出されます。
受信したパケットの内容は ParsedAppAriaPacket 型の引数 packet に格納されています。
メッセージの内容
| メッセージ | 内容 | 
|---|---|
| Packet Number | パケットの続き番号 | 
| Source Logical ID | 送信元 TWELITE の論理デバイスID | 
| LQI | 無線通信品質(0~255) | 
| Supply Voltage | 電源電圧 (mV) | 
| Air Temperature | TWELITE ARIA が計測した気温 (°C) | 
| Relative Humidity | TWELITE ARIA が計測した相対湿度 (%) | 
| Magnet State | 磁気センサーの状態 | 
磁気センサーの状態
出力される磁気センサーの状態は以下の通りです。
- S-pole is getting closer新たに磁石のS極を検知した。
- N-pole is getting closer新たに磁石のN極を検知した。
- Leaving or Not found磁石が検知できなかった。
- S-pole is close (Periodic packet)磁石のS極を検知している。
- N-pole is close (Periodic packet)磁石のN極を検知している。
- Not found (Periodic packet)磁石を連続で検知できていない(定期送信パケット)。
TWELITE のデータの更新
53行目では、Twelite.update() を呼び出しています。
    Twelite.update();
2 - アリアアプリのデータを取得
monitor_spot_app_aria の解説です。サンプルスケッチの保存場所
MWings ライブラリを導入していれば、Arduino IDE の ファイル -> スケッチ例 -> MWings -> monitor_spot_app_aria からスケッチを開くことができます。

保存場所
スケッチ
以下はソースコード本体です。
// Monitor example for TWELITE SPOT: Receive data from App_ARIA (ARIA Mode)
#include <Arduino.h>
#include "MWings.h"
const int RST_PIN = 5;
const int PRG_PIN = 4;
const int LED_PIN = 18;
const uint8_t TWE_CHANNEL = 18;
const uint32_t TWE_APP_ID = 0x67720102;
void printMagnetState(const uint8_t state, const bool changed);
void setup()
{
    // Initialize serial ports
    Serial.begin(115200);
    Serial.println("Monitor example for TWELITE SPOT: App_ARIA (ARIA Mode)");
    Serial2.begin(115200, SERIAL_8N1);
    // Initialize TWELITE
    Twelite.begin(Serial2,
                  LED_PIN, RST_PIN, PRG_PIN,
                  TWE_CHANNEL, TWE_APP_ID);
    // Attach an event handler to process packets from App_ARIA
    Twelite.on([](const ParsedAppAriaPacket& packet) {
        Serial.println("");
        Serial.print("Packet Number:     #");
        Serial.println(packet.u16SequenceNumber, DEC);
        Serial.print("Source Logical ID: 0x");
        Serial.println(packet.u8SourceLogicalId, HEX);
        Serial.print("LQI:               ");
        Serial.println(packet.u8Lqi, DEC);
        Serial.print("Supply Voltage:    ");
        Serial.print(packet.u16SupplyVoltage, DEC); Serial.println(" mV");
        Serial.print("Air Temperature:   ");
        Serial.print(packet.i16Temp100x / 100.0f, 2); Serial.println(" C");
        Serial.print("Relative Humidity: ");
        Serial.print(packet.u16Humid100x / 100.0f, 2); Serial.println(" %");
        Serial.print("Magnet State:      ");
        printMagnetState(packet.u8MagnetState, packet.bMagnetStateChanged);
    });
}
void loop()
{
    // Update TWELITE
    Twelite.update();
}
void printMagnetState(const uint8_t state, const bool changed)
{
    if (changed) {
        switch (state) {
        case 0x0: { Serial.print("Leaving or not found"); break; }
        case 0x1: { Serial.print("N-pole is getting closer"); break; }
        case 0x2: { Serial.print("S-pole is getting closer"); break; }
        default: break;
        }
    } else {
        switch (state) {
        case 0x0: { Serial.print("Not found"); break; }
        case 0x1: { Serial.print("N-pole is close"); break; }
        case 0x2: { Serial.print("S-pole is close"); break; }
        default: break;
        }
        Serial.print(" (Periodic packet)");
    }
    Serial.println("");
}
ライブラリのインクルード
4行目では、MWings ライブラリをインクルードしています。
#include "MWings.h"
ピン番号の定義
6-8行目では、ピン番号を定義しています。
const int RST_PIN = 5;
const int PRG_PIN = 4;
const int LED_PIN = 18;
| 名称 | 内容 | 
|---|---|
| RST_PIN | TWELITE の RST ピンが接続されているピンの番号 | 
| PRG_PIN | TWELITE の PRG ピンが接続されているピンの番号 | 
| LED_PIN | 基板上の ESP32 用 LED が接続されているピンの番号 | 
TWELITE 設定の定義
10-11行目では、TWELITE SPOT に搭載された TWELITE 親機に適用する設定を定義しています。
const uint8_t TWE_CHANNEL = 18;
const uint32_t TWE_APP_ID = 0x67720102;
| 名称 | 内容 | 
|---|---|
| TWE_CHANNEL | TWELITE の 周波数チャネル | 
| TWE_APP_ID | TWELITE の アプリケーション ID | 
シリアルポートの設定
18-20行目では、使用するシリアルポートを初期化するとともに、シリアルモニタへ起動メッセージを出力しています。
    Serial.begin(115200);
    Serial.println("Monitor example for TWELITE SPOT: App_ARIA (ARIA Mode)");
    Serial2.begin(115200, SERIAL_8N1);
Serial は、Arduino IDE の シリアルモニタとの通信に使います。シリアルモニタの設定に合わせて、ボーレートを 115200 bps としています。
一方、Serial2 は、TWELITE SPOT に搭載された TWELITE 親機との通信に使います。こちらも TWELITE 親機の初期設定に合わせて、ボーレートを 115200 bps としています。
TWELITE の設定
23-25行目では、Twelite.begin() を呼び出し、TWELITE SPOT に搭載された TWELITE 親機の設定と起動を行っています。
    Twelite.begin(Serial2,
                      LED_PIN, RST_PIN, PRG_PIN,
                      TWE_CHANNEL, TWE_APP_ID);
パケット受信時のイベントの登録
28-44行目では、Twelite.on() を呼び出し、送られたデータに対して行う処理を登録しています。
ここでは、受信したパケットの内容をシリアルモニタに出力しています。
    Twelite.on([](const ParsedAppAriaPacket& packet) {
        Serial.println("");
        Serial.print("Packet Number:     #");
        Serial.println(packet.u16SequenceNumber, DEC);
        Serial.print("Source Logical ID: 0x");
        Serial.println(packet.u8SourceLogicalId, HEX);
        Serial.print("LQI:               ");
        Serial.println(packet.u8Lqi, DEC);
        Serial.print("Supply Voltage:    ");
        Serial.print(packet.u16SupplyVoltage, DEC); Serial.println(" mV");
        Serial.print("Air Temperature:   ");
        Serial.print(packet.i16Temp100x / 100.0f, 2); Serial.println(" C");
        Serial.print("Relative Humidity: ");
        Serial.print(packet.u16Humid100x / 100.0f, 2); Serial.println(" %");
        Serial.print("Magnet State:      ");
        printMagnetState(packet.u8MagnetState, packet.bMagnetStateChanged);
    });
上記のイベントは、アリアアプリ(TWELITE ARIA モード)からのパケットを受信したときにだけ呼び出されます。
受信したパケットの内容は ParsedAppAriaPacket 型の引数 packet に格納されています。
メッセージの内容
| メッセージ | 内容 | 
|---|---|
| Packet Number | パケットの続き番号 | 
| Source Logical ID | 送信元 TWELITE の論理デバイスID | 
| LQI | 無線通信品質(0~255) | 
| Supply Voltage | 電源電圧 (mV) | 
| Air Temperature | TWELITE ARIA が計測した気温 (°C) | 
| Relative Humidity | TWELITE ARIA が計測した相対湿度 (%) | 
| Magnet State | 磁気センサーの状態 | 
磁気センサーの状態
出力される磁気センサーの状態は以下の通りです。
- S-pole is getting closer新たに磁石のS極を検知した。
- N-pole is getting closer新たに磁石のN極を検知した。
- Leaving or Not found磁石が検知できなかった。
- S-pole is close (Periodic packet)磁石のS極を検知している。
- N-pole is close (Periodic packet)磁石のN極を検知している。
- Not found (Periodic packet)磁石を連続で検知できていない(定期送信パケット)。
TWELITE のデータの更新
50行目では、Twelite.update() を呼び出しています。
    Twelite.update();
3 - アリアアプリのデータを取得
monitor_spot_app_aria の解説です。サンプルスケッチの保存場所
MWings ライブラリを導入していれば、Arduino IDE の ファイル -> スケッチ例 -> MWings -> TWELITE SPOT -> Receive -> monitor_spot_app_aria からスケッチを開くことができます。

保存場所の表示例
スケッチ
以下はソースコード本体です。
// Monitor example for TWELITE SPOT: Receive data from App_ARIA (ARIA Mode)
#include <Arduino.h>
#include "MWings.h"
const int RST_PIN = 5;
const int PRG_PIN = 4;
const int LED_PIN = 18;
const uint8_t TWE_CHANNEL = 18;
const uint32_t TWE_APP_ID = 0x67720102;
void printMagnetState(const uint8_t state, const bool changed);
void setup()
{
    // Initialize serial ports
    Serial.begin(115200);
    Serial.println("Monitor example for TWELITE SPOT: App_ARIA (ARIA Mode)");
    Serial2.begin(115200, SERIAL_8N1);
    // Initialize TWELITE
    Twelite.begin(Serial2,
                  LED_PIN, RST_PIN, PRG_PIN,
                  TWE_CHANNEL, TWE_APP_ID);
    // Attach an event handler to process packets from App_ARIA
    Twelite.on([](const ParsedAppAriaPacket& packet) {
        Serial.println("");
        Serial.print("Packet Number:     #");
        Serial.println(packet.u16SequenceNumber, DEC);
        Serial.print("Source Logical ID: 0x");
        Serial.println(packet.u8SourceLogicalId, HEX);
        Serial.print("LQI:               ");
        Serial.println(packet.u8Lqi, DEC);
        Serial.print("Supply Voltage:    ");
        Serial.print(packet.u16SupplyVoltage, DEC); Serial.println(" mV");
        Serial.print("Air Temperature:   ");
        Serial.print(packet.i16Temp100x / 100.0f, 2); Serial.println(" C");
        Serial.print("Relative Humidity: ");
        Serial.print(packet.u16Humid100x / 100.0f, 2); Serial.println(" %");
        Serial.print("Magnet State:      ");
        printMagnetState(packet.u8MagnetState, packet.bMagnetStateChanged);
    });
}
void loop()
{
    // Update TWELITE
    Twelite.update();
}
void printMagnetState(const uint8_t state, const bool changed)
{
    if (changed) {
        switch (state) {
        case 0x0: { Serial.print("Leaving or not found"); break; }
        case 0x1: { Serial.print("N-pole is getting closer"); break; }
        case 0x2: { Serial.print("S-pole is getting closer"); break; }
        default: break;
        }
    } else {
        switch (state) {
        case 0x0: { Serial.print("Not found"); break; }
        case 0x1: { Serial.print("N-pole is close"); break; }
        case 0x2: { Serial.print("S-pole is close"); break; }
        default: break;
        }
        Serial.print(" (Periodic packet)");
    }
    Serial.println("");
}
ライブラリのインクルード
4行目では、MWings ライブラリをインクルードしています。
#include "MWings.h"
ピン番号の定義
6-8行目では、ピン番号を定義しています。
const int RST_PIN = 5;
const int PRG_PIN = 4;
const int LED_PIN = 18;
| 名称 | 内容 | 
|---|---|
| RST_PIN | TWELITE の RST ピンが接続されているピンの番号 | 
| PRG_PIN | TWELITE の PRG ピンが接続されているピンの番号 | 
| LED_PIN | 基板上の ESP32 用 LED が接続されているピンの番号 | 
TWELITE 設定の定義
10-11行目では、TWELITE SPOT に搭載された TWELITE 親機に適用する設定を定義しています。
const uint8_t TWE_CHANNEL = 18;
const uint32_t TWE_APP_ID = 0x67720102;
| 名称 | 内容 | 
|---|---|
| TWE_CHANNEL | TWELITE の 周波数チャネル | 
| TWE_APP_ID | TWELITE の アプリケーション ID | 
シリアルポートの設定
18-20行目では、使用するシリアルポートを初期化するとともに、シリアルモニタへ起動メッセージを出力しています。
    Serial.begin(115200);
    Serial.println("Monitor example for TWELITE SPOT: App_ARIA (ARIA Mode)");
    Serial2.begin(115200, SERIAL_8N1);
Serial は、Arduino IDE の シリアルモニタとの通信に使います。シリアルモニタの設定に合わせて、ボーレートを 115200 bps としています。
一方、Serial2 は、TWELITE SPOT に搭載された TWELITE 親機との通信に使います。こちらも TWELITE 親機の初期設定に合わせて、ボーレートを 115200 bps としています。
TWELITE の設定
23-25行目では、Twelite.begin() を呼び出し、TWELITE SPOT に搭載された TWELITE 親機の設定と起動を行っています。
    Twelite.begin(Serial2,
                      LED_PIN, RST_PIN, PRG_PIN,
                      TWE_CHANNEL, TWE_APP_ID);
パケット受信時のイベントの登録
28-44行目では、Twelite.on() を呼び出し、送られたデータに対して行う処理を登録しています。
ここでは、受信したパケットの内容をシリアルモニタに出力しています。
    Twelite.on([](const ParsedAppAriaPacket& packet) {
        Serial.println("");
        Serial.print("Packet Number:     #");
        Serial.println(packet.u16SequenceNumber, DEC);
        Serial.print("Source Logical ID: 0x");
        Serial.println(packet.u8SourceLogicalId, HEX);
        Serial.print("LQI:               ");
        Serial.println(packet.u8Lqi, DEC);
        Serial.print("Supply Voltage:    ");
        Serial.print(packet.u16SupplyVoltage, DEC); Serial.println(" mV");
        Serial.print("Air Temperature:   ");
        Serial.print(packet.i16Temp100x / 100.0f, 2); Serial.println(" C");
        Serial.print("Relative Humidity: ");
        Serial.print(packet.u16Humid100x / 100.0f, 2); Serial.println(" %");
        Serial.print("Magnet State:      ");
        printMagnetState(packet.u8MagnetState, packet.bMagnetStateChanged);
    });
上記のイベントは、アリアアプリ(TWELITE ARIA モード)からのパケットを受信したときにだけ呼び出されます。
受信したパケットの内容は ParsedAppAriaPacket 型の引数 packet に格納されています。
メッセージの内容
| メッセージ | 内容 | 
|---|---|
| Packet Number | パケットの続き番号 | 
| Source Logical ID | 送信元 TWELITE の論理デバイスID | 
| LQI | 無線通信品質(0~255) | 
| Supply Voltage | 電源電圧 (mV) | 
| Air Temperature | TWELITE ARIA が計測した気温 (°C) | 
| Relative Humidity | TWELITE ARIA が計測した相対湿度 (%) | 
| Magnet State | 磁気センサーの状態 | 
磁気センサーの状態
出力される磁気センサーの状態は以下の通りです。
- S-pole is getting closer新たに磁石のS極を検知した。
- N-pole is getting closer新たに磁石のN極を検知した。
- Leaving or Not found磁石が検知できなかった。
- S-pole is close (Periodic packet)磁石のS極を検知している。
- N-pole is close (Periodic packet)磁石のN極を検知している。
- Not found (Periodic packet)磁石を連続で検知できていない(定期送信パケット)。
TWELITE のデータの更新
50行目では、Twelite.update() を呼び出しています。
    Twelite.update();