Matter の Cluster についての紹介

ソフトウェアエンジニアの北原です。 これは第2回 Nature Engineering Blog 祭6日目のエントリです。 5日目はファームウェアエンジニアの中林さんのMatter でオレオレ Remo nano Dash ボタンを作ろう!でした。

引き続き Nature Remo nano 発売記念として Matter についてです。 ちなみに本日7月11日から明日12日まで Amazon プライムデーが開催されており、Nature Remo nano 含め、Nature の様々な商品がセール中です。是非チェックしてください。

www.amazon.co.jp

また7月19日には Matter についてのオンラインイベント Nature Matter Kaigi も開催されます。是非ご参加ください。

nature.connpass.com


さて、今回は Matter における Cluster について説明します。

CSAが公開している Core Specification にはこう定義されています。*1

Cluster: A specification defining one or more attributes, commands, behaviors and dependencies, that supports an independent utility or application function. The term may also be used for an implementation or instance of such a specification on an endpoint.

Matter 1.0 Core Specification 1.3. Definitions から引用

アトリビュートやコマンド、挙動や依存を定義するものでしょうか。

https://developers.home.google.com/static/matter/primer/images/primer-device-type.png

https://developers.home.google.com/matter/primer/device-data-model から引用

Google Home Developers のページにも Cluster についての説明がありました。こうみるともう少しイメージがしやすいでしょうか。 あるデバイス(おそらく照明)に、OnOff cluster, LevelControl cluster, Basic Information cluster, ... が実装されていると理解できます。

照明をつける消すことができる OnOff cluster, 明るさを調整する LevelControl cluster, またプロダクトの情報が保存されている Basic Information cluster など実際に目で見えるインターフェイス以外もクラスターとして定義され内部では実装されています。

Nature Remo nano ではどうでしょうか?

nature.global

Matter version1.0に対応、赤外線ブリッジ機能(エアコン、照明、その他ON / OFF可能な家電)

この表記がクラスターと関係があり、実際 Nature Remo nano には家電のインターフェイスとしては Thermostat cluster, OnOff cluster 等が実装されています。 今回は OnOff cluster についてさらに話を進めます。

Matter では照明機能のようなものは定義されておらず、上で述べた通り複数、または一つのクラスターを組み合わせることで照明としてのインターフェイスを定義します。

  • シンプルなオンオフができる照明だったら、 OnOff cluster
  • 明るさが調節できる照明だったら、OnOff cluster と Level Control cluster
  • 明るさ・色が調節できる照明だったら、OnOff cluster, Level Control cluster, Color Control cluster

のように組み合わせ、照明の機能を提供しています。

では、OnOff cluster にはどのような機能があるのでしょうか。Core Specification を読み進めると

Matter 1.0 Application Cluster Specification 1.5. On/Off から引用

話をシンプルにするために幾つかの Attribute, Command については省いていますが、このように定義されています。

  • アトリビュートとして、OnOff という名前のものが定義されており、bool 型でデフォルト値は false
  • Off, On, Toggle というコマンドを送ることができる

と理解することができます。

この OnOff cluster の仕様に基づき Matter 経由での操作に対応したUIは構築されます。 今回は Apple Home での紹介になります。 下記のように、オフオフの状態は、OnOff アトリビュートから反映し、操作をした場合、On コマンド、Off コマンドを実行するという作りになっています。


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

エンジニアコミュニティはじめました。Matter を使った Nature Remo nano の活用方法から Nature Remo could API の疑問など、Nature のエンジニアがお答えします! Discord への参加はこちらから。

discord.gg