トラブルシューティング

サンプルアプリ

Home API の使用中に問題が発生した場合は、ログを収集してさらにデバッグできます。モバイル デバイスからログを収集するには、Xcode が必要です。Google のサポートが必要な場合は、iOS デバイスとハブの両方からログを収集し、関連する情報とログを添付して、Issue Tracker でチケットを登録します。

iOS のログを収集する

Xcode を含むすべての手順で、モバイル デバイスをローカルマシンに接続する必要があります。

アプリログと SDK ログは Xcode コンソールに直接表示され、収集できます。モバイル デバイスがローカルマシンに接続され、Xcode を介してアプリケーションを実行すると、コンソールはアプリケーション レイヤと統合された Home SDK の両方から標準出力(stdout)ログと標準エラー(stderr)ログを自動的にキャプチャしてストリーミングします。これにより、開発中やデバッグ中に、リアルタイムの初期化プロセス、API インタラクション、SDK イベントを簡単にモニタリングできます。

Xcode から拡張機能のログを収集する

Home API の使用中に問題が発生した場合は、ログを収集してさらにデバッグできます。

  1. Xcode で、上部のメニューバーの [Debug] に移動し、[Attach to Process by PID or Name] をクリックします。

    サンプルアプリのデバッグ

  2. [PID or Process Name] で [MatterExtension] を選択し、[Attach] をクリックします。

    サンプルアプリのアタッチ拡張機能

  3. 右上をクリックすると、[Waiting to attach to MatterAddDeviceExtension on iPhone] が表示されます。

    サンプルアプリの待機ステータス

  4. タブをクリックして、[MatterAddExtension] を選択します。

    Matter 拡張機能を追加するサンプルアプリ

  5. コンソールに拡張機能のログが記録されます。

Sherlog: クロススタック イベント トレース

Sherlog は、Google のインフラストラクチャとパートナーのクラウド サービス間のインタラクションをエンドツーエンドで表示するリアルタイム トレース サービスです。

前提条件: トレースには、Google が調整した共有アカウント(GReg 登録済みアカウントやデモアカウントなど)を使用する必要があります。

主な目的: 本番環境のコードを変更することなく、機能上の不具合やクラウドツークラウド(C2C)統合の問題(アカウント リンクの失敗やデバイスの状態の誤りなど)をデバッグします。

機能: SYNC、EXECUTE、QUERY、アカウント リンクのインテントに関する完全な RPC コールグラフ、リクエスト/レスポンス ペイロード、メタデータを提供します。

Fuchsia Hub デバイスログ

この方法でログを収集できる Fuchsia Hub は次のとおりです。 * Google Nest Hub(第 2 世代) * Google Nest Hub Max

ローカルログ取得用のハブを有効にするには:

  1. デバイスのシリアル番号とモデルを記載したメールを Google のテクニカル アカウント マネージャー(TAM)に送信します。デバイスの下に小さな文字で記載されています。
  2. 許可リストに登録されたら、次の手順でこの機能を有効にする必要があります。
    • ハブから:
      1. 画面を上から下にスワイプします。
      2. 設定アイコン をタップします。
      3. Fuchsia バージョンを確認する: Google Nest Hub(第 2 世代)で、[デバイス情報] > [技術情報] > [Fuchsia バージョン] に移動します。
      4. [Fuchsia バージョン] を 7 回タップします。これで開発者向けオプションが有効になります。
      5. 最上位メニューに戻る
      6. [開発者向けオプション] をタップします。
      7. [Partner Logging] をタップします。
    • この機能は 24 時間有効になります。その後、ステップ 5 以降のロギング機能を再度有効にします。
  3. ハブの IP アドレスを取得します。
    • 画面付きのハブから操作する場合:
      1. 画面を上から下にスワイプします。
      2. 設定アイコン をタップします。
      3. デバイスの IP アドレスを確認します。Google Nest Hub(第 2 世代)の場合は、[デバイス情報] > [技術情報] > [IP アドレス] に移動します。
    • スマートフォンの Google Home アプリ(GHA)から:
    • デバイスをタップして、デバイスの詳細ページを表示します。
    • 設定アイコン をタップして設定ページを表示します。
    • デバイスの IP アドレスを確認します。[デバイス情報] > [技術情報] > [IP アドレス] に移動します。
  4. ハブからログを取得するには、同じ Wi-Fi ネットワーク上のパソコンからハブに GET HTTP リクエストを送信します。
    • エンドポイントのポートとパスをメモします。
      curl -k -X GET https://ip-address:8443/setup/get_logs --output output-file
      
    • 接続を開いたままにできるのは 1 分間だけですが、バッファから取得されたデータには通常、過去 20 ~ 30 分間のイベントが含まれています。
      • 理想的には、テスト手順の完了直後にこの方法を使用してログを抽出し、バッファにテストに関連するコンテンツが含まれるようにします(Android バグレポートと同様)。

自動化

エッジ検出

Google Home エコシステムの自動化には、エッジ検出機能があります。これは、デバイスの以前の状態を繰り返すだけの状態更新ではなく、実際の状態変化があった場合にのみ開始条件が有効になることを確認するロジックです。

たとえば、ライトを点灯することが開始条件である場合、エッジ検出は、そのライトデバイスがオフからオンに切り替わった場合にのみ開始条件を有効にします。オンからオンに切り替わった場合(変化なし)は有効にしません。

自動化が期待どおりに動作しない

エッジ検出を考慮しても、自動化が想定どおりに動作しない場合は、次の手順を行います。

  1. 各デバイスが自動化とは無関係に正常に機能していることを確認します。

  2. 自動化の自動化グラフを確認し、自動化 DSL と比較して、誤った想定がないかどうかを確認します。

  3. 自動化の実行中に、Google Home アプリでデバイスの状態を確認します。

  4. 自動化で参照されているすべてのデバイスが、想定されるストラクチャに存在することを確認します。自動化が依存しているデバイスを削除すると、意図しない結果が生じる可能性があります。デバイスの削除が自動化に与える影響をご覧ください。

自動化が実行されるべきでないときに実行される

自動化が想定外のタイミングで実行される場合は、開始条件を確認します。 状態の変化が 1 回だけキャプチャされ、自動化が 1 回だけトリガーされるように、追加のロジックが必要になる場合があります。

自動化がコンパイルされない

アプリに、さまざまなノードタイプに対応する各クラスや、参照しているトレイトなど、必要なインポートがすべて含まれていることを確認します。

自動化の作成が検証に失敗する

自動化の作成が検証に合格しない場合は、問題に関する情報を示す警告メッセージまたはエラー メッセージが表示されます。詳細については、ValidationIssueType リファレンスをご覧ください。

OAuth

既存の OAuth クライアントがある場合

公開済みアプリ用に確認済みの OAuth クライアントがすでにある場合は、既存の OAuth クライアントを使用して Home API をテストできます。

Home API のテストと使用に Google Home Developer Console の登録は必要ありません。ただし、別の統合で確認済みの OAuth クライアントがある場合でも、アプリを公開するには、承認済みの Developer Console 登録が必要です。

次のことに注意してください。

  • 既存の OAuth クライアントを使用する場合、ユーザー数の上限は 100 人です。テストユーザーの追加については、OAuth クライアント ID を生成するをご覧ください。 OAuth の確認とは別に、Home API では、アプリケーションに権限を付与できるユーザー数が 100 人に制限されています。この制限は、Developer Console の登録が完了すると解除されます。

  • Developer Console 登録 は、Home API を使用してアプリを更新する準備として、OAuth を介してデバイスタイプの権限を制限する準備が整ったときに、承認のために送信する必要があります。

OAuth の確認が保留中の Google Cloud アプリの場合、確認が完了するまでユーザーは OAuth フローを完了できません。権限を付与しようとすると、次のエラーが発生します。

Access blocked: <Project Name> has not completed the Google verification process.