aliehubにおけるAWS IoT Coreの活用について

はじめに

はじめまして、株式会社アクセルラボでプラットフォーム開発グループに所属している西です。 今回は、aliehubにおけるAWS IoT Coreの活用、特に名前付きシャドウ機能を用いた効率的なデバイス状態管理についてご紹介します。

aliehubとは

アクセルラボが独自開発した、Matter対応のIoTゲートウェイです。宅内にある様々な通信規格(Wi-Fi, Matterなど)のIoTデバイスをaliehubクラウドに接続する役割を担います。 Matter認証を取得しており、対応デバイスの拡充と相互接続性の向上に貢献します。

AWS IoT Coreとは

AWS IoT Coreは、Amazon Web Services(AWS)が提供するマネージド型のクラウドサービスです。IoTデバイスをAWSクラウドに簡単かつ安全に接続し、大量のデバイスからのメッセージを処理、ルーティングするためのバックボーンを提供します。

主な機能としては、以下のようなものがあります。

  • セキュアな接続: 個別のデバイス証明書やAWSの認証メカニズムを利用し、デバイスとクラウド間の安全な通信を確立します。
  • メッセージブローカー: MQTT、HTTPS、WebSocketなどのプロトコルをサポートし、デバイスとクラウドアプリケーション間の効率的で低遅延な双方向通信を実現します。
  • ルールエンジン: 受信したメッセージを評価し、定義されたルールに基づいてデータの変換、処理、他のAWSサービス(Lambda, S3, DynamoDBなど)へのルーティングを行います。
  • デバイスシャドウ: デバイスの最新の状態情報(「報告された状態」)と、アプリケーションが希望する状態(「希望する状態」)をJSONドキュメントとしてクラウドに保存・同期する機能です。これにより、デバイスがオフラインの場合でも状態を取得・設定できます。

aliehubでのAWS IoT Coreの活用

aliehubは、ゲートウェイとしてそれ自身の状態を持つだけでなく、Wi-FiやMatterなどで接続された複数のサブデバイス(スマートロック、センサー、照明など)を管理する必要があります。 これらのデバイスの状態を効率的かつ個別に管理するために、AWS IoT Coreの名前付きシャドウ(Named Shadow) 機能を利用しています。

デバイスシャドウは通常、1つのAWS IoT Coreの「モノ(Thing)」に対して1つのシャドウドキュメントが関連付けられます。 しかし、aliehubのようなゲートウェイの場合、ゲートウェイ自身の状態と、配下にある複数のサブデバイスの状態を、同じ「モノ」のコンテキストで管理したいという要求があります。

ここで名前付きシャドウが役立ちます。名前付きシャドウは、1つの「モノ」に対して、デフォルトの(名前のない)シャドウに加えて、任意の名前を付けた複数のシャドウを持つことを可能にする機能です。

aliehubでは、以下のように名前付きシャドウを活用しています。

  1. ゲートウェイ自身の状態管理: aliehubデバイス(Thing)に対して、例えば gatewayInfo といった名前のシャドウを作成し、ゲートウェイのファームウェアバージョン、ネットワーク接続状態、動作モードなどの情報を格納します。
  2. サブデバイスの状態管理: aliehubに接続されている各サブデバイス(スマートロックA、センサーBなど)に対して、それぞれ subdevice_lock_A, subdevice_sensor_B のような一意の名前を持つシャドウを作成します。 各シャドウには、対応するサブデバイスの電源状態、センサー値、設定値などが格納されます。

これにより、1つのaliehub(Thing)に関連付けられた形で、ゲートウェイ本体と複数のサブデバイスの状態を、それぞれ独立したシャドウドキュメントとして明確に分離し、管理・操作することが可能になります。

以下の図は、aliehubという一つのThingに対して、ゲートウェイ情報と複数のサブデバイス情報という名前付きシャドウが関連付けられている様子を示しています。

%%{init:{'theme':'neutral','themeCSS':".nodeLabel {font-size: 16px !important;} .edgeLabel {font-size: 20px !important} "}}%%
flowchart TB

  subgraph AWS IoT Core
    thing[Thing<br>aliehub]
    named-shadow-iotgateway(NamedShadow<br>ゲートウェイ情報)
    named-shadow-subdevice(NamedShadow<br>サブデバイス情報)
  end

  classDef SThing fill:#84d,color:#fff,stroke:none
  class thing SThing

  classDef SShadow fill:#e83,color:#fff,stroke:none
  class named-shadow-iotgateway,named-shadow-subdevice SShadow

  thing -- "1-1" --o named-shadow-iotgateway
  thing -- "1-*" --o named-shadow-subdevice

おわりに

本記事では、Matter対応IoTゲートウェイであるaliehubにおいて、AWS IoT Core、特に名前付きシャドウを活用して複数のデバイス状態を効率的に管理する方法についてご紹介しました。

名前付きシャドウ機能により、ゲートウェイ本体とそれに接続される多数のサブデバイスの状態を、AWS IoT Coreの単一の「モノ」リソース内で明確に分離し、管理することが可能になりました。

これにより、開発・運用の効率化とスケーラビリティの向上を実現しています。

アクセルラボでは、今後もAWSの様々なサービスを活用し、より便利で快適なスマートホーム体験の実現を目指して開発を進めてまいります。

最後までお読みいただき、ありがとうございました。

📩 お問い合わせ・採用情報

本ブログを読んでいただきありがとうございます。 もし内容にご興味を持っていただけましたら、以下よりお気軽にお問い合わせ・ご応募ください。

スマートホームの導入をご検討中の企業様へ:

👉お問い合わせ - SpaceCore(スペースコア)

技術にご興味を持たれたエンジニアへ:

アクセルラボではエンジニア採用を強化しています。 私たちの技術やビジョンに共感し、スマートホームの未来を共に創っていきたい方のご応募をお待ちしています。

👉 Accel lab 採用サイト - アクセルラボのリクルートサイト