メインコンテンツへスキップ
Ionworks Studio では、測定データの取得元となった物理的なラボ装置 — サイト、サイクラー、チャンネル — を追跡できます。これにより、セル測定を実行したチャンネルに直接リンクでき、データポイントからそれを生成した物理ハードウェアまでのエンドツーエンドのリンクが得られます。この装置モデルの上に ラボビュー が構築されています — テスト装置内のすべてのチャンネルと、それが現在使用中かどうかを表示するプロジェクトスコープのダッシュボードです。

使い分け

装置の記録は任意です — channel_id を設定しなくても測定は問題なく動作します。次のような場合にサイト、サイクラー、チャンネルをセットアップします:
  • サイクラーやラボをまたいで収集したデータを比較したい。
  • 測定の一部が異常に見えたときに、疑わしいチャンネルを特定したい。
  • 規制対象のデータや公開データについて、長期的なプロベナンスを維持したい。
  • どのチャンネルが空いている・使用中・サービス外かを一目で把握したい。
サイクラーが 1 台のみで、ここまでの詳細が不要であれば、各測定のtest_setupフィールドをそのまま使ってください。

装置階層

試験装置はセルデータ階層と同じ構造です:
チャンネルと同じプロジェクトのセル測定のみをリンクできます。サイトを削除するとそのサイクラーもカスケード削除され、サイクラーを削除するとそのチャンネルもカスケード削除されます。

サイト

サイトはサイクラーを保有するラボまたは施設です。サイトは組織スコープです。

サイクラー

サイクラーは、ちょうど 1 つのサイトに設置されたサイクリング装置です。サイクラーはプロジェクトスコープで、各サイクラーは作成時に指定した 1 つのプロジェクトによって所有されます。サイクラー名はプロジェクト内で一意(大文字小文字を区別しない)なので、異なる 2 つのプロジェクトがそれぞれ "Maccor-1" という名前のサイクラーを持つことができます。 所有プロジェクトは作成時に固定されます。同じ物理的な装置を 2 つのプロジェクトで使用する場合は、プロジェクトごとに 1 つのサイクラー行を作成してください。

チャンネル

チャンネルはサイクラー上の物理チャンネルです。チャンネルはちょうど 1 つのサイクラーに属し、そのサイクラーのプロジェクトを継承します。チャンネル名はサイクラー内で一意(大文字小文字を区別しない)なので、異なる 2 つのサイクラーがそれぞれ "CH1" という名前のチャンネルを持つことができます。 チャンネルには任意の電気的定格と out_of_commission フラグもあります — 下記のチャンネル定格を参照してください。

装置ツリーの構築

サイト・サイクラー・チャンネルはラボごとに一度作成します。定常運用ではチャンネルのみを操作します — out_of_commission の切り替え、定格の調整、測定のリンクなどです。
名前はサイトなら組織内、サイクラーならプロジェクト内、チャンネルならサイクラー内で、それぞれ大文字小文字を区別せず一意ですが、create_or_get は名前が完全に一致する場合にのみ既存レコードへの競合解決を行います。既に存在する名前と大文字小文字が異なる名前(例: "Boston Lab" が存在するときに "boston lab")で呼び出すと、既存のレコードを返す代わりに ValueError が発生します。作成時と同じ完全な名前を再利用してください。
更新と削除はいずれも同じ方法です:

測定をチャンネルに紐付ける

すべてのセル測定には、試験を実行した物理チャンネルを記録する null 許容の channel_id があります。測定を作成するときに設定するか、後から更新で付け替えられます。 チャンネルは測定と同じプロジェクトに属している必要があります(測定はそのセルインスタンスからプロジェクトを継承します)。別のプロジェクトのチャンネルを指定するとエラー(HTTP 400)になります。 このリンクは意図的にゆるく作られています: 後からチャンネルを削除すると channel_idNULL に戻り、測定はそのまま残ります。
テスト実行中は測定の end_time を未設定のままにし、鮮度の高いデータをアップロードし続けます — チャンネルは occupied として表示されます。テストが完了したら、測定を end_time でパッチすると、チャンネルは free に戻ります。

チャンネル占有状況

ラボビューは、各チャンネルの状態をリンクされた測定から導出します — ライブテレメトリはありません。チャンネルは次の 4 つの状態のいずれかを取ります: 鮮度ウィンドウは 48 時間に固定されています。これは典型的なサイクラーの日次アップロード頻度より十分に大きく、およそ 2 回分の想定更新をスキップしたときにのみチャンネルが stale に切り替わります — 短時間の遅延ではなく、真の「停止・忘却」シグナルです。 stale チャンネルを解放するには、リンクされた測定に end_time を設定する(テストを完了としてマークする)か、その測定を削除してください。

チャンネル定格

チャンネルには、ハードウェアの能力を記述する任意の電気的定格があります。ラボ UI は新規テスト用のチャンネルを選ぶ際にこれらでフィルタリングします。 定格は UI ではなく API または SDK 経由で設定します。

チャンネルをサービス外にする

out_of_commission を切り替えると、チャンネルを削除せず、参照している過去の測定を壊さずに、プールから除外できます。
進行中の測定があるかどうかに関係なく、ラボビューはチャンネルを out_of_commission として表示します。

フィルタリング、ページング、名前による解決

サイト・サイクラー・チャンネルのリストエンドポイントは、API 全体で共通のフィルタ形式に従います — name に対する大文字小文字を区別しない部分一致、name_exact による完全一致、ISO 日時レンジフィルタ(created_after / updated_before / …)、および order_by / order によるソートです。
サイトとサイクラーについては、client.site.detail(site_id) および client.cycler.detail(cycler_id) がリソースとその子要素すべてを 1 レスポンスで返し、ページングも自動処理します。 name_exact は大文字小文字を区別するサーバー側の完全一致です — 人間が読めるサイト名からチャンネル ID までたどる最も簡単な方法です:
name_exact を使った場合でも各 list()PaginatedList を返すため、名前が存在しない可能性がある場合は空のケースを扱ってください。

次のステップ

測定

測定を作成し、channel_id でチャンネルにリンクします。

Python API クライアント

client.siteclient.cyclerclient.channel を設定します。