Feedback
Feedback

If you are having issues with the exercises, please create a ticket on DevZone: devzone.nordicsemi.com
Drag & Drop Files, Choose Files to Upload 最大 2 個のファイルをアップロードできます。
  • 日本語
    Eng
    日本語
  • 演習1 – Matter OTA を使用したファームウェアのアップグレード

    Matter OTA のソフトウェア更新には、OTA Requestor と OTA Provider の2種類のノードが関与することを思い出してください。

    この演習では、OTA Requestor の役割は Matter サンプルアプリケーションを実行する Nordic デバイス上で動作させ、OTA Provider の役割は Linux 用の OTA Provider ツールを使用して実行します。

    目標は、Matter OTA の仕組みを用いて Matter デバイスのソフトウェア更新を実行することです。

    演習の手順

    1. この演習のベースコードを開きます。

    Visual Studio Code の WELCOME パネルでOpen an existing applicationを選択し、コースの GitHub リポジトリに移動してl5/l5_e1ディレクトリを開きます。アプリケーションはAPPLICATIONSパネルに表示されるはずです。

    このアプリケーションは Matter Lock サンプルのコピーであり、この演習のコードスニペットをどこに入力するかの指示が追加されています。

    注:nRF Connect SDK のすべての Matter サンプルはデフォルトで OTA Requestor の役割をサポートしているため、任意の Matter サンプルを使用できます。

    2. アプリケーションをビルドして DK に書き込みます。

    アプリケーションをビルドして DK に書き込みます。

    3. Matter Lock サンプルを少し変更します。

    ソフトウェア更新が動作することを確認するには、アプリケーションに変更を加え、バイナリを再度ビルドする必要があります。

    3.1 ソフトウェア更新を容易に確認できるよう、ログ行を追加します。

    src/app_task.cppファイルのStartApp()メソッドに、ソフトウェア更新が成功したことを容易に確認できるよう、新しいログ行を追加します。

    次のログ行を追加します

    LOG_INF("================ NEW SOFTWARE IMAGE IS WORKING!!! ==============="); 
    C++

    3.2 VERSIONファイルを変更し、PATCHLEVELの値を0以外の任意の値に変更します(例:4)。

    変更後、ファイルは次のようになります

    VERSION_MAJOR = 3
    VERSION_MINOR = 2
    PATCHLEVEL = 4
    VERSION_TWEAK = 0
    EXTRAVERSION =
    C++

    3.3 サンプルを再度ビルドしますが、DK には書き込まないでください

    3.4 デバイスのシリアルポートを開き、ログが表示されていることを確認してください。ソフトウェア更新の成功を確認するために必要になります。

    CONNECTED DEVICESパネルのVCOMを使用してボードのシリアルポートを開きます。VCOM の右側にある「Connect to Serial Port」アイコンをクリックします。

    デバイスからのログが表示されない場合は、nRF54L Series DK の RESET ボタンを押してください。

    Note

    nRF54L Series DK は2つのシリアルポートとして認識され、番号は PC によって異なる場合があります。番号が大きい方の VCOM を選択してください。例えば VCOM0 と VCOM1 がある場合は VCOM1 を使用します。

    4. CHIP Tool を使用して Matter デバイスをコミッショニングします。

    CHIP Tool を使用して Matter デバイスをコミッショニングします。

    4.1 Thread Border Router が引き続き動作していることを確認します。動作していない場合:

    4.1.1 新しいコマンドライン端末を開き、次のコマンドを実行して OpenThread Border Router を起動します:

    /dev/ttyACM0を、Thread コプロセッサで使用しているシリアルポート番号に置き換えてください。

    sudo docker run -it --rm --privileged --name otbr --network otbr -p 8080:80 \
    --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \
    --volume /dev/ttyACM0:/dev/radio nrfconnect/otbr:fbde28a --radio-url spinel+hdlc+uart:///dev/radio?uart-baudrate=1000000
    Terminal command

    Important

    「コンテナ名 “/otbr” はすでにコンテナ…で使用されています」のようなエラーが出た場合は、次のコマンドを実行してください

      • sudo docker kill otbr

      • sudo ip -6 route del "fd11:22::/64" dev otbr0 via "fd11:db8:1::2"

      • sudo ip link set dev otbr0 down

      • sudo docker network rm otbr

    4.1.2 Web ブラウザでhttp://localhost:8080/アドレスを開き、OpenThread Border Router のグラフィカルユーザーインターフェースにアクセスします。

    4.1.3 サイドパネルからFormタブに移動し、入力したデータが次の画像と同じであることを確認します。次にFORMボタンを押して、OpenThread Border Router に Thread ネットワークの形成と Thread リーダーになることを要求します。

    4.1.4 新しいコマンドライン端末を開き、Docker 内で動作している Thread ノードのステータスを確認します:

    sudo docker exec -it otbr sh -c "sudo ot-ctl state"
    Terminal command

    出力は次のようになるはずです:

    leader
    Done
    Terminal

    4.2 CHIP Tool が引き続き動作していることを確認します。動作していない場合:

    4.2.1 新しいコマンドライン端末を開き、次のコマンドで前の演習で取得したダウンロード済みバイナリファイルを実行します:

    PC の場合:

    ./chip-tool_x64 interactive start

    Raspberry Pi の場合:

    ./chip-tool_arm64 interactive start

    4.3 デバイスをネットワークにコミッショニングします。

    4.3.1 Bluetooth LE 経由の Matter アドバタイズが動作していることを確認します。

    デバイスのシリアルポートに次のログが表示されるはずです:

    I: 730208 [DL]CHIPoBLE advertising started
    I: 730212 [DL]NFC Tag emulation started
    Terminal

    Matter Template サンプルでは Bluetooth LE 経由の Matter アドバタイズは自動的に開始されますが、1時間でタイムアウトします。アドバタイズがタイムアウトした場合は、Matter デバイスの BUTTON0 を押して再度開始してください。

    4.3.2 CHIP Tool アプリケーションを実行している端末ウィンドウに戻ります。

    次のコマンドを実行してコミッショニングを開始し、<thread dataset>引数に、レッスン2 演習1で取得してコンピュータに保存した Thread dataset を指定します。<your_selected_node_id>は、他の演習で使用していないランダムなノード ID(例:7)に置き換えてください。この同じ番号は、CHIP Tool 経由でデバイスにコマンドを送信する際にも使用します。

    pairing ble-thread <your_selected_node_id> hex:<thread dataset> 20202021 3840
    Terminal command

    その結果、Matter デバイスと CHIP Tool アプリケーションのログには、コミッショニングのフローを示す詳細なメッセージが多数出力され始めます。これらは、ペアリングに問題がある場合に特に有用で、トラブルシューティングに役立ちます。

    4.1 CHIP Tool が引き続き動作していることを確認します。動作していない場合:

    4.1.1 新しいコマンドライン端末を開き、次のコマンドで前の演習で取得したダウンロード済みバイナリファイルを実行します:

    PC の場合:

    ./chip-tool_x64 interactive start

    Raspberry Pi の場合:

    ./chip-tool_arm64 interactive start

    4.2 デバイスをネットワークにコミッショニングします。

    4.2.1 Matter デバイスの BUTTON0 を押して、Bluetooth LE 経由の Matter アドバタイズを開始します。

    デバイスのシリアルポートに次のログが表示されるはずです:

    I: 730208 [DL]CHIPoBLE advertising started
    I: 730212 [DL]NFC Tag emulation started
    Terminal

    4.2.2 CHIP Tool アプリケーションを実行している端末ウィンドウに戻ります。

    次のコマンドを実行し、<wifi_ssid>および<wifi_password>引数に Wi-Fi ネットワーク情報を入力します。

    <your_selected_node_id>は、他の演習で使用していないランダムなノード ID(例:7)に置き換えてください。この同じ番号は、CHIP Tool 経由でデバイスにコマンドを送信する際にも使用します。

    pairing ble-wifi <your_selected_node_id> <wifi_ssid> <wifi_password> 20202021 3840
    Terminal command

    その結果、Matter デバイスと CHIP Tool アプリケーションのログには、コミッショニングのフローを示す詳細なメッセージが多数出力され始めます。これらは、ペアリングに問題がある場合に特に有用で、トラブルシューティングに役立ちます。

    5. OTA Provider のセットアップ

    5.1 Matter nRF Connect releases の GitHub ページにアクセスして、OTA Provider の実行ファイルをダウンロードします。使用している nRF Connect SDK バージョンに対応するリリース成果物を見つけてください:

    Linux PC でセットアップしている場合は、chip-ota-provider-app_x64ファイルをダウンロードします。

    Raspberry Pi でセットアップしている場合は、chip-ota-provider-app_arm64ファイルをダウンロードします。

    5.2 ダウンロードしたバイナリを実行します。<path_to_matter.ota>は、Matter デバイスに提供したい Matter OTA イメージへのパスに置き換えてください。

    このケースでは<path_to_sample>/build/matter.otaになります。

    なお、Matter OTA イメージはデフォルトでサンプルのビルドディレクトリに生成されます:

    PC の場合:

    ./chip-ota-provider-app_x64 -f <path_to_matter.ota>

    Raspberry Pi の場合:

    ./chip-ota-provider-app_arm64 -f <path_to_matter.ota>

    6. CHIP Tool を使用して OTA Provider デバイスをコミッショニングします

    Matter ファブリックの観点では、OTA Provider デバイスは Nordic DK と大きくは変わらず、Matter コミッショナーによって同様にコミッショニングされる必要があります。

    Matter Lock にはノード ID 1 が割り当てられているため、OTA Provider にはノード ID 2 が割り当てられます。

    6.1 CHIP Tool アプリケーションを実行している端末ウィンドウを使用して、コミッショニングプロセスを開始します。

    次のコマンドを実行して OTA Provider をコミッショニングし、ノード ID 2 を割り当てます:

    pairing onnetwork 2 20202021
    Terminal command

    7. OTA Provider と OTA Requestor 間の接続を設定し、ソフトウェア更新を実行します。

    すべてのコマンドは CHIP Tool の端末ウィンドウで実行してください。

    7.1 次のコマンドを実行して、Matter デバイスにデフォルトの OTA Provider を設定します。

    最後の2つの引数は、それぞれ Requestor Node ID と Requestor Endpoint ID です。

    otasoftwareupdaterequestor write default-otaproviders '[{"fabricIndex": 1, "providerNodeID": 2, "endpoint": 0}]' 1 0
    Terminal command

    7.2 ファブリック内のすべてのノードにOperate権限を付与するアクセス制御リスト(ACL)を OTA Provider に設定します。

    これは、ノードが OTA Provider に対してクラスターコマンドを送信できるようにするために必要です:

    accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 2 0
    Terminal command

    7.3 Matter Door Lock サンプルを実行している nRF DKに対して、Announce OTA Provider コマンドを送信します。

    数値の引数は順に、Provider Node ID、Provider Vendor ID、Announcement Reason、Provider Endpoint ID、Requestor Node ID、Requestor Endpoint ID です。

    otasoftwareupdaterequestor announce-otaprovider 2 0 0 0 1 0
    Terminal command

    デバイスが OTA Provider ノードを認識すると、自動的に OTA Provider に新しいファームウェアイメージを問い合わせます。ファームウェアイメージのダウンロードが完了すると、更新を適用するためにデバイスは自動的に再起動します。

    7.4 Nordic DK のログを確認し、ソフトウェアイメージが更新されたかどうかを確認します。ログには次のメッセージが含まれるはずです:

    I: 168 [SVR]Server Listening...
    I: 171 [DL]Device Configuration:
    I: 174 [DL]  Serial Number: 11223344556677889900
    I: 178 [DL]  Vendor Id: 65521 (0xFFF1)
    I: 182 [DL]  Product Id: 32774 (0x8006)
    I: 185 [DL]  Product Name: Matter Door Lock
    I: 189 [DL]  Hardware Version: 0
    I: 192 [DL]  Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
    I: 197 [DL]  Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
    I: 204 [DL]  Manufacturing Date: 2022-01-01
    I: 208 [DL]  Device Type: 65535 (0xFFFF)
    I: 211 [SVR]SetupQRCode: [MT:8IXS142C00KA0648G00]
    I: 216 [SVR]Copy/paste the below URL in a browser to see the QR Code:
    I: 222 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A8IXS142C00KA0648G00 
    I: 230 [SVR]Manual pairing code: [34970112332]
    I: ================ NEW SOFTWARE IMAGE IS WORKING!!! ===============
    E: 241 [DL]Long dispatch time: 187 ms, for event type 2
    Terminal

    ログから、Matter OTA を使用したソフトウェア更新が成功したことが確認できます。

    Switch language?

    Progress is tracked separately for each language. Switching will continue from your progress in that language or start fresh if you haven't begun.

    Your current progress is saved, and you can switch back anytime.

    Register an account
    Already have an account? Log in
    (All fields are required unless specified optional)

    • 8 or more characters
    • Upper and lower case letters
    • At least one number or special character

    Forgot your password?
    Enter the email associated with your account, and we will send you a link to reset your password.