Remo nano で Matter をはじめよう!

Nature ソフトウェアエンジニアの田井です。この記事は、第 2 回 Nature Engineering Blog 祭の 1 日目の記事になります!本日はめでたい日でした!

Matter に対応した Nature Remo nano が発売されました!

本日 2023/7/4 12:00 より、Matter に対応した Nature Remo nano が発売されました!3,980 円で Matter デバイスが手に入るなんて…!これはハックしたくてうずうずしてきますね? (以降 Nature Remo nano を Remo nano, nano と呼ぶことがあります)

nature.global

購入はこちらからもどうそ! https://www.amazon.co.jp/dp/B0C6V1CJB7

Matter ってなに?

Matter ってなに?と思う方もいらっしゃると思いますので、さらっと Matter について概要を記載しておきます。

Matter の特徴

Matter は Connectivity Standards Alliance (CSA) が策定したスマートホームの世界標準規格です。Matter に対応した異なるメーカーの製品やプラットフォーム間の相互運用が可能になり、セットアップ工程や製品同士の連携が簡単になります。「Nature Remo nano」は、世界初の赤外線リモコン対応家電を Matter 連携するブリッジデバイスとなり、Matterに対応していない家電もMatterを介して操作できるようになります。

Matter のシステムの概要

Matter を使うためには Commissionig という操作が必要になります。

  • Commissioner が Matter デバイスを Commissioning する
  • Commissioning 中に、Commissioner はその Matter デバイスが正当なものかを確認する
  • Commissioning が成功すると、Commissioner と Matter デバイスの間に Fabric ができる
  • Fabric の中であれば、Commissioner と Matter デバイスは証明書で認証された安全な通信が可能になる

そして、Matter には Node、Endpoint、Device Type、Cluster、Attribute、Command という概念があり、以下のような関係を持ちます。

Remo nano で扱う家電やスマートスピーカーをざっくりと当てはめると、このような対比になってわかりやすいかもしれません。

用語 Remo nano の場合
Commissioner 各種 スマートスピーカー
Commissioning スマートスピーカーとの Matter でのペアリング
Manual Pairing Code Matter でのペアリングに必要な Remo nano 背面の 11 桁の数字
Node Remo nano のこと
Endpoint Remo nano に登録された家電 (+α)
Device Type 家電の分類 (ex. OnOff Light, Thermostat など)
Cluster 各家電が持つ機能 (ex. OnOff, Thermostat など)
Attribute 各機能 (Cluster) が持つデータ (ex. Thermostat の温度、モードなど)
Command 各機能 (Cluster) の Attribute を良い感じに操作する指令 (ex. OnOff Cluster の値を Toggle する、など)

Remo nano は Aggregator (Bridge) と呼ばれる、Matter と赤外線通信の世界を橋渡しする Bridge デバイスとして Matter の認証を取得しました。Matter の通信で来たコマンドを、赤外線通信に翻訳する役割です。ざっくりした例はこちらの図のようになります (この図では、Matter と ZigBee の通信を橋渡ししています)。

Nature Remo nano が対応している Device Type と Cluster

Device Type

Nature Remo nano では、下記の Device Type と Cluster に対応しています。これらの家電がスマートスピーカー等から操作ができるようになります。

  • OnOff Light (照明)
  • Thermostat (エアコン)
  • OnOff Plug-in Unit (TV, 学習リモコン)

Cluster

これらの Device Type に対応するため、下記の Application Cluster に対応をしています。

  • OnOff
  • Thermostat
  • ModeSelect

詳しい内容は、@soh335 さんが詳細を解説してくれるはずなので、そちらに期待しましょう!

Nature Remo nano を Matter で操作してみよう!

とっても簡単でしたが、Matter と Nature Remo nano での Matter への対応について記載しました。それでは早速、Nature Remo nano を Matter から操作してみましょう!

まずは Remo アプリで Remo nano を登録して家電を追加しよう

まずは Nature Remo nano を Remo アプリから登録し、ご自宅の家電を追加してみてください。以下では、照明とエアコンを例として操作してみます。登録の方法がわからない方は、弊社 CS チーム渾身のスタートアップガイドをご参照ください!

Nature Remo nano スタートアップガイド

スマートスピーカーから操作する

Apple HomePod シリーズや Google Nest シリーズなど、Matter のブリッジデバイス対応のスマートスピーカーと Matter で連携すれば、音声などから簡単に Matter での操作が可能になります。連携方法がわからない場合、こちらも弊社 CS チーム渾身のスタートアップガイドの「スマートスピーカーと連携する」のセクションをご参照ください。

Nature Remo nano スタートアップガイド

しかし、これはエンジニアリングブログです。普通にスマートスピーカーから動かしてもおもしろくないですよね…?そうだ、コマンドラインから操作しよう!

Matter の chip-tool を使ってコマンドラインから Remo nano を操作する

さて、ここからが本番です。以下では chip-tool という、Matter SDK に付属するツールを使って、Remo nano のコミッショニングと操作を行っていきます。

準備

まずは以下のガイドにしたがって、CSA が提供するオープンソースの Matter SDK を clone してビルドします。かなり時間がかかりますので、ゆっくりコーヒーでも飲みつつ、気長にお待ち下さい。

github.com

これで chip-tool が使えるようになったはずです。次に進む前に、Remo nano を chip-tool からコミッショニングするための証明書一式をダウンロードします。こちらも Matter SDK 付属のツールを使ってダウンロードしてしまいましょう。

$ cd path/to/your/connectedhomeip
$ python credentials/fetch-paa-certs-from-dcl.py --use-main-net-http

すると connectedhomeip/paa-root-certs ディレクトリに証明書の一式がダウンロードされます。これを使ってコミッショニングを行っていきます。(以降は connectedhomeip 直下のディレクトリにいることを前提としたパス表記となります)

コミッショニング時の認証についての詳細は、きっと弊社ファームウェアエンジニアの井田さんが詳細を書いてくれるはずなので、期待していてください!

Matter 仕様書のダウンロード

また、以降では Matter の仕様書を見ながら操作を行うと、より理解を深めることができます。仕様書もダウンロードしておきましょう。メールアドレスを登録すれば、仕様書をダウンロードすることが可能です。nano は Matter v1.0 に対応しています。

csa-iot.org

コミッショニングしてみる

さあ、いよいよコミッショニングをしていきます!その前に、Remo nano をコミッショニング可能な状態にする必要があります。Remo アプリの設定→Home→Remo nano を選択し、「Matter 連携をする」を押して下さい。Remo nano が黄色く点滅し、コミッショニングが可能な状態となります。

https://support.nature.global/hc/article_attachments/20219429291673

詳細は、弊社 CS チーム渾身の Matter 連携ページに記載がありますので、ご参照ください!

Nature Remo nanoに登録した家電をホームアプリに追加する(Matter連携する)

コミッショニングに必要なデバイスの固有情報は下記になります。これらの数値は、お使いの環境に合わせて設定を行ってください。 MANUAL_PAIRING_CODE は、Remo nano の背面に記載してあるペアリングコードです。

# chip-tool にこのデバイスをこの Node ID としてコミッショニングさせる
export MATTER_NODE_ID=1
# Remo nano 背面にある 11 桁のペアリングコード
export MATTER_MANUAL_PAIRING_CODE=XXXXXXXXXXX

これで準備完了です。いよいよコミッショニングをしてみます!下記のコマンドを実行すると、コミッショニングが開始されます。PC と nano を同じ 2.4 GHz のネットワークにつなぎ、 --paa-trust-store-path オプションに先ほどダウンロードした paa-root-certs のパスを指定することを注意してください。

chip-tool pairing code $MATTER_NODE_ID $MATTER_MANUAL_PARING_CODE --paa-trust-store-path paa-root-certs

ずらずらと非常に多くのログが出てきますが、最後の方にこちらのような表示が出ていればコミッショニング成功です。おめでとうございます!

[1688447556.867807][339210:339212] CHIP:TOO: Device commissioning completed with success

💡 TIPS : chip-tool では、途中までコマンドを入れて Enter することで、実行可能なコマンドの候補が表示されます。ぜひこれを駆使して、様々なコマンドを試してみて下さい!

$ chip-tool descriptor read [Enter]
[1688454999.575030][383946:383946] CHIP:TOO: Missing attribute name
Usage:
  chip-tool descriptor read attribute-name [param1 param2 ...]

  +-------------------------------------------------------------------------------------+
  | Attributes:                                                                         |
  +-------------------------------------------------------------------------------------+
  | * device-type-list                                                                  |
  | * server-list                                                                       |
  | * client-list                                                                       |
  | * parts-list                                                                        |
  | * generated-command-list                                                            |
  | * accepted-command-list                                                             |
  | * attribute-list                                                                    |
  | * feature-map                                                                       |
  | * cluster-revision                                                                  |
  +-------------------------------------------------------------------------------------+
[1688454999.575122][383946:383946] CHIP:TOO: Run command failure: ../../examples/chip-tool/commands/common/Commands.cpp:129: Error 0x0000002F

Remo nano が持っている Endpoint と Cluster を確認してみよう

さっそく chip-tool で nano を操作していきたいところですが、まずは nano がどんな Endpoint と Cluster を持っているか、確認してみましょう!

こちらのコマンドで、nano が持っている Endpoint の一覧を取得できます。ここで 0 という数字は Endpoint です。Endpoint 0 は特殊な Endpoint で、すべての Matter デバイスが固定で持つ Root Node という Endpoint となります。

chip-tool descriptor read parts-list $MATTER_NODE_ID 0

ここでも大量のログが出てきますが、このような表示が最後の方に確認できるのではないかと思います。筆者の nano には、Root Node (Endpoint 0) の他に 1, 2, 3 の Endpoint が存在しているようです (筆者の環境では、照明とエアコンの 2 つの家電を登録しています)。

[1688376334.227893][269057:269059] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3597455399
[1688376334.227930][269057:269059] CHIP:TOO:   PartsList: 3 entries
[1688376334.227941][269057:269059] CHIP:TOO:     [1]: 1
[1688376334.227948][269057:269059] CHIP:TOO:     [2]: 2
[1688376334.227955][269057:269059] CHIP:TOO:     [3]: 3

もう少し Endpoint 0 の情報を確認してみましょう。下記のコマンドで、Endpoint の Device Type を読み出すことができます。

chip-tool descriptor read device-type-list $MATTER_NODE_ID 0
[1688448272.213626][347251:347253] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1320862261
[1688448272.213738][347251:347253] CHIP:TOO:   DeviceTypeList: 1 entries
[1688448272.213761][347251:347253] CHIP:TOO:     [1]: {
[1688448272.213771][347251:347253] CHIP:TOO:       Type: 22
[1688448272.213781][347251:347253] CHIP:TOO:       Revision: 1
[1688448272.213789][347251:347253] CHIP:TOO:      }

Device Type が 22 (0x0016) なので、これは前述のとおり Root Node という Device Type になります。Device Type については、Matter の Application Cluster Specification を見ると仕様を確認できます。

それでは次に、Endpoint 1 の情報を見てみましょう。Device Type を確認してみます。

chip-tool descriptor read device-type-list $MATTER_NODE_ID 1
[1688448418.015778][348591:348593] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1588080029
[1688448418.015802][348591:348593] CHIP:TOO:   DeviceTypeList: 1 entries
[1688448418.015825][348591:348593] CHIP:TOO:     [1]: {
[1688448418.015841][348591:348593] CHIP:TOO:       Type: 14
[1688448418.015849][348591:348593] CHIP:TOO:       Revision: 1
[1688448418.015856][348591:348593] CHIP:TOO:      }

Device Type が 14 (0x000E) なので、Aggregator という Device Type になります。これは、Remo nano のように Matter と別の世界のブリッジとなるすべてのデバイスが持つ Endpoint の Device Type となります。Matter の世界とブリッジされた Endpoint は、この Endpoint 1 の下にぶら下がる形となります。parts-list を読んで、Aggregator の Endpoint にぶら下がる Endpoint を確認してみましょう。

chip-tool descriptor read parts-list $MATTER_NODE_ID 1
[1688448973.305554][353066:353068] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1588080029
[1688448973.305582][353066:353068] CHIP:TOO:   PartsList: 2 entries
[1688448973.305600][353066:353068] CHIP:TOO:     [1]: 2
[1688448973.305608][353066:353068] CHIP:TOO:     [2]: 3

Endpoint 2, 3 が Aggregator に紐付いた Endpoint となっているようです。これを Bridged Device と呼んだりします。Remo nano で言えば、Matter とブリッジされた赤外線操作できる家電です。ということは、Endpoint 2, 3 が照明とエアコンになっているはずです!さっそく確認してみましょう。Endpoint 2, 3 の Device Type を確認してみます。

chip-tool descriptor read device-type-list $MATTER_NODE_ID 2
[1688448437.060906][348913:348915] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3630407247
[1688448437.060938][348913:348915] CHIP:TOO:   DeviceTypeList: 2 entries
[1688448437.060951][348913:348915] CHIP:TOO:     [1]: {
[1688448437.060958][348913:348915] CHIP:TOO:       Type: 19
[1688448437.060965][348913:348915] CHIP:TOO:       Revision: 1
[1688448437.060972][348913:348915] CHIP:TOO:      }
[1688448437.060981][348913:348915] CHIP:TOO:     [2]: {
[1688448437.060986][348913:348915] CHIP:TOO:       Type: 256
[1688448437.060992][348913:348915] CHIP:TOO:       Revision: 2
[1688448437.060997][348913:348915] CHIP:TOO:      }

Endpoint 2 には、2 つの Device Type があるようです。19 (0x0013) は Bridged Node、256 (0x0100) は On/Off Light という Device Type です。ということは、Endpoint 2 がブリッジされた照明ということになります!だんだんわかってきましたね。

Bridged Node の情報を下記のように読み出せば、家電につけた名前なども確認できます。

chip-tool bridgeddevicebasic read node-label $MATTER_NODE_ID 2
[1688450838.878473][362696:362698] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3583438104
[1688450838.878488][362696:362698] CHIP:TOO:   NodeLabel: 照明

Endpoint 3 の Device Type も読んでみます。

chip-tool descriptor read device-type-list $MATTER_NODE_ID 3
[1688448453.392226][349236:349238] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 871674026
[1688448453.392257][349236:349238] CHIP:TOO:   DeviceTypeList: 2 entries
[1688448453.392283][349236:349238] CHIP:TOO:     [1]: {
[1688448453.392302][349236:349238] CHIP:TOO:       Type: 19
[1688448453.392311][349236:349238] CHIP:TOO:       Revision: 1
[1688448453.392321][349236:349238] CHIP:TOO:      }
[1688448453.392337][349236:349238] CHIP:TOO:     [2]: {
[1688448453.392345][349236:349238] CHIP:TOO:       Type: 769
[1688448453.392355][349236:349238] CHIP:TOO:       Revision: 2
[1688448453.392364][349236:349238] CHIP:TOO:      }

Endpoint 3 と同様に、2 つの Device Type があります。19 (0x0013) は Bridged Node、769 (0x0301) は Thermostat です。Endpoint 3 がブリッジされたエアコンのようです!

chip-tool bridgeddevicebasic read node-label $MATTER_NODE_ID 3
[1688450985.293068][363845:363847] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 1109152942
[1688450985.293088][363845:363847] CHIP:TOO:   NodeLabel: エアコン

さて、0, 1, 2, 3 と 4 つあった Endpoint の正体がつかめてきました。Endpoint の正体がわかってきたので、ようやく chip-tool から Matter の操作ができそうです。

照明を操作してみよう!

それぞれの Endpoint が持つ機能は、Cluster によって定義されています。次は Bridged Node が持つ Cluster を見てきましょう。Cluster の情報の詳細は、Matter の仕様書 Core Specification もしくは Application Cluster Specification で確認できます。

nano に設定される Cluster は現状 Server のみです。よって、下記のコマンドで提供している機能 (Cluster) のリストを取得することができます。まずは Endpoint 2 (OnOff Light) の Cluster 一覧を取得してみましょう

chip-tool descriptor read server-list $MATTER_NODE_ID 2
[1688448899.535698][351800:351802] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 3630407247
[1688448899.535728][351800:351802] CHIP:TOO:   ServerList: 6 entries
[1688448899.535743][351800:351802] CHIP:TOO:     [1]: 29
[1688448899.535754][351800:351802] CHIP:TOO:     [2]: 57
[1688448899.535765][351800:351802] CHIP:TOO:     [3]: 3
[1688448899.535777][351800:351802] CHIP:TOO:     [4]: 4
[1688448899.535788][351800:351802] CHIP:TOO:     [5]: 6
[1688448899.535799][351800:351802] CHIP:TOO:     [6]: 80

これで、Endpoint 2 の正体が下記のように判明しました!

  • 29 (0x001D) : Descriptor
  • 57 (0x0039) : Bridged Device Basic Information
  • 3 (0x0003) : Identify
  • 4 (0x0004) : Groups
  • 6 (0x0006) : On/Off
  • 80 (0x0050) : Mode Select

今回は、照明を操作したいので、On/Off Cluster を操作すれば良さそうです。On/Off Cluster の詳細は、Application Cluster Specification に記載があります。

まずは、いまの状態を確認してみましょう。Remo アプリでは、ON になっているようです。

Matter ではどうでしょう? on-off Attribute を確認すれば、ON か OFF かがわかりそうです。

chip-tool onoff read on-off $MATTER_NODE_ID 2
[1688451811.476537][369491:369493] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 23203029
[1688451811.476588][369491:369493] CHIP:TOO:   OnOff: TRUE

Matter で通信しても、いまは照明が ON になっているようですね。では、chip-tool から toggle コマンドを送ってみましょう。

chip-tool onoff toggle $MATTER_NODE_ID 2
[1688451885.344217][369873:369875] CHIP:DMG: InvokeResponseMessage =
[1688451885.344223][369873:369875] CHIP:DMG: {
[1688451885.344230][369873:369875] CHIP:DMG:    suppressResponse = false,
[1688451885.344236][369873:369875] CHIP:DMG:    InvokeResponseIBs =
[1688451885.344247][369873:369875] CHIP:DMG:    [
[1688451885.344253][369873:369875] CHIP:DMG:        InvokeResponseIB =
[1688451885.344263][369873:369875] CHIP:DMG:        {
[1688451885.344270][369873:369875] CHIP:DMG:            CommandStatusIB =
[1688451885.344277][369873:369875] CHIP:DMG:            {
[1688451885.344283][369873:369875] CHIP:DMG:                CommandPathIB =
[1688451885.344291][369873:369875] CHIP:DMG:                {
[1688451885.344299][369873:369875] CHIP:DMG:                    EndpointId = 0x2,
[1688451885.344308][369873:369875] CHIP:DMG:                    ClusterId = 0x6,
[1688451885.344315][369873:369875] CHIP:DMG:                    CommandId = 0x2,
[1688451885.344322][369873:369875] CHIP:DMG:                },
[1688451885.344332][369873:369875] CHIP:DMG:                
[1688451885.344339][369873:369875] CHIP:DMG:                StatusIB =
[1688451885.344347][369873:369875] CHIP:DMG:                {
[1688451885.344354][369873:369875] CHIP:DMG:                    status = 0x00 (SUCCESS),
[1688451885.344366][369873:369875] CHIP:DMG:                },
[1688451885.344375][369873:369875] CHIP:DMG:                
[1688451885.344382][369873:369875] CHIP:DMG:            },
[1688451885.344392][369873:369875] CHIP:DMG:            
[1688451885.344398][369873:369875] CHIP:DMG:        },
[1688451885.344409][369873:369875] CHIP:DMG:        
[1688451885.344415][369873:369875] CHIP:DMG:    ],
[1688451885.344424][369873:369875] CHIP:DMG:    
[1688451885.344430][369873:369875] CHIP:DMG:    InteractionModelRevision = 1
[1688451885.344437][369873:369875] CHIP:DMG: },
[1688451885.344465][369873:369875] CHIP:DMG: Received Command Response Status for Endpoint=2 Cluster=0x0000_0006 Command=0x0000_0002 Status=0x0

どうやら操作できたようです!お手元の照明は、きちんと toggle されましたか?もう一度 on-off Attribute の値を読んでみましょう。

chip-tool onoff read on-off $MATTER_NODE_ID 2
[1688451980.436876][370729:370733] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 23203030
[1688451980.436893][370729:370733] CHIP:TOO:   OnOff: FALSE

無事に toggle できたようです!Remo アプリを確認してみると…

ちゃんとアプリにも Matter からの操作結果が反映されているようです!おめでとうございます! (反映されていない場合、アプリをバックグラウンドへ戻し、もう一度表示してみてください)

エアコンを操作してみよう!

同じ要領で、エアコンも操作してみましょう!まずは、照明の場合と同様に、Endpoint 3 の Thermostat Device がどのような Cluster で構成されているのかを見ていきましょう。

chip-tool descriptor read server-list $MATTER_NODE_ID 3
[1688376260.295089][268653:268655] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 2201737376
[1688376260.295121][268653:268655] CHIP:TOO:   ServerList: 5 entries
[1688376260.295131][268653:268655] CHIP:TOO:     [1]: 29
[1688376260.295139][268653:268655] CHIP:TOO:     [2]: 57
[1688376260.295145][268653:268655] CHIP:TOO:     [3]: 3
[1688376260.295152][268653:268655] CHIP:TOO:     [4]: 4
[1688376260.295158][268653:268655] CHIP:TOO:     [5]: 513
  • 29 (0x001D) : Descriptor
  • 57 (0x0039) : Bridged Device Basic Information
  • 3 (0x0003) : Identify
  • 4 (0x0004) : Groups
  • 513 (0x0201) : Thermostat

上の 4 つは Endpoint 2 の照明と一緒ですね。一方、0x0201 の Thermostat Cluster があります。これを操作すればエアコンの制御もできそうです!Thermostat Cluster の詳細も、Application Cluster Specification に記載があります。

さっそくですが、冷房の 28℃ にエアコンを設定してみましょう!まずは system-mode で運転モードを設定します。仕様書を見ると下記のように日本の一般的なエアコンの運転モードが設定できそうです。

  • 0 : オフ
  • 3 : 冷房
  • 4 : 暖房
  • 7 : 送風
  • 8 : 除湿

chip-tool から system-mode3 に変えてみます。

chip-tool thermostat write system-mode 3 $MATTER_NODE_ID 3
[1688454190.068737][377070:377072] CHIP:DMG: WriteResponseMessage =
[1688454190.068744][377070:377072] CHIP:DMG: {
[1688454190.068748][377070:377072] CHIP:DMG:    AttributeStatusIBs =
[1688454190.068759][377070:377072] CHIP:DMG:    [
[1688454190.068769][377070:377072] CHIP:DMG:        AttributeStatusIB =
[1688454190.068780][377070:377072] CHIP:DMG:        {
[1688454190.068789][377070:377072] CHIP:DMG:            AttributePathIB =
[1688454190.068800][377070:377072] CHIP:DMG:            {
[1688454190.068811][377070:377072] CHIP:DMG:                Endpoint = 0x3,
[1688454190.068818][377070:377072] CHIP:DMG:                Cluster = 0x201,
[1688454190.068827][377070:377072] CHIP:DMG:                Attribute = 0x0000_001C,
[1688454190.068832][377070:377072] CHIP:DMG:            }
[1688454190.068844][377070:377072] CHIP:DMG:                
[1688454190.068850][377070:377072] CHIP:DMG:            StatusIB =
[1688454190.068857][377070:377072] CHIP:DMG:            {
[1688454190.068870][377070:377072] CHIP:DMG:                status = 0x00 (SUCCESS),
[1688454190.068879][377070:377072] CHIP:DMG:            },
[1688454190.068887][377070:377072] CHIP:DMG:            
[1688454190.068894][377070:377072] CHIP:DMG:        },
[1688454190.068904][377070:377072] CHIP:DMG:        
[1688454190.068909][377070:377072] CHIP:DMG:    ],
[1688454190.068920][377070:377072] CHIP:DMG:    
[1688454190.068927][377070:377072] CHIP:DMG:    InteractionModelRevision = 1
[1688454190.068934][377070:377072] CHIP:DMG: }

冷房の設定温度を変えるには occupied-cooling-setpoint を設定すれば良さそうです。温度は ℃ で設定なのですが、100 倍した値を設定しなければいけないことに注意です。(28 ℃ == 2800)

chip-tool thermostat write occupied-cooling-setpoint 2800 $MATTER_NODE_ID 3
[1688454524.414700][380550:380552] CHIP:DMG: WriteResponseMessage =
[1688454524.414709][380550:380552] CHIP:DMG: {
[1688454524.414717][380550:380552] CHIP:DMG:    AttributeStatusIBs =
[1688454524.414735][380550:380552] CHIP:DMG:    [
[1688454524.414743][380550:380552] CHIP:DMG:        AttributeStatusIB =
[1688454524.414756][380550:380552] CHIP:DMG:        {
[1688454524.414765][380550:380552] CHIP:DMG:            AttributePathIB =
[1688454524.414777][380550:380552] CHIP:DMG:            {
[1688454524.414787][380550:380552] CHIP:DMG:                Endpoint = 0x3,
[1688454524.414799][380550:380552] CHIP:DMG:                Cluster = 0x201,
[1688454524.414811][380550:380552] CHIP:DMG:                Attribute = 0x0000_0011,
[1688454524.414821][380550:380552] CHIP:DMG:            }
[1688454524.414837][380550:380552] CHIP:DMG:                
[1688454524.414846][380550:380552] CHIP:DMG:            StatusIB =
[1688454524.414859][380550:380552] CHIP:DMG:            {
[1688454524.414870][380550:380552] CHIP:DMG:                status = 0x00 (SUCCESS),
[1688454524.414880][380550:380552] CHIP:DMG:            },
[1688454524.414892][380550:380552] CHIP:DMG:            
[1688454524.414901][380550:380552] CHIP:DMG:        },
[1688454524.414914][380550:380552] CHIP:DMG:        
[1688454524.414922][380550:380552] CHIP:DMG:    ],
[1688454524.414937][380550:380552] CHIP:DMG:    
[1688454524.414946][380550:380552] CHIP:DMG:    InteractionModelRevision = 1
[1688454524.414954][380550:380552] CHIP:DMG: }

お手元でもエアコンを操作できましたか?ついでに Remo アプリを確認してみると…

ちゃんと Matter での操作も反映されています!最後に、Remo アプリからエアコンを暖房の 18 ℃ に設定してみます。

この状態で、Mattter から system-modeoccupied-heating-setpoint を読んでみましょう。

chip-tool thermostat read system-mode $MATTER_NODE_ID 3
[1688454776.908071][382617:382619] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0201 Attribute 0x0000_001C DataVersion: 761227394
[1688454776.908098][382617:382619] CHIP:TOO:   SystemMode: 4
chip-tool thermostat read occupied-heating-setpoint $MATTER_NODE_ID 3
[1688454825.884380][383005:383007] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0201 Attribute 0x0000_0012 DataVersion: 761227394
[1688454825.884412][383005:383007] CHIP:TOO:   OccupiedHeatingSetpoint: 1800

無事に Remo アプリでの操作が Matter 側でも反映されていることが確認できました。おめでとうございます!!

まとめ

Matter に対応した Nature Remo nano が発売された記念として、Remo nano を chip-tool を使ってコマンドラインから操作してみました。これはいろいろといじりがいがあって、楽しい時間が過ごせそうですね?

明日 2 日目は、アプリ開発の亀田さんです!ご期待ください!

Nature エンジニアコミュニティ

Matter や、Nature Remo シリーズのお話をみなさまと楽しむために、開発者コミュニティもはじめました!Nature Remo Could API の疑問から雑談まで、Nature のエンジニアとお話ししましょう!Discord への参加はこちらから。開発者コミュニティへのご参加もお待ちしております!

discord.com

Nature Remo nano 好評発売中!

Matter 対応の Nature Remo nano が定価3,980円で発売中!

https://www.amazon.co.jp/dp/B0C6V1CJB7

更新履歴

  • 2023/07/05 : 一部コマンドの不備と文言の修正