

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Bluetooth Low Energy デモアプリケーション
<a name="ble-demo"></a>

**重要**  <a name="deprecation-message-demo"></a>
このデモは、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、[ここから始める](freertos-getting-started-modular.md)ことをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「[Amazon FreeRTOS Github リポジトリ移行ガイド](github-repo-migration.md)」を参照してください。

## 概要:
<a name="ble-demo-overview"></a>

FreeRTOS Bluetooth Low Energy には 3 つのデモアプリケーションがあります。
+ [MQTT over Bluetooth Low Energy](#ble-demo-mqtt) デモ 

  このアプリケーションは、MQTT over Bluetooth Low Energy サービスの使用方法を示します。
+ [Wi-Fi プロビジョニング](#ble-demo-wifi) デモ

  このアプリケーションは、Bluetooth Low Energy Wi-Fi プロビジョニングサービスの使用方法を示します。
+ [汎用属性サーバー](#ble-demo-server) デモ

  このアプリケーションは、FreeRTOS Bluetooth Low Energy ミドルウェア API を使用して単純な GATT サーバーを作成する方法を示します。

**注記**  
FreeRTOS デモをセットアップして実行するには、[FreeRTOS の開始方法](freertos-getting-started.md) の手順に従います。

## 前提条件
<a name="ble-demo-prereqs"></a>

これらのデモを観るには、Bluetooth Low Energy 機能を備えたマイクロコントローラーが必要です。また、[FreeRTOS Bluetooth デバイス用の iOS SDK](freertos-ble-mobile.md#freertos-ble-ios) または [FreeRTOS Bluetooth デバイス用の Android SDK](freertos-ble-mobile.md#freertos-ble-android) も必要です。

### FreeRTOS Bluetooth Low Energy 用の AWS IoT と Amazon Cognito のセットアップ
<a name="set-up-ble-demo-aws"></a>

MQTT AWS IoT 間でデバイスを に接続するには、 AWS IoT と Amazon Cognito を設定する必要があります。

**をセットアップするには AWS IoT**

1. [https://aws.amazon.com/](https://aws.amazon.com/) で AWS アカウントを設定します。

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)を開き、ナビゲーションペインから [**管理**]、[**モノ**] の順に選択します。

1. [**作成**]、[**単一のモノを作成する**] の順に選択します。

1. デバイスの名前を入力し、[**次へ**] を選択します。

1. モバイルデバイスを使用して、マイクロコントローラーをクラウドに接続する場合は、[**証明書なしでモノを作成**] を選択します。Mobile SDK は Amazon Cognito を使用してデバイス認証を行っているため、Bluetooth Low Energy を使用するデモのためにデバイス証明書を作成する必要はありません。

   Wi-Fi を使用してマイクロコントローラーをクラウドディレクトリに接続する場合は、[**証明書の作成**]、[**有効化**] の順に選択し、モノの証明書、パブリックキー、プライベートキーをダウンロードします。

1. 登録したモノのリストから、先ほど作成したモノを選択し、モノのページから [**操作**] を選択します。REST API AWS IoT エンドポイントを書き留めます。

設定の詳細については、[「 の開始方法 AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html)」を参照してください。

**Amazon Cognito ユーザープールを作成するには**

1. Amazon Cognito コンソールを開き、**[Manage User Pools]** (ユーザープールの管理) を選択します。

1. **[ユーザープールを作成]** を選択します。

1. ユーザープールに名前を付け、[**デフォルトを確認する**] を選択します。

1. ナビゲーションペインから、[**アプリクライアント**]、[**アプリクライアントの追加**] の順に選択します。

1. アプリクライアントの名前を入力し、[**アプリクライアントの作成**] を選択します。

1. ナビゲーションバーから、[**Review**]、[**プールの作成**] の順に選択します。

   ユーザープールの [**全般設定**] に表示されるプール ID を書き留めます。

1. ナビゲーションペインから、[**アプリクライアント**]、[**詳細を表示**] の順に選択します。アプリクライアント ID およびアプリクライアントシークレットを書き留めます。

**Amazon Cognito アイデンティティプールを作成するには**

1. Amazon Cognito コンソールを開き、**[Manage Identity Pools]** (ID プールの管理) を選択します。

1. ID プールの名前を入力します。

1. [**認証プロバイダー**] を展開して [**Cognito**] を選択し、ユーザープール ID およびアプリクライアント ID を入力します。

1. **[プールの作成]** を選択します。

1. [**詳細を表示**] を展開し、2 種類の IAM ロール名を書き留めます。**[Allow]** (許可) を選択し、認証済み ID および未認証 ID の Amazon Cognito へのアクセスを認可する IAM ロールを作成します。

1. [**Edit identity pool**] (ID プールの編集) をクリックします。ID プールの ID を書き留めます。形式は `us-west-2:12345678-1234-1234-1234-123456789012` です。

Amazon Cognito のセットアップの詳細については、[Amazon Cognito の使用開始方法](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-getting-started.html)を参照してください。

**IAM ポリシーを作成して、認証済み ID にアタッチするには**

1. IAM コンソールを開き、ナビゲーションペインで **[Roles]** (ロール) を選択します。

1. 認証された ID のロールを検索して選択し、[**Attach policies (ポリシーのアタッチ)**]、[**Add inline policy (インラインポリシーの追加)**] の順に選択します。

1. [**JSON**] タブを選択し、次の JSON を貼り付けます。

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "iot:AttachPolicy",
               "iot:AttachPrincipalPolicy",
               "iot:Connect",
               "iot:Publish",
               "iot:Subscribe",
               "iot:Receive",
               "iot:GetThingShadow",
               "iot:UpdateThingShadow",
               "iot:DeleteThingShadow"
            ],
            "Resource":[
               "*"
            ]
         }
      ]
   }
   ```

------

1. [**ポリシーの確認**] を選択してポリシーの名前を入力し、[**ポリシーの作成**] を選択します。

 AWS IoT と Amazon Cognito の情報を手元に用意しておきます。クラウドでモバイルアプリケーションを認証するには、エンドポイントと IDs が必要です AWS 。

### Bluetooth Low Energy 用の FreeRTOS 環境をセットアップする
<a name="ble-demo-set-up"></a>

ご利用の環境をセットアップするには、[Bluetooth Low Energy ライブラリ](freertos-ble-library.md) を使用してマイクロコントローラーに FreeRTOS をダウンロードし、FreeRTOS Bluetooth デバイス用 Mobile SDK をご利用のモバイルデバイスにダウンロードして設定する必要があります。

**FreeRTOS Bluetooth Low Energy でマイクロコントローラーの環境をセットアップするには**

1. FreeRTOS を [GitHub](https://github.com/aws/amazon-freertos) からダウンロードするか、クローンします。手順については、[README.md](https://github.com/aws/amazon-freertos/blob/main/README.md) ファイルを参照してください。

1. マイクロコントローラーに FreeRTOS をセットアップします。

   FreeRTOS の資格を満たしたマイクロコントローラーで FreeRTOS の使用を開始する方法については、ご利用のボードの [FreeRTOS の使用開始](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-getting-started.html)ガイドを参照してください。
**注記**  
デモは、FreeRTOS と移植された FreeRTOS Bluetooth Low Energy ライブラリを搭載した Bluetooth Low Energy 対応マイクロコントローラーで実行できます。現在、FreeRTOS [MQTT over Bluetooth Low Energy](#ble-demo-mqtt) デモプロジェクトは、以下の Bluetooth Low Energy 対応デバイスに完全に移植されます。  
[Espressif ESP32-DevKitC and the ESP-WROVER-KIT](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html)
[Nordic nRF52840-DK](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_nordic.html)

## 共通コンポーネント
<a name="ble-demo-common"></a>

FreeRTOS デモアプリケーションには、2 つの共通のコンポーネントが含まれています。
+ Network Manager
+ Bluetooth Low Energy Mobile SDK デモアプリケーション

### Network Manager
<a name="ble-demo-network-manager"></a>

Network Manager は、マイクロコントローラーのネットワーク接続を管理します。`demos/network_manager/aws_iot_network_manager.c` の FreeRTOS ディレクトリにあります。Network Manager が Wi-Fi と Bluetooth Low Energy の両方に対応している場合、デフォルトでは Bluetooth Low Energy を使ってデモが開始されます。Bluetooth Low Energy 接続が中断され、ボードが Wi-Fi に対応している場合、Network Manager は使用可能な Wi-Fi 接続に切り替えてネットワークからの切断を回避します。

Network Manager でネットワーク接続タイプを有効にするには、`vendors/vendor/boards/board/aws_demos/config_files/aws_iot_network_config.h` で `configENABLED_NETWORKS` パラメータにネットワーク接続タイプを追加します (*vendor* はベンダーの名前で、*board* はデモを実行するために使用中のボードの名前です)。

たとえば、Bluetooth Low Energy と Wi-Fi の両方が有効な場合、`aws_iot_network_config.h` にある `#define configENABLED_NETWORKS` で始まる行は次のようになります。

```
#define  configENABLED_NETWORKS  ( AWSIOT_NETWORK_TYPE_BLE | AWSIOT_NETWORK_TYPE_WIFI )
```

現在サポートされているネットワーク接続タイプのリストを取得するには、`aws_iot_network.h` の `#define AWSIOT_NETWORK_TYPE` から始まる行を参照してください。

### FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション
<a name="ble-sdk-app"></a>

FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーションは、GitHub から取得でき、[FreeRTOS Bluetooth デバイス用 Android SDK](https://github.com/aws/amazon-freertos-ble-android-sdk) は `amazon-freertos-ble-android-sdk/app` に、[FreeRTOS Bluetooth デバイス用 iOS SDK](https://github.com/aws/amazon-freertos-ble-ios-sdk) は `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo` にあります。この例では、iOS バージョンのデモモバイルアプリケーションのスクリーンショットを使用します。

**注記**  
iOS デバイスを使用している場合は、デモ用モバイルアプリケーションを構築するために Xcode が必要です。Android デバイスを使用している場合、Android Studio を使用してデモ用モバイルアプリケーションを構築できます。

**iOS SDK デモアプリケーションを設定するには**

設定変数を定義する場合は、設定ファイルで指定されているプレースホルダー値の形式を使用します。

1. [FreeRTOS Bluetooth デバイス用の iOS SDK](freertos-ble-mobile.md#freertos-ble-ios) がインストールされていることを確認します。

1. `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/` から次のコマンドを発行します。

   ```
   $ pod install
   ```

1. Xcode で `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo.xcworkspace` プロジェクトを開き、署名している開発者アカウントを自分のアカウントに変更します。

1. リージョンに AWS IoT ポリシーを作成します (まだ作成していない場合）。
**注記**  
このポリシーは、Amazon Cognito 認証済み ID 用に作成された IAM ポリシーとは異なります。

   1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/) を開きます。

   1. ナビゲーションペインで、[**Secure**] (保護) を選択し、[**Policies**] (ポリシー) を選択してから [**Create**] (作成) を選択します。ポリシーを識別するための名前を入力します。**[Add statements]** (ステートメントを追加) セクションで、**[Advanced mode]** (アドバンストモード) を選択します。次の JSON をポリシーエディタウィンドウにコピーして貼り付けます。*aws-region* と *aws-account* を自分の AWS リージョンとアカウント ID に置き換えます。

   1. [**Create**] (作成) を選択します。

1. `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo/Amazon/AmazonConstants.swift` を開き、次の変数を再定義します。
   + `region`: AWS リージョン。
   + `iotPolicyName`: AWS IoT ポリシー名。
   + `mqttCustomTopic`: 発行する MQTT トピック。

1. `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo/Support/awsconfiguration.json` を開きます。

   `CognitoIdentity` で、次の変数を再定義します。
   + `PoolId`: Amazon Cognito ID プール ID。
   + `Region`: AWS リージョン。

   `CognitoUserPool` で、次の変数を再定義します。
   + `PoolId`: Amazon Cognito ユーザープール ID。
   + `AppClientId`: アプリクライアント ID。
   + `AppClientSecret`: アプリクライアントシークレット。
   + `Region`: AWS リージョン。

**Android SDK デモアプリケーションを設定するには**

設定変数を定義する場合は、設定ファイルで指定されているプレースホルダー値の形式を使用します。

1. [FreeRTOS Bluetooth デバイス用の Android SDK](freertos-ble-mobile.md#freertos-ble-android) がインストールされていることを確認します。

1. リージョンに AWS IoT ポリシーを作成します (まだ作成していない場合）。
**注記**  
このポリシーは、Amazon Cognito 認証済み ID 用に作成された IAM ポリシーとは異なります。

   1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/) を開きます。

   1. ナビゲーションペインで、[**Secure**] (保護) を選択し、[**Policies**] (ポリシー) を選択してから [**Create**] (作成) を選択します。ポリシーを識別するための名前を入力します。**[Add statements]** (ステートメントを追加) セクションで、**[Advanced mode]** (アドバンストモード) を選択します。次の JSON をポリシーエディタウィンドウにコピーして貼り付けます。*aws-region* と *aws-account* を自分の AWS リージョンとアカウント ID に置き換えます。

   1. **[作成]** を選択します。

1. [https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/java/software/amazon/freertos/demo/DemoConstants.java](https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/java/software/amazon/freertos/demo/DemoConstants.java) を開き、以下の変数を再定義します。
   + `AWS_IOT_POLICY_NAME`: AWS IoT ポリシー名。
   + `AWS_IOT_REGION`: AWS リージョン。

1. [https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/res/raw/awsconfiguration.json](https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/res/raw/awsconfiguration.json) を開きます。

   `CognitoIdentity` で、次の変数を再定義します。
   + `PoolId`: Amazon Cognito ID プール ID。
   + `Region`: AWS リージョン。

   `CognitoUserPool` で、次の変数を再定義します。
   + `PoolId`: Amazon Cognito ユーザープール ID。
   + `AppClientId`: アプリクライアント ID。
   + `AppClientSecret`: アプリクライアントシークレット。
   + `Region`: AWS リージョン。

**Bluetooth Low Energy 経由でマイクロコントローラーとの安全な接続を検出して確立するには**

1. マイクロコントローラとモバイルデバイスを安全にペアリングするには (ステップ 6)、入力と出力の両方の機能 (TeraTerm など) を備えたシリアルターミナルエミュレータが必要です。[ターミナルエミュレーターをインストールする](gsg-troubleshooting.md#uart-term) の手順に従って、ターミナルをシリアル接続でボードに接続するよう設定します。

1. マイクロコントローラーで Bluetooth Low Energy デモプロジェクトを実行します。

1. モバイルデバイスで Bluetooth Low Energy Mobile SDK デモアプリケーションを実行します。

   コマンドラインから Android SDK のデモアプリケーションを開始するには、次のコマンドを実行します。

   ```
   $ ./gradlew installDebug
   ```

1. Bluetooth Low Energy Mobile SDK デモアプリの [**デバイス**] にマイクロコントローラーが表示されていることを確認します。  
![\[一意の識別子を持つ ESP32 デバイスを示すデバイス管理ページ。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-device-list1.png)
**注記**  
このリストには、 FreeRTOS を搭載したすべてのデバイスと、範囲内にあるデバイス情報サービス (`freertos/.../device_information`) が表示されます。

1. デバイスのリストからマイクロコントローラーを選択します。アプリケーションがボードとの接続を確立し、接続されたデバイスの横に緑色の線が表示されます。  
![\[ESP32 デバイス ID が表示されます。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-device-list2.png)

   マイクロコントローラーとの接続を切断するには、その線を左へドラッグします。  
![\[ESP32 デバイス ID と別のデバイス ID を示すデバイスページ。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-device-list3.png)

1. プロンプトが表示されたら、マイクロコントローラとモバイルデバイスをペアリングします。  
![\[BLE デバイスの切断、MQTT サービスの切断、アドバタイズ開始、リモートデバイスへの BLE 接続、数値比較のプロンプトを示すコンソール出力。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/pairing-board.png)  
![\[Bluetooth ペアリングリクエストダイアログで、デバイス「ESP32」でコード「465520」が表示され、「ESP32」を確認します。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/pairing-mobile.png)

   数値比較用のコードが両方のデバイスで同じである場合は、デバイスをペアリングします。

**注記**  
Bluetooth Low Energy Mobile SDK デモアプリケーションは、ユーザー認証に Amazon Cognito を使用します。Amazon Cognito ユーザーおよび ID プールが設定されていることと、認証済み ID に IAM ポリシーがアタッチされていることを確認します。

## MQTT over Bluetooth Low Energy
<a name="ble-demo-mqtt"></a>

MQTT over Bluetooth Low Energy デモでは、マイクロコントローラーは MQTT プロキシを介してメッセージを AWS クラウドに発行します。

**デモ MQTT トピックをサブスクライブするには**

1.  AWS IoT コンソールにサインインします。

1. ナビゲーションペインで、**[テスト]** を選択し、**[MQTT テストクライアント]** を選択して MQTT クライアントを開きます。

1. **[Subscription topic]** (トピックのサブスクリプション) で ***thing-name*/example/topic1** と入力し、**[Subscribe to topic]** (トピックへのサブスクライブ) を選択します。

Bluetooth Low Energy を使用してマイクロコントローラーとモバイルデバイスのペアリングを行う場合、MQTT メッセージは、モバイルデバイスの Bluetooth Low Energy Mobile SDK デモアプリケーションを通じてルーティングされます。

**Bluetooth Low Energy 経由でデモを有効にするには**

1. `vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h` を開き、`CONFIG_MQTT_BLE_TRANSPORT_DEMO_ENABLED` を定義します。

1. を開き`demos/include/aws_clientcredential.h`、 AWS IoT ブローカーエンドポイント`clientcredentialMQTT_BROKER_ENDPOINT`で を設定します。BLE マイクロコントローラーデバイスのモノの名前で `clientcredentialIOT_THING_NAME` を設定します。 AWS IoT ブローカーエンドポイントは、左側のナビゲーションペインで**設定**を選択して AWS IoT コンソールから取得するか、コマンド を実行して CLI から取得できます`aws iot describe-endpoint --endpoint-type=iot:Data-ATS`。
**注記**  
 AWS IoT ブローカーエンドポイントとモノの名前はどちらも、シークレット ID とユーザープールが設定されているのと同じリージョンにある必要があります。

**デモを実行するには**

1. マイクロコントローラーでデモプロジェクトを構築し、実行します。

1. ボードとモバイルデバイスが、[FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション](#ble-sdk-app) を使ってペアリングされていることを確認します。

1. デモモバイルアプリの [**デバイス**] リストからマイクロコントローラーを選択し、[**MQTT プロキシ**] を選択して MQTT プロキシ設定を開きます。  
![\[3 つの ESP32 デバイス ID のリストで MQTT Proxy、Network Config、および Custom GATT MQTT オプションが含まれます。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-device-list4.png)

1. MQTT プロキシを有効にすると、`thing-name/example/topic1` トピックに MQTT メッセージが表示され、データが UART ターミナルに出力されます。

## Wi-Fi プロビジョニング
<a name="ble-demo-wifi"></a>

Wi-Fi プロビジョニングは、Bluetooth Low Energy 経由でモバイルデバイスからマイクロコントローラーに Wi-Fi ネットワーク認証情報を安全に送信できる FreeRTOS Bluetooth Low Energy サービスです。Wi-Fi プロビジョニングサービスのソースコードは、`freertos/.../wifi_provisioning` にあります。

**注記**  
Wi-Fi プロビジョニングデモは、現在、Espressif ESP32-DevKitC でサポートされています。

**デモを有効化するには**

1. Wi-Fi プロビジョニングサービスを有効にします。`vendors/vendor/boards/board/aws_demos/config_files/iot_ble_config.h` を開き、`#define IOT_BLE_ENABLE_WIFI_PROVISIONING` を `1` に設定します (*vendor* にはベンダーの名前、*board* にはデモの実行に使用しているボードの名前が入ります)。
**注記**  
Wi-Fi プロビジョニングサービスはデフォルトでは無効になっています。

1. Bluetooth Low Energy と Wi-Fi の両方を有効にするよう [Network Manager](#ble-demo-network-manager) を設定します。

**デモを実行するには**

1. マイクロコントローラーでデモプロジェクトを構築し、実行します。

1. マイクロコントローラーとモバイルデバイスが、[FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション](#ble-sdk-app) を使ってペアリングされていることを確認します。

1. デモモバイルアプリの [**Devices (デバイス)**] リストからマイクロコントローラーを選択し、次に [**Network Config (ネットワーク構成)**] を選択してネットワーク構成設定を開きます。  
![\[3 つの ESP32 デバイス ID のリストで MQTT Proxy、Network Config、および Custom GATT MQTT オプションが含まれます。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-device-list4.png)

1. ボードの [**Network Config (ネットワーク構成)**] を選択した後、マイクロコントローラーが近隣にあるネットワークのリストをモバイルデバイスに送信します。[**Scanned Networks (スキャンされたネットワーク)**] のリストに利用可能な Wi-Fi ネットワークが表示されます。  
![\[ESP32 デバイス管理インターフェイスには、保存済みのネットワークがなく、2 種類のスキャンされたオープン Wi-Fi ネットワークが表示されます。1 つは WPA2 セキュリティで RSSI が -29、もう 1 つはオープンセキュリティで RSSI が -50 です。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-network-config1.png)

   [**Scanned Networks (スキャンされたネットワーク)**] のリストからネットワークを選択し、必要に応じて SSID とパスワードを入力します。  
![\[Wi-Fi ネットワークパスワード入力ダイアログボックスで空のパスワードフィールド、キャンセルボタン、保存ボタンが含まれます。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-wifi-password.png)

   マイクロコントローラーがネットワークに接続し、ネットワークを保存します。ネットワークが [**Saved Networks (保存されたネットワーク)**] に表示されます。  
![\[保存およびスキャンされた WiFi ネットワークを示すネットワークインターフェイスで、一方は WPA2 で保護され、もう一方はオープンで、信号強度インジケータが付いています。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-network-config2.png)

デモモバイルアプリには複数のネットワークを保存できます。アプリケーションとデモを再起動すると、[**Saved Networks (保存されたネットワーク)**] の上から順に、最初に利用可能なネットワークに接続します。

ネットワークの優先順位を変更したり、ネットワークを削除したりするには、[**Network Configuration (ネットワーク構成)**] ページで [**Editing Mode (編集モード)**] を選択します。ネットワークの優先順位を変更するには、該当するネットワークの右側を選択し、上下にドラッグします。ネットワークを削除するには、該当するネットワークの左側にある赤色のボタンを選択します。

![\[Wi-Fi ネットワーク設定画面には、保存されたネットワーク、削除や優先度変更のための編集オプション、スキャンされたネットワークが表示されます。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-network-editing.png)


## 汎用属性サーバー
<a name="ble-demo-server"></a>

この例では、マイクロコントローラーにあるデモの Generic Attributes (GATT) サーバーアプリケーションが単純なカウンター値を[FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション](#ble-sdk-app) に送信します。

Bluetooth Low Energy Mobile SDK を使用すると、モバイルデバイス用に独自の GATT クライアントを作成することができます。このクライアントは、マイクロコントローラー上の GATT サーバーに接続し、デモモバイルアプリケーションと並行して実行されます。

**デモを有効化するには**

1. Bluetooth Low Energy GATT デモを有効にします。`vendors/vendor/boards/board/aws_demos/config_files/iot_ble_config.h` (*vendor* はベンダーの名前で、*board* はデモの実行に使用中のボードの名前です) で、define ステートメントのリストに `#define IOT_BLE_ADD_CUSTOM_SERVICES ( 1 )` を追加します。
**注記**  
デフォルトでは、Bluetooth Low Energy GATT デモは無効になっています。

1. `freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h` を開き、`#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` をコメントアウトして `CONFIG_BLE_GATT_SERVER_DEMO_ENABLED` を定義します。

**デモを実行するには**

1. マイクロコントローラーでデモプロジェクトを構築し、実行します。

1. ボードとモバイルデバイスが、[FreeRTOS Bluetooth Low Energy Mobile SDK デモアプリケーション](#ble-sdk-app) を使ってペアリングされていることを確認します。

1. アプリの [**デバイス**] リストからボードを選択し、[**MQTT プロキシ**] を選択して MQTT プロキシオプションを開きます。  
![\[3 つの ESP32 デバイス ID のリストで MQTT Proxy、Network Config、および Custom GATT MQTT オプションが含まれます。\]](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/ble-device-list4.png)

1. **[デバイス]** リストに戻ってボードを選択し、次に **[カスタム GATT MQTT]** を選択してカスタムの GATT サービスオプションを開きます。

1. [**Start Counter (カウンターの開始)**] を選択して ***your-thing-name*/example/topic** MQTT トピックへのデータの発行を開始します。

   MQTT プロキシを有効にした後、`your-thing-name/example/topic` トピックに Hello World と増分カウンターメッセージが表示されます。