アンテナ テレメトリをリアルタイムに受信する
Azure Orbital Ground Station はコンタクトの間、地上局操作の分析に使用できるアンテナ テレメトリ イベントを出力します。 テレメトリ イベントを Azure Event Hubs に送信するようにコンタクト プロファイルを構成できます。
このガイドでは、以下の方法について説明します。
- Azure Orbital Ground Station 用に Azure Event Hubs を構成する
- コンタクト プロファイルでテレメトリを有効にします。
- テレメトリ データの内容を確認する
- テレメトリ ポイントについて理解する
Event Hubs を構成する
- サブスクリプションで、設定内の [リソース プロバイダー] に移動します。 Microsoft.Orbital を検索し、それをプロバイダーとして登録します。
- サブスクリプション内に Azure Event Hubs 名前空間とイベント ハブを作成します。
Note
Eventhubs への接続アクセスには、パブリック アクセスを選択します。 プライベート アクセスまたはサービス エンドポイントはサポートされていません。
- 左側のメニューで [アクセス制御 (IAM)] を選択します。 'このリソースへのアクセス権の付与' で [ロールの割り当ての追加] を選択します。
Note
Azure ロールを割り当てるには、Microsoft.Authorization/roleAssignments/write
アクセス許可 (ユーザー アクセス管理者や所有者など) を持っている必要があります
- [ロール] タブで、[Azure Event Hubs データ送信者] を検索して選択します。 次へをクリックします。
- [メンバー] タブで、ユーザー、グループ、サービス プリンシパルのいずれかにアクセスを割り当てます。
- [+ メンバーの選択] をクリックします。
- [Azure Orbital リソース プロバイダー] を検索し [選択] をクリックします。
- [確認と割り当て] をクリックします。 このアクションにより、テレメトリをイベント ハブに送信する権限を Azure Orbital Ground Station に付与します。
- 新しく追加されたロールの割り当てを確認するには、[アクセスの制御 (IAM)] ページに戻り、[このリソースへのアクセス権を表示します] を選択します。 Azure Orbital リソース プロバイダーが、[Azure Event Hubs データ送信者] の下にあるはずです。
コンタクト プロファイルの Event Hubs テレメトリを有効にする
コンタクト プロファイルを以下のように構成します。
- [Event Hubs 名前空間] ドロップダウンで名前空間を選択します。
- 名前空間の選択後に表示される Event Hubs のインスタンス ドロップダウンでインスタンスを選択します。
既存のコンタクト プロファイルの設定を更新できます
コンタクトからのアンテナ テレメトリ データを確認する
既に Event Hubs テレメトリ用に構成したコンタクト プロファイルを使用してコンタクトをスケジュールします。 コンタクトが開始すると、すぐに Event Hubs にデータが表示されるようになるはずです。
複数の方法で、受信テレメトリ データの存在と内容の両方を確認できます。
Event Hubs 名前空間ダッシュボード
イベントが Event Hubs で受信されていることを確認するには、リソース グループ内の Event Hubs 名前空間の概要ページに表示されるグラフを確認します。 このビューには、名前空間内のすべての Event Hubs インスタンスのデータが表示されます。 リソース グループ内の特定の Event Hub インスタンスの概要ページに移動して、そのインスタンスのグラフを確認できます。
アンテナ テレメトリ データをストレージ アカウントに配信する
Event Hubs Capture 機能を有効にして、テレメトリ データを選択した Azure BLOB ストレージ アカウントに自動的に配信できます。 Capture を有効にするための手順に従って、Azure ストレージへデータをキャプチャします。 有効にすると、コンテナーを確認し、データを表示またはダウンロードできます。
テレメトリ ポイントについて理解する
現在のテレメトリ スキーマ バージョン: 4.1
地上局は、Avro をスキーマとして使用するテレメトリを提供します。 スキーマは次のとおりです。 Microsoft アンテナは、最初のデータ ポイントを受信するとテレメトリを出力します。 テレメトリは "最後の既知の値" アプローチを使用して報告されます。つまり、メトリックに対して常に最新の値を送信します。 この動作により、そのメトリックが最初に生成されるまで、連絡先の最初の 2 番目に NULL
値が表示されることがあります。
{
"namespace": "EventSchema",
"name": "TelemetryEventSchema",
"type": "record",
"fields": [
{
"name": "version",
"type": [ "null", "string" ]
},
{
"name": "contactId",
"type": [ "null", "string" ]
},
{
"name": "contactPlatformIdentifier",
"type": [ "null", "string" ]
},
{
"name": "groundStationName",
"type": [ "null", "string" ]
},
{
"name": "antennaType",
"type": {
"name": "antennaTypeEnum",
"type": "enum",
"symbols": [
"Microsoft",
"KSAT"
]
}
},
{
"name": "antennaId",
"type": [ "null", "string" ]
},
{
"name": "spacecraftName",
"type": [ "null", "string" ]
},
{
"name": "gpsTime",
"type": [ "null", "double" ]
},
{
"name": "utcTime",
"type": "string"
},
{
"name": "azimuthDecimalDegrees",
"type": [ "null", "double" ]
},
{
"name": "elevationDecimalDegrees",
"type": [ "null", "double" ]
},
{
"name": "contactTleLine1",
"type": [ "null", "string" ]
},
{
"name": "contactTleLine2",
"type": [ "null", "string" ]
},
{
"name": "links",
"type": [
"null",
{
"type": "array",
"items": {
"name": "antennaLink",
"type": "record",
"fields": [
{
"name": "name",
"type": [ "null", "string" ]
},
{
"name": "direction",
"type": {
"name": "directionEnum",
"type": "enum",
"symbols": [
"Uplink",
"Downlink"
]
}
},
{
"name": "polarization",
"type": {
"name": "polarizationEnum",
"type": "enum",
"symbols": [
"RHCP",
"LHCP",
"linearVertical",
"linearHorizontal"
]
}
},
{
"name": "uplinkEnabled",
"type": [ "null", "boolean" ]
},
{
"name": "channels",
"type": [
"null",
{
"type": "array",
"items": {
"name": "antennaLinkChannel",
"type": "record",
"fields": [
{
"name": "name",
"type": [ "null", "string" ]
},
{
"name": "modemName",
"type": [ "null", "string" ]
},
{
"name": "digitizerName",
"type": [ "null", "string" ]
},
{
"name": "endpointName",
"type": "string"
},
{
"name": "inputEbN0InDb",
"type": [ "null", "double" ]
},
{
"name": "inputEsN0InDb",
"type": [ "null", "double" ]
},
{
"name": "inputRfPowerDbm",
"type": [ "null", "double" ]
},
{
"name": "outputRfPowerDbm",
"type": [ "null", "double" ]
},
{
"name": "packetRate",
"type": [ "null", "double" ]
},
{
"name": "gapCount",
"type": [ "null", "double" ]
},
{
"name": "modemLockStatus",
"type": [
"null",
{
"name": "modemLockStatusEnum",
"type": "enum",
"symbols": [
"Unlocked",
"Locked"
]
}
]
},
{
"name": "commandsSent",
"type": [ "null", "double" ]
}
]
}
}
]
}
]
}
}
]
}
]
}
次の表は、ソース デバイス/ポイント、取り得る値、各テレメトリ ポイントの定義を示しています。
テレメトリ ポイント | ソース デバイス/ポイント | 指定可能な値 | 定義 |
---|---|---|---|
version | 内部的に手動で設定します | テレメトリのリリース バージョン | |
contactID | コンタクト リソース | コンタクトの識別番号 | |
contactPlatformIdentifier | コンタクト リソース | ||
groundStationName | コンタクト リソース | 地上局の名前 | |
antennaType | それぞれの Microsoft/パートナー テレメトリ ビルダーがこの値を設定します | MICROSOFT、KSAT、VIASAT | コンタクトに使用されるアンテナ ネットワーク。 |
antennaId | コンタクト リソース | 人間が判読できるアンテナ ID の名前 | |
spacecraftName | コンタクト プラットフォーム識別子から解析されます | 宇宙船の名前 | |
gpsTime | utcTime の変換結果 | 顧客テレメトリ メッセージが生成された時刻 (GPS 時刻)。 | |
utcTime | 現在時刻 | 顧客テレメトリ メッセージが生成された時刻 (UTC 時刻)。 | |
azimuthDecimalDegrees | ACU: AntennaAzimuth | アンテナの方位角 (十進角)。 | |
elevationDecimalDegrees | ACU: AntennaElevation | アンテナの仰角 (十進角)。 | |
contactTleLine1 | ACU: Satellite[0].Model.Value | TLE の 1 行目の文字列 | コンタクトに使用される TLE の最初の行。 |
contactTLeLine2 | ACU: Satellite[0].Model.Value | TLE の 2 行目の文字列 | コンタクトに使用される TLE の 2 番目の行。 |
name [Link-level] | コンタクト プロファイルのリンク | リンクの名前 | |
direction | コンタクト プロファイルのリンク | アップリンク、ダウンリンク | コンタクトに使用されるリンクの方向。 |
polarization | コンタクト プロファイルのリンク | RHCP、LHCP、DualRhcpLhcp、LinearVertical、LinearHorizontal | コンタクトに使用されるリンクの偏波。 |
uplinkEnabled | ACU: SBandCurrent または UHFTotalCurrent | • NULL (無効な CenterFrequencyMhz またはダウンリンク方向) • False (S と UHF 以外のバンドまたはアンプ電流 < しきい値) • True (S/UHF バンド、アップリンク、アンプ電流 > しきい値) |
アップリンクがコンタクトに対して有効にされたかどうかを示します。 |
name [Channel-level] | コンタクト プロファイル リンク チャンネル | チャンネルの名前 | |
modemName | Modem | モデム デバイスの名前 | |
digitizerName | デジタイザー | デジタイザー デバイスの名前 | |
endpointName | コンタクト プロファイル リンク チャンネル | コンタクトに使用されるエンドポイントの名前。 | |
inputEbN0InDb | モデム: measuredEbN0 | • NULL (QRadio または QRx 以外のモデム モデル) • Double: 入力 EbN0 |
ノイズ パワー スペクトル密度に対するビットあたりの入力エネルギー (dB 単位)。 |
inputEsN0InDb | モデム: measuredEsN0 | • NULL (QRx 以外のモデム モデル) • Double: 入力 EsN0 |
ノイズ パワー スペクトル密度に対するシンボルあたりの入力エネルギー (dB 単位)。 |
inputRfPowerDbm | デジタイザー: inputRfPower | • NULL (SNNB または SNWB 以外のアップリンクまたはデジタイザー ドライバー) • Double: 入力 Rf パワー |
入力 RF パワー (dBm 単位)。 |
outputRfPowerDbm | デジタイザー: outputRfPower | • NULL (SNNB と SNWB 以外のダウンリンクまたはデジタイザー ドライバー) • Double: 出力 Rf パワー |
出力 RF パワー (dBm 単位)。 |
outputPacketRate | デジタイザー: rfOutputStream[0].measuredPacketRate | • NULL (SNNB と SNWB 以外のダウンリンクまたはデジタイザー ドライバー) • Double: 出力パケット レート |
アップリンクの測定パケット レート |
gapCount | デジタイザー: rfOutputStream[0].gapCount | • NULL (SNNB と SNWB 以外のダウンリンクまたはデジタイザー ドライバー) • Double: ギャップ数 |
アップリンクのパケット ギャップ数 |
modemLockStatus | モデム: carrierLockState | • NULL (QRadio または QRx 以外のモデム モデル。ロック状態 Enum を解析できませんでした) • 空の文字列 (メトリックの読み取りが null だった場合) • 文字列: Lock 状態 |
モデムがロックされたという確認。 |
commandsSent | モデム: commandsSent | • NULL (アップリンクと QRadio ではない場合) • Double: 送信されたコマンドの数 |
コンタクトの間にコマンドが送信されたという確認。 |
イベント コンシューマー
イベント コンシューマーを使用して Event Hubs からイベントを受信する単純なコンシューマー アプリを作成できます。 さまざまな言語で Event Hubs のイベントを送受信する方法を確認するには、以下のドキュメントを参照してください。
変更ログ
2024-04-17 - TLEs の可能性がある NULL を含むようにスキーマを更新し、QRX に EsN0 を追加し、連絡先の最初の 1 秒間に Microsoft アンテナがフィールドに NULL を持つ方法に関するぼかしを追加しました。
2023-10-03 - バージョン 4.0 の導入。 アップリンク パケット メトリックと使用中のインフラストラクチャの名前 (地上局、アンテナ、宇宙船、モデム、デジタイザー、リンク、チャンネル) を含むようにスキーマを更新しました
2023-06-05 - リンクではなくチャネルの下にメトリックを表示するようにスキーマを更新しました。