Bluetooth Mesh 仕様 – Foundation models(その5)

仕様

はじめに

Bluetooth Meshの仕様について、Bluetooth SIGで公開されている「Mesh Profile Specification 1.0.1」に基づき、学習を兼ねて記載して行こうと思っています。本文章では、4章の「ファンデーションモデル」の次の節について記載いたします。

  • 4.4.3 ヘルスサーバモデル
  • 4.4.4 ヘルスクライアントモデル
  • 4.4.5 SIGモデルIDの要約

記載内容に誤り等がありましたら、ご連絡いただければ幸いです。

4.4.3 ヘルスサーバモデル

ヘルスサーバは、ルートモデルです(つまり、他のモデルを拡張しません)。

このモデルは、モデルの公開(セクション4.2.2を参照)およびモデルのサブスクリプション(セクションを参照)をサポートするものとします。 4.2.3)。

このモデルは、デバイスのメッシュネットワーク診断を表すために使用されます。

モデルはプライマリエレメントによってサポートされるものとし、任意のセカンダリエレメントによってサポートされる場合があります。 モデルのアプリケーションレイヤーセキュリティは、アプリケーションキーを使用しています。

モデルは、以下の表4.124に示すように、次の状態インスタンスを定義します。

ヘルスサーバの状態 バインディングの状態
状態 インスタンス モデル 状態 インスタンス
Current Fault Primary
Registered Fault Primary
Health Period Primary
Attention Timer Primary
表4.109:ヘルスサーバの状態とバインディング

このモデルの対象となるエレメント、状態、およびメッセージの構造は、以下の表4.125で定義されています。

エレメントSIG
モデルID
状態メッセージRxTx
Primary 0x0002 Current Fault
(セクション4.2.15.1参照)
Health Current Status   M
Registered Fault
(セクション4.2.15.2参照)
Health Fault Get M  
Health Fault Clear M  
Health Fault Clear
Unacknowledged
M  
Health Fault Status   M
Health Fault Test M  
Health Fault Test
Unacknowledged
M  
Health Period
(セクション4.2.16参照)
Health Period Get M  
Health Period Set M  
Health Period Set
Unacknowledged
M  
Health Period Status   M
Attention Timer
(セクション4.2.9参照)
Health Attention Get M  
Health Attention Set M  
Health Attention Set
Unacknowledged
M  
Health Attention Status   M
表4.125:ヘルスサーバのエレメント、状態、メッセージ
4.4.3.2 Behavior

このセクションでは、このサーバモデルの状態とメッセージの動作について説明します。

4.4.3.2.1 Current Fault state

公開期間の状態の値がゼロ以外で、会社IDの現在の障害配列(セクション4.2.15.1を参照)にレコードが含まれていない場合、会社IDフィールドが次のいずれかに設定された未承諾のヘルス現在のステータスメッセージ Health Fault状態と空のFaultArrayフィールドでサポートされている会社IDは、発行期間状態の値で定義されている秒数ごとに発行されます。この場合、Company IDをComposition Data状態のCIDフィールドの値に設定することをお勧めします(セクション4.2.1を参照)。

公開期間状態の値がゼロ以外であり、少なくとも1つの会社IDの現在の障害障害配列(セクション4.2.15.1を参照)にレコードが含まれている場合、その会社IDの値に設定された一方的なHealth Current Statusメッセージと、公開期間の値をHealthFast PeriodDivisor状態で表される値で割った値で定義されたCurrent Fault Fault Array(セクション4.2.15.1を参照)の一連の障害を表す一連の障害を含むFaultArrayフィールドは、秒ごとに発行されるものとします。

4.4.3.2.2 Registered Fault state

エレメントが、ヘルスフォールト状態を正常に識別する会社IDフィールドを含むHealth Fault Getメッセージを受信すると、会社IDフィールドが着信メッセージで設定された値に設定され、識別された状態に対して最後に実行されたテストのIDに設定されたTestIDフィールド、およびRegistered Fault FaultArray内の一連の障害を表す一連の障害を含むFaultArrayフィールド(セクション4.2.15.2を参照)に設定されたHealth Fault Statusメッセージで応答するものとします。

要素が、ヘルスフォールト状態を正常に識別した会社IDフィールドを含むヘルスフォールトテストメッセージを受信すると、テストIDおよび会社IDフィールドで示されるテストを実行し、会社IDフィールドが着信メッセージで設定された値に設定され、実行されたテストのIDに設定されたTestIDフィールド、およびRegistered Fault FaultArray内の一連の障害を表す一連の障害を含むFaultArrayフィールド(セクション4.2.15.2を参照)が設定されたHealth Fault Statusメッセージで応答します。

エレメントは、ヘルスフォールト状態を正常に識別した会社IDフィールドを含むHealth Fault Test Unacknowledgedメッセージを受信すると、テストIDフィールドと会社IDフィールドで示されるテストを実行する必要があります。

エレメントが、ヘルスフォールト状態を正常に識別する会社IDフィールドを含むHealth Fault Clearメッセージを受信すると、識別された登録済み障害状態をクリアし、受信メッセージで設定された値に設定された会社IDフィールドと空のFaultArrayフィールドを含むHealth Fault Statusメッセージで応答するものとします。

エレメントは、ヘルスフォールト状態を正常に識別する会社IDフィールドを含むHealth Fault Clear Unacknowledgedメッセージを受信すると、識別された登録済みフォールト状態をクリアする必要があります。

エレメントがHealthFault Get、Health Fault Test、またはHealth Fault Test Unacknowledged、Health Fault Clear、または正常に処理されていないHealth Fault ClearUnacknowledgedメッセージを受信した場合(つまり、ノードに存在するヘルスフォールト状態を識別しない会社IDフィールド)、メッセージを無視します。

4.4.3.2.3 Health Period states

エレメントがHealth Period Getメッセージを受信すると、FastPeriodDivisorフィールドが現在のHealth Fast Period Divisor状態に設定されたHealth Period Statusメッセージで応答する必要があります。

エレメントがHealth Period Setメッセージを受信すると、 Health Fast Period Divisorの状態をFastPeriodDivisorフィールドの値に設定し、FastPeriodDivisorフィールドを現在のHealth Fast PeriodDivisorの状態に設定したHealth Period Statusメッセージで応答します。

エレメントがHealth Period Set Unacknowledgedメッセージを受信すると、Health Fast Period Divisorの状態をFastPeriodDivisorフィールドの値に設定する必要があります。

4.4.3.2.4 Attention Timer state

エレメントがHealth Attention Getメッセージを受信すると、そのエレメントは、Attentionフィールドが現在のAttentionTimer状態に設定されたHealth Attention Statusメッセージで応答する必要があります。

エレメントがHealth Attention Setメッセージを受信すると、Attention Timer状態をメッセージのAttentionフィールドの値に設定し、Attentionフィールドに現在のAttentionTimer状態が設定されたHealth Attention Statusメッセージで応答します。

エレメントがHealth Attention Set Unacknowledgedメッセージを受信すると、AttentionTimer状態をメッセージのAttentionフィールドの値に設定する必要があります。

Attentionフィールドが現在のAttentionTimer状態に設定された、一方的なHealth Attention Statusメッセージはいつでも送信できます。

4.4.4 ヘルスクライアントモデル

4.4.4.1 説明

ヘルスクライアントは、ルートモデルです(つまり、他のモデルを拡張しません)。

サポートされている場合、ヘルスクライアントモデルは、プライマリエレメントによってサポートされ、任意のセカンダリエレメントによってサポートされる場合があります。 モデルのアプリケーションレイヤーセキュリティは、アプリケーションキーを使用しています。

モデルは、以下の表4.126にリストされているエレメントと手順を定義します。

エレメントSIG
モデルID
状態メッセージRxTx
Primary 0x0003 Current Fault Current Health Status   M
Registered Fault Health Fault Get   M
Health Fault Clear   M
Health Fault Clear
Unacknowledged
  M
Health Fault Status M  
Health Fault Test   M
Health Fault Test
Unacknowledged
  M
Health Period Health Period Get   M
Health Period Set   M
Health Period Set
Unacknowledged
  M
Health Period Status M  
Attention Timer Health Attention Get   M
Health Attention Set   M
Health Attention Set
Unacknowledged
  M
Health Attention Status M  
表4.126:ヘルスクライアントの手順とメッセージ
4.4.4.2 Behavior

このセクションでは、このクライアントモデルのプロシージャとメッセージの動作について説明します。

エレメントは、ヘルスクライアントメッセージをいつでも送信して、ピアエレメントの状態を照会または変更できます。

4.4.4.2.1 Current Fault procedure

Health Current Statusメッセージを受信すると、ヘルスクライアントはヘルスサーバの現在の障害状態を判別できます。

4.4.4.2.2 Registered Fault procedure

ヘルスサーバの会社IDによって識別される登録済み障害の状態を判別するために、ヘルスクライアントは、Health Fault Getメッセージを送信する必要があります。 応答は、登録済み障害状態を含むHealth Fault Statusメッセージです。

特定のエレメントのテストIDと会社IDで識別されるセルフテストを実行し、確認応答を使用してヘルスサーバの会社IDで識別される登録済み障害の状態を判別するには、ヘルスクライアントは、Health Fault Testメッセージを送信する必要があります。 応答は、会社IDで識別される登録済み障害状態を含むHealth Fault Statusメッセージです。

特定のエレメントのテストIDと会社IDで識別されるセルフテストを確認なしで実行するには、ヘルスクライアントは、Health Fault Test Unacknowledgedメッセージを送信する必要があります。

ヘルスサーバの会社IDによって識別された登録済み障害の状態を確認なしでクリアするには、ヘルスクライアントは、Health Fault Clear Unacknowledgedメッセージを送信する必要があります。

ヘルスサーバの会社IDによって識別された登録済み障害の状態を確認応答でクリアするには、ヘルスクライアントは、Health Fault Clearメッセージを送信する必要があります。 応答は、識別された登録済み障害状態を含むHealth Fault Statusメッセージです。

Health Fault Statusメッセージを受信すると、ヘルスクライアントは、ヘルスサーバの登録済み障害状態を判別できます。

4.4.4.2.3 Health Period procedure

ヘルスサーバのHealth Fast Period Divisorの状態を判別するために、ヘルスクライアントはHealth Period Getメッセージを送信する必要があります。 応答は、Health Fast Period Divisorの状態を含むHealth Period Statusメッセージです。

確認応答なしでヘルスサーバのHealth Fast Period Divisor状態を設定するには、ヘルスクライアントはHealth Period Set Unacknowledgedメッセージを送信する必要があります。

ヘルスサーバのHealth Fast Period Divisor状態を確実に設定するために、ヘルスクライアントはHealth Period Setメッセージを送信する必要があります。 応答は、Health Fast Period Divisorの状態を含むHealth Period Statusメッセージです。

ヘルスクライアントは、Health Period Statusメッセージを受信すると、ヘルスサーバのHealth Fast Period Divisorの状態を判別できます。

4.4.4.2.4 Attention Timer procedure

ヘルスサーバのアテンションタイマー状態を判別するために、ヘルスクライアントは、Health Attention Getメッセージを送信する必要があります。 応答は、アテンションタイマーの状態を含むHealth Attention Statusスメッセージです。

確認応答を使用してヘルスサーバーのアテンションタイマー状態を設定するには、ヘルスクライアントは、Health Attention Setメッセージを送信する必要があります。 応答は、アテンションタイマーの状態を含むHealth Attention Statusメッセージです。

確認応答なしでヘルスサーバのアテンションタイマー状態を設定するには、ヘルスクライアントは、Health Attention Set Unacknowledgedメッセージを送信する必要があります。

Health Attention Statusメッセージを受信すると、ヘルスクライアントは、ヘルスサーバの現在のアテンションタイマー状態を判別できます。

4.4.5 SIGモデルIDの要約

以下の表4.127は、この仕様内で定義されているSIGモデルIDの要約を示しています。 完全なリストについては、割り当てられた番号のページ[4]を参照してください。

モデル名SIGモデルID
構成サーバ0x0000
構成クライアント0x0001
ヘルスサーバ0x0002
ヘルスクライアント0x0003
表4.127:SIGモデルIDの要約
タイトルとURLをコピーしました